xilinx FPGA 开发软件vivado中的时序约束文件的管理

无论是GUI方式输入约束还是手动脚本方式输入约束,最终都会生成约束脚本并且存放在后缀为.xdc(Xilinx Design Constraints)的文件中。如图1所示,设计者自定义的.xdc约束文件通常在Vivado的Sources à Constraints文件夹下被创建或管理。

1.jpg

图1 XDC文件管理窗口

如图2所示,选中Sources下的Constraints文件夹,右键单击,选中AddSources…。

2.jpg

图2 新建xdc文件菜单

如图3所示,弹出的AddSources页面中,先确认勾选了Add or create constraints,再点击Next。

3.jpg

图3 AddSources页面

接着如图4所示,弹出Add orCreate Constraints页面,配置完成后点击Finish。

在Specifyconstraint set后点击下拉框可以创建新的约束文件夹。

点击Add Files可以添加已有的xdc文件。

点击Create File可以创建新的约束文件。

4.jpg

图4 Add orCreate Constraints页面

一个工程中可以只包含一个或者多个.xdc约束文件。通常比较推荐的做法是,使用两个不同的.xdc文件分别用于存储物理约束脚本(如at7_pins.xdc)和时序约束脚本(如at7_timing.xdc),如图5所示。当然了,如果设计者把物理约束脚本和时序约束脚本都写到一个.xdc文件(如at7.xdc)中,本身也是没有问题的。

5.jpg

图5 创建多个约束脚本文件

至于Constraints下的不同文件夹(如constrs_1和constrs_2),方便我们对一个工程采取多种约束策略。如当前constrs_1文件是高亮粗体显示,并且有“(active)”的标示,表示这个文件夹包含了当前工程所使用的有效约束文件。若我们希望启用constrs_2文件夹下的约束文件,则如图6所示,选中constrs_2文件夹名,单击右键,弹出菜单中选择Make Active选项即可。

6.jpg

图6 启用constrs_2文件夹

此时,如图7所示,可以看到constrs_2文件夹及其下的2个.xdc文件已经被高亮加粗了,表示它们是当前工程所指定的可用约束文件。
7.jpg

图7 当前可用的constrs_2文件夹

至于“(active)”的标示,如图8所示,在使用新设定的constrs_2文件夹进行编译后才会显示出来。

8.jpg

图8 带有active图标的constrs_2文件夹

如图9所示,每个.xdc的文件属性(SourceFile Properties)中,可以设定其约束脚本的适用范围(Used In)。通常情况下,如果没有特殊要求,会使用默认的设置,即综合(Synthesis)与实现(Implementation)都勾选上。

9.jpg

图9 XDC文件的属性

若后续在GUI中编辑添加一些新的约束脚本,对于文件夹constrs_2这样包含了多个xdc文件的情况,则需要事先指定新的约束命令所保存的目标文件。如图10所示,在希望用于保存GUI中新添加约束命令的xdc文件上右键单击,选择弹出菜单中的Set as Target Constraint File。

10.jpg

图10 设置目标约束文件菜单

此时,如图11所示,at7_timing.xdc文件被标识为target了。

11.jpg

图11 标示target的约束文件

在Vivado中创建并指定了可用的xdc约束文件后,可以直接编写符合XDC文件语法要求的设计约束脚本到xdc文件中;也可以在Vivado的物理约束或时序约束可视化编辑界面中添加相关的约束命令,在保存这些设计约束时,Vivado会自动生成约束脚本写入到可用的xdc文件中。

设计约束通常根据约束分类或模块划分存储在一个或多个文件中。不论如何对设计约束进行管理,设计者都必须清楚设计约束的具体对象以及它们最终的加载顺序。例如,时钟的时序约束必须在其它约束之前完成,所以设计者必须确保时钟约束在其它约束之前最先被加载。

设计中添加的一些IP模块,通常也会包含一些.xdc约束文件,这些文件在创建IP时会自动添加到设计中,并且在设计编译过程中被使用,但通常不会出现在Sources à Constraints文件夹下。例如这里的一个Clocking IP,如图12所示,在配置好并添加到设计中后,Sources à IP Sources面板的IP文件夹展开后,可以看到clk_wiz_0 à Synthesis文件夹下的多个.xdc文件就是该IP的约束文件。

12.jpg

图12 IP的约束文件

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2021-08-06 19:26:57 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它