用python脚本从Cadence导出xdc约束文件
用python脚本从Cadence导出xdc约束文件
- 概述
- 转换方法
-
- 先导出csv文件
- 修改CSV文件
- CSV转XDC
- 检查输出XDC文件
- csv2xdc源代码
- 下载
概述
在Cadence设计完成带有FPGA芯片的原理图的时候,往往需要将FPGA管脚和网络对应关系导入vivado设计软件中,对于大规模FPGA管脚较多,一一对照查找难免出错,Cadence软件自带导出工具可支持UCF和CSV两种格式。本文利用Cadence导出的CSV文件,编写转换脚本进行转换。
转换方法
先导出csv文件
测试原理图如下:
在fpga器件上点右键,选择 Export FPGA :
修改CSV文件
修改的CSV文件只包含3列,依次为: Pin Number 、网络名、电平标准(电平标准根据实际bank电压输入,如:LVCMOS18、LVCOMS33),示例如下:
该示例包含了总线网络和普通信号线。
CSV转XDC
复制修改后的csv文件到 csv2xdc.exe 工具所在目录,在该目录打开命令行终端,输入转换指令:
.\\csv2xdc.exe -i .\\s1_xc7z010clg225.csv
命令帮助:
参数格式:.\\csv2xdc -i <inputfile.csv>功能说明:csv2xdc用于将orcad导出的csv网络映射文件转换为vivado的xdc管脚约束文件inputfile.csv格式要求:csv要求三列顺序为:<管脚号><网络名><电平标准>三列必须全部填写,缺一不可。
检查输出XDC文件
csv2xdc源代码
Python 3.7.9 测试:
# -*- coding: UTF-8 -*-import sys, getopt, csvdef mhelp():print ("\\
参数格式:\\n\\n\\
\\t .\\csv2xdc -i <inputfile.csv> \\n\\n\\n\\
功能说明:\\n\\n\\
\\t csv2xdc用于将orcad导出的csv网络映射文件转换为vivado的xdc管脚约束文件 \\n\\n\\n\\
inputfile.csv格式要求:\\n\\n\\
\\t csv要求三列顺序为:<管脚号><网络名><电平标准> \\n\\
\\t 三列必须全部填写,缺一不可。\\n\\n")def main(argv):inputfile = ''outputfile = ''try:opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])except getopt.GetoptError:mhelp()sys.exit(2)for opt, arg in opts:if opt == '-h':mhelp()sys.exit()elif opt in ("-i", "--ifile"):inputfile = argoutputfile = arg+'.xdc'with open(inputfile,'rt') as f: cr = csv.reader(f)fo = open(outputfile,'w+')i = 0for row in cr:# 替换总线为方括号row[1] = row[1].replace("<","[")row[1] = row[1].replace(">","]")# 生成约束constraint_pinNumber = "set_property PACKAGE_PIN "+row[0]+" [get_ports {"+row[1]+"}]\\n"level_standard = "set_property IOSTANDARD "+row[2]+" [get_ports {"+row[1]+"}]\\n"# 写约束文件fo.write(constraint_pinNumber+level_standard)print(row)fo.close()f.close()print ('输入的文件为:', inputfile)print ('输出的文件为:', outputfile)if __name__ == "__main__":if(len(sys.argv)>1):main(sys.argv[1:])else :mhelp()
用 cx_Freeze 生成exe可执行文件:
setup.py 配置如下:
from cx_Freeze import setup, Executable
import sys#base = 'WIN32GUI' if sys.platform == "win32" else None # 带界面程序
base = 'console' if sys.platform == "win32" else None # 控制台程序executables = [Executable("csv2xdc.py", base=base, icon="")]
packages = []
include_files=[]options = {'build_exe': {'packages':packages,'include_files': include_files},
}
setup(name = "csv2xdc",options = options,version = "1.0",description = 'desc of program',executables = executables
)
主要注意,生成控制台程序,配置: base = ‘console’
下载
源码、可执行程序及测试Demo下载
该资源主要包括:csv2xdc源代码、可执行程序、示例程序、以及cx_Freeze配置文件脚本等全部文件,之前用的excel转换表格也在其中,仅供参考。