Intel® Quartus® Prime Pro Edition用户指南: Timing Analyzer

ID 683243
日期 10/02/2023
Public
文档目录

2.6.5.6.2. 时钟不确定性

默认情况下,Timing Analyzer创建理想的时钟并具有完美的边沿。要模仿诸如抖动的时钟级(clock-level)效果,您可以对这些时钟边沿添加不确定性。 Timing Analyzer自动计算相应的设置和保持不确定性,并将这些不确定性应用于设计中的所有时钟传输,即使您的.sdc文件中未包含derive_clock_uncertainty命令也是如此。设置和保持不确定性是正确约束设计的关键部分。

对于每条适应的路径,Timing Analyzer从数据所需时间中减去设置不确定性,并将保持不确定性加入到数据所需时间中。这略微减少了每条路径上的设置和保持时序裕量(slack)。

Timing Analyzer会考量三种时钟到时钟传输的不确定性时钟效应:内部锁定传输,时钟间隔传输和I/O接口时钟传输。

  • 当器件中发生寄存器到寄存器的传输,并且源时钟和目的时钟来自同一个PLL输出管脚或时钟端口时,会发生内部锁定传输。
  • 当器件的内核中发生寄存器到寄存器的传输,并且源时钟和目的时钟来自不同的PLL输出管脚或时钟端口时,会发生时钟间隔传输。
  • 当数据从I/O端口传输到器件的内核或从器件的内核传输到I/O端口时,会发生I/O接口时钟传输。

若要手动指定时钟不确定性,请使用set_clock_uncertainty命令。您可以分别指定设置和保持的不确定性。您还可以对上升和下降时钟跳变分别指定值。您可以覆盖derive_clock_uncertainty命令自动应用的值。

如果PLL输入上的时钟抖动在目标器件中PLL的输入抖动规范内,那么derive_clock_uncertainty命令会考量PLL时钟抖动。如果PLL的输入时钟抖动超出规范,那么使用set_clock_uncertainty -add命令为PLL输出时钟增加额外的不确定性,以解决过多的抖动。有关抖动规范,请参考器件手册。

当抖动超过器件的抖动规范时,您还可以使用set_clock_uncertainty -add来计算电路板的峰峰(peak-to-peak)抖动。在这种情况下,您将不确定性加入到等于1/2抖动值的设置及保持中:

set_clock_uncertainty –setup –to <clock name>  \ 
    -setup –add <p2p jitter/2>
set_clock_uncertainty –hold –enable_same_physical_edge –to <clock name> \
    –add <p2p jitter/2>

对于Timing Analyzer如何应用derive_clock_uncertaintyset_clock_uncertainty的值,有一组复杂的优先规则,这取决于.sdc文件中命令和选项的顺序。以下Help主题涵盖这些规则的完整说明。如果您遵循以下建议,这些优先规则更容易实现:

  • 要将您自己的时钟不确定性值分配给任何时钟传输,请在.sdc文件中的derive_clock_uncertainty命令之后添加 set_clock_uncertainty异常。
  • set_clock_uncertainty使用-add选项时,您指定的值是derive_clock_uncertainty值的附加值。如果未指定-add ,那么您指定的值将替换derive_clock_uncertainty的值。