排序约束条件
因为XDC约束是按顺序应用的,并且是基于明确的优先级排列的规则,您必须仔细检查约束的顺序。
Vivado IDE为您的设计提供了全面的可视性。要逐步验证约束,请执行以下操作:
1.运行相应的报告命令。
2.查看Tcl控制台或消息窗口中的消息
推荐的约束序列
无论您在设计中使用一个或多个XDC文件,都可以在中组织约束以下顺序。
从时钟定义开始。任何人都必须先创建时钟,然后才能使用它们随后的约束。在声明时钟之前对时钟的任何引用都会导致错误并且忽略相应的约束。在单个约束文件中也是如此,因为以及设计中的所有XDC文件(或Tcl脚本)。约束文件的顺序很重要。您必须确保每个文件中的约束不会依赖于另一个文件的约束。如果是这种情况,则必须读取包含约束依赖关系最后。如果两个约束文件具有相互依存关系,则必须手动将它们合并到一个包含正确序列的文件中,或者将文件划分为几个单独的文件并正确排序。
约束序列编辑
Vivado IDE约束管理器将任何编辑后的约束保存回中的原始位置XDC文件,但不在Tcl脚本中。任何新的约束都保存在XDC文件的末尾标记为目标。在许多情况下,当约束集包含多个XDC文件时,目标约束文件不是列表中的最后一个文件,并且在打开或重新加载时不会最后加载您的设计。因此,保存到约束源文件的约束序列可以与你之前记忆中的不同。
约束文件顺序
在没有任何IP的项目流中,所有约束都位于约束集中。默认情况下Vivado IDE中显示的XDC文件(或Tcl脚本)的顺序定义了所使用的读取顺序当将精心设计或合成的设计加载到内存中时,由该工具执行。的顶部的文件列表先读入,最下面的一个最后读入。您可以简单地更改订单在IDE中选择文件,然后将其移动到列表中所需的位置。例如,在下图中,文件wave_gen_pin.xdc被移动到文件之前使用拖放的wave_gen_timing.xdc
在非项目模式下,read_xdc调用的顺序决定了将评估约束文件。
IP核的约束文件顺序许多IP核心与一个或多个XDC文件一起交付。当生成这样的IP核时在RTL项目中,它们的XDC文件也在各种设计编译过程中使用步骤。例如,下图显示项目中的一个IP核心附带XDC文件。
默认情况下,在用户XDC文件之前读取IP XDC文件。以这种方式处理它允许IP来创建一个可以在XDC中引用的时钟对象。它还允许您覆盖由IP核心设置的物理约束,因为在IP之后评估用户约束。对于依赖于时钟对象的IP核,此顺序有一个例外由用户或另一个IP创建(例如,get_clocks-of_objects[get_ports-clka])。在这种情况下,在用户文件之后读取IP XDC。此行为由PROCESSING_ORDER属性控制,该属性为每个XDC文件设置:
•早期:必须首先读取的文件
•正常:默认
•LATE:必须最后读取的文件
IP XDC将其PROCESSING_ORDER属性设置为EARLY或LATE。无IP传递属于NORMAL约束组的XDC文件。对于用户XDC(或Tcl)文件属于同一PROCESSING_ORDER组,它们的相对顺序显示在Vivado IDE中确定它们的读取顺序。可以通过移动文件来修改组内的顺序在Vivado IDE约束集中,或使用reorder_files命令。对于属于同一PROCESSING_ORDER组的IP XDC文件,确定顺序通过IP核的导入或创建顺序。项目结束后不能更改此顺序已创建。最后,用户组和IP XDC PROCESSING_order组之间的相对顺序如下如下所示:
1.标记为EARLY的用户约束
2.IP约束标记为EARLY(默认)
3.标记为NORMAL的用户约束
4.标记为LATE的IP约束(包含时钟依赖项)
5.标记为LATE的用户约束
更改读取顺序
要更改约束集中XDC文件或非托管Tcl脚本的读取顺序,请执行以下操作:
1.在“源”窗口中,选择要移动的XDC文件或Tcl脚本。
2.将文件拖放到约束集中所需的位置。
在非项目模式下,read_xdc或source命令的顺序决定了顺序将读取约束文件。如果使用带有约束的IP核心,将处理两组约束自动如下:
•不依赖于时钟的约束被分组在XDC文件中PROCESSING_ORDER设置为EARLY,
•依赖于时钟的约束被分组在设置了PROCESSING_ORDER的XDC文件中迟到。
默认情况下,用户XDC文件属于PROCESSING_ORDER NORMAL组。它们已加载在EARLY XDC文件之后和在LATE XDC文件之前。对于每个PROCESSING_ORDER组,IPXDC文件的加载顺序与IP核心在IP源中列出的顺序相同窗例如,下图显示了随XDC文件。
与用户XDC文件不同,您不能直接更改IP XDC文件的读取顺序属于同一PROCESSING_ORDER组。如果必须修改订单,请执行以下操作:
1.禁用相应的IP XDC文件(IS_ENABLED设置为false)。
2.复制它们的内容。
3.将内容粘贴到约束集中包含的一个XDC文件中。
4.使用完整的分层网表对象路径名称更新复制的IP XDC命令在任何需要的地方。这样做是必需的,因为IP XDC约束是以这样的方式编写的可以将它们的作用域设置为IP实例的方式。
5.查看以特殊方式处理的get_ports查询的作用域约束。对于有关XDC作用域的更多信息,请参阅约束作用域。