FPGA开发技能(9)快速生成约束XDC文件

文章目录

前言: 作为一名FPGA工程师,通常公司会对该岗位的人有一定的硬件能力的要求,最基础的就是需要依据原理图的设计进行FPGA工程内的XDC约束添加。人工的看图写约束容易出错,写一个python程序,并由此生成一个可执行程序,双击该程序选择一个由cadence导出的csv文件,即可将csv文件转成xdc文件。不同设计软件导出文件的类型和格式不同,这里仅支持由cadence导出的csv文件。以下是具体的操作步骤。

1.从Cadence导出csv约束文件

选择导出出现如图所示设置框。FPGA Component用于选择所有导出的部分,通常只需导出FPGA各个bank的连接情况即可。Generate Wrapper File勾选会生成一个.v文件,这个.v包含各个引脚的名称,是与csv文件中的名字对应的,但是由于尖括号等格式问题,还是略有不同,所以最好还是在生成的xdc文件上对应vivado工程的top层使用vs code批量修改即可。Exclude Power pins选项勾选会将电源、地等管脚不导出,但是需要在原理图库设计的时候分门别类的设置好,否则cadence软件不能识别这里的设置。语言就勾选与自己对应的即可。File Format中的pin name指的是FPGA Bank上的定义,因此要选择Net Name才是管脚的名字。File Type选择csv格式,cadence无法导出vivado可以直接使用的xdc文件。最后在选择一个导出路径即可。

2.python程序将csv导出为xdc文件。

Vivado工程需要引脚之间的连接才能生成bit流。使用cadence软件设计的原理图可以导出csv文件或者ucf文件,而使用vivado使用以xdc为后缀的文件。使用python读入csv文件,按照一定的格式转换成xdc文件保存,省去了手动添加的步骤。下图是导出csv文件的部分截图,python代码主要执行以下操作:

导出后缀为xdc,前缀与csv文件名一致的文件;

将图中的尖括号替换成中括号;

遍历所有的引脚,将一列当作引脚,将第二列当作引脚名称,结合set_property PACKAGE_PIN形成管脚约束;根据第四列的电压标准生成接口电平约束。

为python代码写一个弹出文件资源管理器选择csv文件的筛选器即可。

源码如下:

python 复制代码
import sys
import csv
import tkinter as tk
from tkinter import filedialog

def convert_csv_to_xdc(inputfile):
    outputfile = inputfile.replace(".csv", "") + '.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)
        fo.close()
        f.close()
def select_file():
    root = tk.Tk()
    root.withdraw()
    file_path = filedialog.askopenfilename(filetypes=[('CSV Files', '*.csv')])
    if file_path:
        convert_csv_to_xdc(file_path)

if __name__ == "__main__":
    select_file()

3.python生成exe

请先使用pip命令安装pyinstaller工具,可以在命令行中使用pyinstaller -v命令查看是否已安装。使用前两条命令切换至工作目录,使用第三条命令在生成目录中的dist文件夹中找到exe文件即可单独使用。

4.exe使用注意事项

点击exe文件,在弹出的对话框中选择csv文件即可生成对应的xdc文件,其中有一些注意事项如下:

①在单击exe之前,将从cadence提取的csv文件要先把表头信息全部去掉包括pin number这一行表头。

②原理图中一个位宽是32的变量会有32个不同的名字,但在verilog中通常用a[0],a[1]...表示。因此需要手动修改与vivado top文件匹配。

③如果cadence导出电压的一些管脚,删除即可。

5.传送门

|-----|
| END |


💎文章原创,首发于CSDN论坛。

💎欢迎点赞💖收藏✨打赏💷!

💎欢迎评论区🎤或私信指出错误🎤,🗣️提出宝贵意见或疑问。


相关推荐
程序员拂雨11 分钟前
Python知识框架
开发语言·python
灏瀚星空15 分钟前
地磁-惯性-视觉融合制导系统设计:现代空战导航的抗干扰解决方案
图像处理·人工智能·python·深度学习·算法·机器学习·信息与通信
Code_流苏20 分钟前
《Python星球日记》 第72天:问答系统与信息检索
python·微调·问答系统·bert·应用场景·基于检索·基于生成
敲键盘的小夜猫24 分钟前
深入理解Python逻辑判断、循环与推导式(附实战案例)
开发语言·python
Looooking44 分钟前
Python 之 selenium 打开浏览器指定端口进行接续操作
python·selenium
Dreams°1231 小时前
【Python爬虫 !!!!!!政府招投标数据爬虫项目--医疗实例项目文档(提供源码!!!)!!!学会Python爬虫轻松赚外快】
分布式·爬虫·python·mysql·scikit-learn
郜太素1 小时前
PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结
人工智能·pytorch·python·深度学习·神经网络·学习
L_cl1 小时前
【Python 算法零基础 2.模拟 ④ 基于矩阵】
python·算法·矩阵
玉笥寻珍1 小时前
web安全渗透测试基础知识之登录绕过篇
python·安全·web安全·网络安全·威胁分析
Eric.Lee20211 小时前
conda 输出指定python环境的库 输出为 yaml文件
linux·python·conda