在存储器中定义并应用所有设计时钟后,即可使用 report_clocks
命令验证每个时钟的波形以及主时钟和生成时钟之间的关系:
Clock Period Waveform Attributes Sources
sysClk 10.00000 {0.00000 5.00000} P {sysClk}
clkfbout 10.00000 {0.00000 5.00000} P,G {clkgen/mmcm_adv_inst/CLKFBOUT}
cpuClk 20.00000 {0.00000 10.00000} P,G {clkgen/mmcm_adv_inst/CLKOUT0}
…
====================================================
Generated Clocks
====================================================
Generated Clock : cpuClk
Master Source : clkgen/mmcm_adv_inst/CLKIN1
Master Clock : sysClk
Edges : {1 2 3}
Edge Shifts : {0.000 5.000 10.000}
Generated Sources : {clkgen/mmcm_adv_inst/CLKOUT0}
此外,您还可验证所有内部时序路径都被至少 1 个时钟所覆盖。“Check Timing”(检查时序)报告为此提供了两项检查:
- no_clock
- 报告已定义的时钟无法连接到的任何活动时钟管脚。
- unconstrained_internal_endpoint
- 如果某些时序单元具有与时钟相关的时序检查但尚未定义时钟,则报告此类时序单元的所有数据输入管脚。
如果两项检查都返回 0,说明时序分析覆盖范围广。
或者,还可运行 XDC 和“Timing Methodology”(时序方法论)检查来验证在建议的网表对象上是否已定义所有时钟,同时避免造成任何约束冲突或不准确的时序分析情境。
请使用以下命令来运行这些检查:
report_methodology -checks [get_methodology_checks {TIMING-* XDC*}]