vivado 时钟延迟、抖动和不确定性

时钟延迟、抖动和不确定性

除了定义时钟波形外,还必须指定可预测和随机变化与操作条件和环境有关。

时钟延迟

在板上和FPGA内部传播后,时钟边沿到达其目的地有一定的延迟。这种延迟通常表示为:

•源延迟(通常在设备外部时钟源点之前的延迟)

•网络延迟

网络延迟引入的延迟(也称为插入延迟)是自动的估计(路线前设计)或精确计算(路线后设计)。

许多非AMD定时引擎需要SDC命令set_propagated_clock来触发沿着时钟树的传播延迟的计算。Vivado工具不需要此命令。相反,它默认计算时钟传播延迟:

•所有时钟都被视为传播时钟。

•生成的时钟延迟包括其主时钟的插入延迟及其自身网络延迟

对于AMD FPGA,主要使用set_clock_latency命令来指定时钟延迟在设备外部。set_clock_latency示例

# Minimum source latency value for clock sysClk (for both Slow and Fast
corners) set_clock_latency -source -early 0.2 [get_clocks sysClk]
# Maximum source latency value for clock sysClk (for both Slow and Fast
corners) set_clock_latency -source -late 0.5 [get_clocks sysClk]

时钟不确定性

时钟抖动

对于ASIC器件,时钟抖动通常用时钟不确定性特性来表示。然而,对于AMD FPGA,抖动特性是可预测的。它们可以自动由正时分析引擎计算或单独指定。

输入抖动

输入抖动是连续时钟边沿之间相对于标称或理想时钟到达时间。输入抖动是一个绝对值,表示变化

在时钟边缘的每一侧。使用set_input_jitter命令为每个主时钟指定输入抖动单独。您不能直接在生成的时钟上指定输入抖动。Vivado IDE定时引擎自动计算生成的时钟从其主时钟继承的抖动时钟

•对于生成的时钟由MMCM或PLL驱动的情况,输入抖动为用计算的离散抖动代替。

•如果生成的时钟是由组合或顺序单元创建的,则生成的时钟抖动与其主时钟抖动相同。

系统抖动

系统抖动是由于电源噪声、板噪声或的任何额外抖动引起的总体抖动系统。使用set_system_jitter命令仅为整个设计设置一个值,即所有时钟。以下命令在通过输入传播的主时钟上设置+/-100 ps的抖动港口clkin:

set_input_jitter [get_clocks -of_objects [get_ports clkin]] 0.1

额外的时钟不确定性

使用set_clock_uncerity命令为定义额外的时钟不确定性不同的转角、延迟或特定的时钟关系。这是一种方便的方式从时序角度为设计的一部分添加额外的裕度。时钟间的不确定性总是优先于简单的时钟不确定性,无论约束的顺序。在下面的例子中,尽管1.0的简单时钟不确定性ns是最后在时钟clk1上定义的,从时钟clk1到时钟clk2的时序路径受到约束具有2.0ns时钟不确定性。

set_clock_uncertainty 2.0 -from [get_clocks clk1] -to [get_clocks clk2]
set_clock_uncertainty 1.0 [get_clocks clk1]

当在两个时钟域之间定义时钟间不确定性时,请确保约束

时钟域的所有可能交互:

clk1 to clk2
clk2 to clk1

你可能感兴趣的:(fpga开发)