Vivado开发工具熟悉之XDC约束文件

本文总结了Vivado开发工具中约束文件的使用,特别是与ISE的不同之处。Vivado采用xdc文件进行约束,其语法与TCL相同。约束主要分为get_pins、get_cells、get_ports和get_clocks。时序约束是Vivado的一大变化,所有路径都会进行分析,包括异步时钟路径。Vivado提供了edit timing constraints图形界面来添加约束,并通过report timing constraints和report clock interaction工具进行时序分析和跨时钟域路径检查。文章还提及了如何处理未约束的跨时钟路径和参考文献。

Vivado开发工具的使用之前已经有了比较多的了解,在建立工程图形化界面操作这里已经不存在什么问题,不论是IP核,embedded system(block design),还是添加约束,编译流程,流程已经打通了。

但是在实际工程移植过程中,发现Vivado开发中最不一样的地方还是约束这里,这里把约束相关的一些与ISE不同的地方,和Vivado新增加的关于约束的工具总结一下。

1,vivado约束文件参考ug903-vivado-using-constraints,这里有详细关于约束规则,原理,语法的介绍;

2,vivado约束采用xdc约束文件,这里的语法其实是和TCL语法一致,这个语法详见UG903手册;

3,vivado约束和ISE不同,ISE主要是针对net和inst进行约束,而xdc中,分成get_pins,get_cells,get_ports,get_clocks,这里get_cells和ISE里面的inst类似,而在进行时序例外约束的时候多用的是get_pins(其实就是一个实例中的管脚定义,也包括底层原件的管脚,比如寄存器)。在使用通配符匹配路径的时候,最好使用edit timing constraints图形界面配合。

4,vivado时序约束是最有变化的,和ISE最大不同的是ISE中对于跨时钟路径都是默认不分析的,但是对于vivado,所有的路径其实都是进行分析的,同步时钟会进行分析(比如PLL或者MMCM输出时钟,相位关系确定),而且异步时钟如果不加异步时钟约束也会按照同步时钟那样进行时序分析,在时序报告中other path groups里面的async_default中就都是异步时钟跨时钟路径。这时候就需要很全面的对时钟域有很全面很清楚的认识,这个vivado有可以利用的工具,后面会介绍;

5,vivado关于时序约束的工具介绍:

1)edit timing constraints,这个就跟ISE中的一致,其实就是一个图形化添加约束的接口,可以用图形界面将约束的tcl命令转化出来,主要作用是在用通配符匹配路径的时候可以配合使用;

2)report timing constraints,这个就是最后时序分析的报告,这里面主要由三项,首先intra-clock paths是单时钟约束,其次inter-clock paths,这个是同步时钟的跨时钟路径,最后就是other path group,这里面的async_default就是异步时钟的跨时钟路径。

这里点击时序不达标的路径,然后右键可以直接添加约束,set_false_path,set_max_delay等,这时候约束会加到edit timing constraints里面,然后添加到xdc约束文件中,这个对应的约束文件就是constraints里面标注target的文件(可修改target)。

此外,在report timing constraints里面的路径双击可以在device页面看到类似plan ahead里面的实际在芯片中的路径,此外还有Path xxx - timing_1页面会列出详细的souce clock data path destination clock,以及对应的延时。

3)report clock interaction,这个工具就是解决前面说的vivado分析跨时钟域路径的问题,这个工具会以一个表格的形式列出所有时钟域对应关系以及是否有约束,如下图,方便对所有时钟域有一个完整的认识,而且可以看到那个跨时钟路径没有被约束可能存在问题。


这里对于vivado约束方面关于跨时钟(CDC)约束的技巧,看到一篇比较好的文章【Vivado使用误区与进阶】XDC约束技巧——CDC篇 ,可供参考。

Vivado中生成XDC约束文件是FPGA开发中的一个重要步骤,XDC文件用于定义时序约束和物理约束,以指导综合与布局布线工具进行优化[^2]。以下是生成XDC约束文件的几种常见方法: ### 1. 在创建项目时自动生成 在创建Vivado项目的过程中,可以指定约束文件的类型和名称。在“创建项目”向导中,进入“定义项目细节”页面时,可以选择“创建约束文件”选项,并指定约束集名称,例如`lab1`,系统将自动生成一个空的XDC文件供后续编辑[^2]。 ### 2. 通过约束集手动添加 如果项目已经创建但尚未添加XDC文件,可以通过以下步骤手动添加: - 在Vivado界面中,进入“约束”选项卡; - 单击“添加约束文件”按钮; - 在弹出的“创建约束文件”对话框中,输入文件名称并选择文件类型为`.xdc`; - 完成设置后,系统会将新创建的XDC文件添加到项目中,并将其与当前约束集关联[^2]。 ### 3. 使用Tcl命令创建 Vivado支持使用Tcl脚本语言来创建和管理XDC文件。可以在Tcl控制台中执行以下命令来创建XDC文件: ```tcl create_fileset -constrset constraints_1 add_files -fileset constraints_1 -norecurse my_constraints.xdc set_property -name {file_type} -value {XDC} -objects [get_files my_constraints.xdc] ``` 此方法适合熟悉Tcl脚本的用户,便于自动化流程管理[^2]。 ### 4. 编写XDC文件内容 XDC文件本质上是一个基于TCL的文本文件,用户可以使用任何文本编辑器编写约束内容。例如,定义一个周期为10ns、占空比为50%的时钟约束可以写成: ```tcl create_clock -name clk0 -period 10 -waveform {0 5} [get_ports clk] ``` 此外,对于通过Clocking Wizard IP生成的时钟(如MMCM或PLL),Vivado会自动生成相应的约束,也可以根据需要手动修改,例如: ```tcl create_generated_clock -name clk_low_freq -source [get_pins Classifier_hw_i/clk_wiz_1/clk_in1] -multiply_by 3 -divide_by 4 [get_pins Classifier_hw_i/clk_wiz_1/clk_out1] ``` 上述命令定义了一个由MMCM生成的时钟,其频率是原始输入时钟的3/4倍[^4]。 ### 5. 导出约束文件 在完成约束设置后,可以通过Vivado的“导出约束”功能将当前的约束设置导出为XDC文件。该功能可以在“约束”菜单中到,适用于将现有设计中的约束保存为可重用的XDC脚本。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值