用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, csv
def 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 = arg
outputfile = arg+'.xdc'
with open(inputfile,'rt') as f:
cr = csv.reader(f)
fo = open(outputfile,'w+')
i = 0
for 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转换表格也在其中,仅供参考。