文档目录

1.7.3.3. 检查SDC-on-RTL约束

您可以通过多种方式访问SDC-on-RTL约束,以便在流程中以最早机会出现,如以下部分所述:
注: 本小节讨论的所有方法中,SDC-on-RTL约束为只读。您不可在编译流程中修改此约束。您仅可通过更改RTL SDC源文件来改变此约束并在“Analysis and Elaboration”期间重新加载约束。

Tcl Console(Tcl控制台)

Tcl控制台允许您轻松实验目标约束和相关句法。从Tcl控制台访问时网表为只读,并且约束命令未被保存到设计数据库中中。

通过命令行接口访问Tcl控制台,使用的命令如下:
quartus_syn -s

Analysis & Elaboration编译阶段完成后,您可以在控制台中加载工程(project_open <project_name>)并使用dni::load_design -checkpoint "constrained”命令加载正确的检查点(checkpoint)。现在您可以执行的任务,如下:

  • 使用dni::read_sdc<file_name>命令读取特定SDC文件。
  • 使用dni::write_sdc命令进行约束转储(dump constraints)。
  • 运行仅限于本地部分的约束命令。有关详细信息,请参阅创建SDC-on-RTL SDC文件中的约束

RTL Analyzer

要从编译记录台(compilation dashboard)调用RTL Analyzer (Constrained模式),请按照Analysis & Elaboration中的描述使能位于Project > Settings下的RTL Analysis Debug Mode选项。RTL Analyzer GUI允许您在设计网表中查看约束。当您在schematic viewer或Netlist Navigator中选择了网表对象,就可以在Property查看器中查看约束针对的对象。这样有助于确保约束针对您RTL中希望的节点。

在以下示例中,当您选择iopll_refclk[1:0]并右键单击然后从上下文相关菜单中选择Display Individual BitsConnectivity Details弹窗显示其端口。当您从中选择一个端口时,应用于该端口的约束将显示于单独的Constraints选项卡,如下图所示:

图 43. 在RTL Analyzer中查看约束

除了所选对象的约束之外,Constraints选项卡还包含关联对象的约束。例如,“网络总线”约束与网络的约束包含在一起,实例总线的约束与实例的约束包含在一起,等。

图 44. 查看关联对象的约束
注: 您可以通过右键单击Property查看器中的约束来交叉探测SDC文件并选择View in Source选项。

您还可以从RTL Analyzer菜单启动Constraints对话框(Tools > Object Constraints)以查看所有约束(约束(assignment)和时序相关SDC)的列表。该对话框允许您选择分配或约束,并通过右键单击来选择View in Source以交叉探测到其源文件。源文件中包含在 Quartus® PrimeGUI中启动的assignment或 constraint,并突出显示该约束行。

图 45. 对象约束

Constraints GUI允许您过滤四种类型的约束:

  • Global Assignments:使用set_global_assignment命令创建的约束。
  • Source Assignments:源RTL中内嵌的约束。
  • Instance Assignments:使用set_instance_assignment命令创建的约束。
  • Timing Constraints (SDC):通过SDC-on-RTL创建的约束。他们通常出现在Analysis & Synthesis阶段的Constrained视图中。如果没有读取到SDC,则Timing Constraints (SDC)选项被禁用。这种情况可能发生在读取到SDC之前的视图中,例如,Analysis & Synthesis阶段的"Elaborated"和"Instrumented"视图中,或者当没有读取到SDC-on-RTL文件时。

您可以使用过滤字段进一步过滤约束,以查看与字符串匹配的约束。它支持通过命令名称、文件名和行号进行过滤。您还可以使用CommandFileLine列标题。

图 46. 过滤约束

通过Constraints GUI的上下文相关菜单,您可以查看其源文件中选定的约束或其适用的对象。

图 47. Constraints GUI的上下文相关菜单

您可以通过Constrained Objects对话框中的Show Constrained Objects选项查看约束适用的对象。在Constrained Objects中,您可以通过上下文菜单选择受约束的对象。从而允许您在Property Viewer中查看对象的属性。您还可以通过单击Create Color Set对每个约束的对象应用一个颜色。

图 48. 受约束的对象

Quartus® Prime Timing Analyzer

Quartus® Prime Timing Analyzer(时序分析器)使用行业标准的 约束和分析方法来报告设计中所有寄存器到寄存器、I/O和异步复位路径的所有数据需要时间、数据到达时间和时钟到达时间。Timing Analyzer验证所需的时序关系是否满足设计,以确保正常运行,并根据您指定的约束确认实际信号到达时间。有关Timing Analyzer的更多信息,请参阅 Quartus® Prime专业版用户指南:Timing Analyzer

使用Timing Analyzer GUI或Tcl命令控制台,您可以通过运行read_sdc命令将SDC-on-RTL约束加载到时序分析小节中。默认情况下,read_sdc命令始终加载SDC-on-RTL约束,并且该情况发生在加载其他传统 Quartus® Prime软件SDC文件(SDC_FILE )之前。

在静态时序分析期间,可以使用import_sdc命令仅加载SDC-on-RTL SDC约束。在您怀疑出现的调试问题是由SDC-on-RTL约束引起的时候非常有用。

在调用read_sdc期间禁用SDC-on-RTL约束的加载,使用read_sdc -no_import选项或将QSF变量ENABLE_IMPORT_SDC_DURING_READ_SDC设置为OFF

注: 如果您更改实际的SDC-on-RTL文件并使用read_sdcimport_sdc命令将他们导入,就不用重新运行Analysis & Elaboration,Timing Analyzer会发出一条告警消息,通知您在重新运行Analysis & Elaboration之前不会观察到对SDC-on-RTL文件的更改。

使用read_sdcimport_sdc命令导入约束后,它们将成为Timing Analyzer中的标准约束。标准约束诊断报告(report_exceptionsreport_sdc等)对这些约束进行操作,并且您可以使用现有的 Quartus® Prime时序分析API命令更新当前Timing Analyzer小节的约束。

注: 您可以右键单击约束的Location列以report_sdc交叉探测约束并选择Locate in Constraint File
图 49. Timing Analyzer中的SDC报告