仅对英特尔可见 — GUID: mpf1656551164775
Ixiasoft
仅对英特尔可见 — GUID: mpf1656551164775
Ixiasoft
1.7.3.4. 创建SDC-on-RTL SDC文件中的约束
SDC 2.1合规性
SDC-on-RTL SDC是一种行业标准,可提供针对您RTL的约束。目标节点从解析的网表中来,并与您的RTL紧密结合。您可以定位层次节点,并通过各种编译阶段将约束传递到编译流程中。
Quartus® Prime软件保留SDC-on-RTL SDC文件中约束的顺序。您在SDC文件中列出的约束的顺序定义了将他们加载到 Quartus® Prime软件中的顺序。
SDC-on-RTL约束旨在仅支持符合SDC 2.1的命令。因而显然缺少对象访问程序,例如get_keepers、get_registers或get_nodes。以下列出的是支持的SDC命令,您可以在 Quartus® Prime专业版用户指南:脚本编写中的TCL Commands and Packages SummaryTCL部分找到更多关于他们的信息:
- create_clock
- create_generated_clock
- set_input_delay
- set_output_delay
- set_false_path
- set_max_delay
- set_min_delay
- set_multicycle_path
- set_clock_groups
- set_clock_latency
- set_clock_uncertainty
- set_data_delay
- set_net_delay
- set_max_skew
并非所有这些命令都支持SDC 2.1参数的完整选择,因为Timing Analyzer不支持所有参数。如果指定了不受支持的参数,这些命令会发出告警消息并忽略该参数。如果您在Timing Analyzer中遇到告警时希望出现的是Tcl错误,则请使用以下命令:
set_global_assignment -name ERROR_ON_WARNINGS_LOADING_SDC_ON_RTL_CONSTRAINTS ON
识别时序路径
为了定义时序路径,请使用SDC标准访问程序,例如get_pins,而不是特定于 Quartus® Prime软件的命令,例如get_keepers或get_registers。 Intel® 建议在定位目标时使用明确的 get_<pins|ports|nets> 命令。使用裸名称可能会导致无意目标,并且数据库会发出告警。
set_false_path -from [get_keepers { reg_A }] -to [get_keepers { reg_B }]
set_false_path -from [get_pins { reg_A|clk }] -to [get_pins { reg_B|d }]
状态 | 例外命令 | From标志 | From | To标志 | To | 建立裕量 |
---|---|---|---|---|---|---|
Complete | set_false_path | -from | [get_pins{tf_sync[0] |ff_src|clk}] |
-to | [get_pins{tf_sync[0] |ff_dst|d}] |
3.603 |
Invalid | set_false_path | -from | [get_pins{tf_sync[2] |ff_src|q}] |
-to | [get_pins{tf_sync[2] |ff_dst|d}] |
Invalid |
Invalid | set_false_path | -from | [get_pins{tf_sync[3] |ff_src|d}] |
-to | [get_pins{tf_sync[3] |ff_dst|d}] |
Invalid |
调试SDC-on-RTL约束
有几种方法可以调试SDC-on-RTL约束。例如,您可以隔离设计中使用约束的确切位置,并在流程中对其进行分析。您还可以使用报告约束的编译报告(请参阅Elaboration Constraints Compilation Report)。然而,在调试约束时,请考虑以下几点:
读取SDC-on-RTL约束时出错,会通过命令堆栈发出错误消息,显示有问题的命令的行号。例如:
您可以直接通过Tcl控制台调试错误约束。您可以在此早期阶段轻松地迭代初始目标解决方案或命令语法问题,因为这是 Quartus® Prime软件加载SDC-on-RTL SDC文件的阶段。
一般来说,无法将SDC-on-RTL约束直接加载到Timing Analyzer中,原因如下:
- 目标网表中的数据与解析网表中的数据有所不同,而与时序网表中的数据则没有区别。虽然两个网表之间可能存在一些共同节点,但两个网表不相同。
- SDC-on-RTL中使用的是合规SDC 2.1语法,可能与传统的Quartus SDC命令不同。
尽管有这些警告,如果您仍然希望尝试在将SDC文件加载到Timing Analyzer中,请使用read_sdc <sdc filename>.
处理约束时,请确保以下事项:
- 标和基本语法正确(节点查找或目标获取)。您可以使用RTL Analyzer在elaborated网表上查找节点。
- 约束对于时序图 (约束行为) 的意义。您可以在Timing Analyzer中查看相关内容。
从设计网表检查传达给Timing Analyzer的SDC-on-RTL约束(import_sdc仅加载SDC-on-RTL命令)。经过在编译流程多个阶段的传播后,import_sdc命令加载SDC-on-RTL约束的一个版本。完成该步骤后,体验与典型的Timing Analyzer会话相同。