时钟延迟、抖动和不确定性
除了定义时钟波形外,还必须指定可预测和随机变化与操作条件和环境有关。
时钟延迟
在板上和FPGA内部传播后,时钟边沿到达其目的地有一定的延迟。这种延迟通常表示为:
?源延迟(通常在设备外部时钟源点之前的延迟)
?网络延迟
网络延迟引入的延迟(也称为插入延迟)是自动的估计(路线前设计)或精确计算(路线后设计)。
许多非AMD定时引擎需要SDC命令set_propagated_clock来触发沿着时钟树的传播延迟的计算。Vivado工具不需要此命令。相反,它默认计算时钟传播延迟:
?所有时钟都被视为传播时钟。
?生成的时钟延迟包括其主时钟的插入延迟及其自身网络延迟
对于AMD FPGA,主要使用set_clock_latency命令来指定时钟延迟在设备外部。set_clock_latency示例
时钟不确定性
时钟抖动
对于ASIC器件,时钟抖动通常用时钟不确定性特性来表示。然而,对于AMD FPGA,抖动特性是可预测的。它们可以自动由正时分析引擎计算或单独指定。
输入抖动
输入抖动是连续时钟边沿之间相对于标称或理想时钟到达时间。输入抖动是一个绝对值,表示变化
在时钟边缘的每一侧。使用set_input_jitter命令为每个主时钟指定输入抖动单独。您不能直接在生成的时钟上指定输入抖动。Vivado IDE定时引擎自动计算生成的时钟从其主时钟继承的抖动时钟
?对于生成的时钟由MMCM或PLL驱动的情况,输入抖动为用计算的离散抖动代替。
?如果生成的时钟是由组合或顺序单元创建的,则生成的时钟抖动与其主时钟抖动相同。
系统抖动
系统抖动是由于电源噪声、板噪声或的任何额外抖动引起的总体抖动系统。使用set_system_jitter命令仅为整个设计设置一个值,即所有时钟。以下命令在通过输入传播的主时钟上设置+/-100 ps的抖动港口clkin:
额外的时钟不确定性
使用set_clock_uncerity命令为定义额外的时钟不确定性不同的转角、延迟或特定的时钟关系。这是一种方便的方式从时序角度为设计的一部分添加额外的裕度。时钟间的不确定性总是优先于简单的时钟不确定性,无论约束的顺序。在下面的例子中,尽管1.0的简单时钟不确定性ns是最后在时钟clk1上定义的,从时钟clk1到时钟clk2的时序路径受到约束具有2.0ns时钟不确定性。
当在两个时钟域之间定义时钟间不确定性时,请确保约束
时钟域的所有可能交互: