仅对英特尔可见 — GUID: ntz1535573669856
Ixiasoft
仅对英特尔可见 — GUID: ntz1535573669856
Ixiasoft
2.6.4.2. 实体绑定的约束示例(Entity-bound Constraint Examples)
自动作用域示例(Automatic Scope Example)
在下面的设计中,clk_div实体的两个实例是使用实体绑定的SDC文件方法进行约束的。 设计在经过Fitter规划阶段且时序网表可用后,请按照以下步骤将一个SDC文件与您设计中的一个特定实体相关联:

- 创建一个非实体绑定的SDC文件,此文件定义了一个全局作用域的目标约束,并将其添加到工程中。在此设计中,定义了两个时钟(clk0和clk1)。
# global.sdc create_clock -period 100MHz -name clk_100 [get_ports clk0] create_clock -period 75MHz -name clk_75 [get_ports clk1]
- 创建第二个SDC文件来约束您的目标实体,并将其添加到工程中。此文件遵循实体绑定的方法并与clk_div实体相关联。因此,约束的定义就好像此实体位于顶层层次结构上。例如,get_pins clkdiv_a|q命令不要求X|U0层次结构。在此示例中,get_current_instance Tcl命令用于为每个时钟生成一个唯一名称。
在这种特定情况下,SDC文件在模块的输出上创建一个新时钟,get_current_instance Tcl命令为每个时钟生成一个唯一名称。
# clk_div.sdc set unique_clock_name "[get_current_instance]_clkout" create_generated_clock -divide_by 2 -source [get_pins clkdiv_a|clk] -name $unique_clock_name [get_pins clkdiv_a|q]
- 在左侧的Project Tasks窗格的文件列表中,启动与clk_div实体相关联的SDC文件的File Properties对话框。
- 在Type下拉列表中,选择SDC File with entity binding (Read by the Timing Analyzer at each fitter stage)选项。
- 在Entity下拉列表中,选择 clk_div 。
这会将自动作用域应用于实体绑定文件,其中过滤器命令中的所有路径都以当前层次结构的顶级路径为前缀。例如,get_registers clkdiv_a命令动态地转换成它的完全层次化命令,例如:get_registers X|U0|clkdiv_a。
注: 设计必须已经通过了Synthesis阶段才能填充实体列表。
图 96. File Properties对话框您可以通过以下QSF assignment方法来执行此任务:
set_global_assignment -name SDC_ENTITY_FILE clk_div.sdc -entity clk_div
- 重新编译工程以使变更生效。这会使对应的SDC文件在自动作用域模式下有效地绑定到实体。
- 通过查看Timing Analyzer中的SDC File List报告来验证实体绑定属性的实现。此报告提供了设计所应用的SDC文件的完整清单。对于实体绑定的SDC文件,此报告显示了重要信息,包括关联的实例、实体名称、库和自动作用域的状态,如下图所示:
图 97. Timing Analyzer中的SDC文件列表报告
- 根据预期目的确定每个约束的正确应用。例如,检查生成的时钟和与时钟层次结构交叉引用来确定是否成功地应用了约束,如下图所示:
图 98. 在Timing Analyzer中创建生成的时钟窗口图 99. Timing Analyzer中的时钟层次结构汇总窗口
手动作用域示例(Manual Scope Example)
若要将实体绑定的SDC文件的作用域修改成手动(例如,使用实体外部的单元),需使用QSF assignment。通过在实体绑定的SDC文件中包含-no_sdc_promotion参数, 您可以禁止软件在每个集合过滤器前面添加当前实例的完整路径的做法。例如,要更改成手动作用域,在与上面自动作用域示例中的clk_div实体关联的SDC文件中添加-no_sdc_promotion参数,如下所示:
set_global_assignment -name SDC_ENTITY_FILE clk_div.sdc -entity clk_div -no_sdc_promotion
若要精确地设置集合过滤器的作用域,请使用get_current_instance命令。通过将顶级路径提供给当前实例,可以简化针对实例边界内限制的单元来设置筛选器作用域的过程。
# clk_div.sdc set current_entity_instance [get_current_instance] set unique_clock_name "${current_entity_instance}_clkout" create_generated_clock -divide_by 2 -source [get_pins clkdiv_a|clk] \ -name $unique_clock_name [get_pins ${current_entity_instance}|clkdiv_a|q]
当对一个指定的实体绑定SDC文件禁止了自动作用域时,Timing Analyzer中的SDC File List报告通过在Promoted栏中显示"No"来表示此更改,如下所示:

通过使用此方法,您可以将SDC实体绑定过程与您的设计流程进行无缝协调,从而提高了约束管理的效率和准确性。
导出和导入一个带实体绑定约的束设计分区
以下示例是将一个SDC文件与包含在分区中的实体相关联,并随后导入到不同的 Intel® Quartus® Prime工程的全面指南。此示例重点关注以下设计中的fifo实体:

导出一个设计分区
请按照以下步骤导出一个带实体绑定约束的设计分区:
- 将约束应用于fifo实体并通过布局布线(fitter)阶段的初始运行成功地编译设计后,使用Design Partition对话框的Assignments View中的Default选项将fifo实体指定为一个标准分区,如下所示:
图 102. Design Partition对话框的Assignments View
- 使用实体绑定的SDC文件方法在fifo实体和相应的SDC文件之间建立连接。
图 103. File Properties对话框
- 通过完整的编译流程对整个设计进行编译,以使新的配置生效。
- 通过查看Timing Analyzer中的SDC File List报告来确认SDC文件与fifo实体的正确关联。此报告可作为验证SDC关联的一个关键检查点(valuable checkpoint)。
图 104. Timing Analyzer中的SDC文件列表报告
- 在 Intel® Quartus® Prime GUI中,浏览到Project菜单,然后点击Export Design Partition。在Export Design Partition对话框中执行以下操作:
- 在Partition name下拉列表中选择要导出的分区。
- 使用Partition Database File域中的浏览按钮附加分区数据库文件。
- 对链接到所选分区的实体绑定SDC文件选中Include entity-bound SDC files for the selected partition复选框。
- 通过在Snapshot下拉列表中选择Synthesized或者Final来指定您的首选项。
图 105. Export Design Partition对话框
导入一个设计分区
导入一个与新设计中的实体相关联的带实体绑定的SDC文件的分区,需要在设计中存在一个黑匣子包装器(black box wrapper)用于该实体。这个包装器声明一个分区,在该分区中使用了从导入分区获取的数据。请考虑以下名为fifo_imported的实体的示例:

请按照以下步骤导入一个带实体绑定约束的设计分区:
- 确保设计成功编译到Synthesis阶段。
- 使用Design Partition对话框的Assignments View并填充以下数据,在包装器实体(wrapper entity)中创建一个新分区:
- 指定分区名称和实体实例的层次结构路径。
- 指定分区类型为Default。
- 在Preservation Level栏中输入synthesized。
- 在Partition Database File栏中添加之前工程的.qdb文件。
图 107. Design Partition对话框的Assignments View
- 编译工程,完成整个编译流程。
- 验证实体绑定SDC文件分配的正确应用。使用Timing Analyzer中的SDC File List报告来确认相应约束的应用。
图 108. Timing Analyzer中的SDC File List报告
通过执行这些全面的步骤,您可以无缝管理SDC文件与分区内实体的关联性,并确保它们在导入到不同工程中时的正确实现。