1、UG 903 vivado 约束指导手册vivado 约束指导手册时序分析时序路径 时序路径由设计中instance之间的连接决定。在数字设计中,时序路径由一对时序元件(sequential elements)形成,这对时序元件由一个或二个不同的时钟控制。普通时序路径在任何设计中最普通的时序路径有以下4种:1 输入端口到内部时序单元路径2从时序单元到时序单元之间的内部路径3 从内部时序单元到输出端口之间的路径4 输入端口到输出端口之间的路径输入端口到内部时序单元之间路径在从输入端口到内部时序单元之间的路径上传输的数据:. 通过管脚时钟送出器件. 经过一个称为输入延时的延时到达器件端口(SDC
2、定义). 在到达由目标时钟(destination clock)锁定的时序单元之前须通过器件内部逻辑从时序单元到时序单元的内部路径在从时序单元到时序单元的内部路径上传输的数据:. 由时序单元发送到器件内部,而此时序单元由源时钟(source clock)驱动. 在到达由目标时钟驱动的时序单元之前,须经过一些内部逻辑内部时序单元到外部端口路径在从内部时序单元到外部端口路径上的数据:. 由时序单元发送到器件内部,而此时序单元由源时钟(source clock)驱动. 在到达外部端口之前,须经过一些内部逻辑. 在经过一段称为输出延时的额外延时之后被端口时钟捕获(SDC definition)输入端口
3、到输出端口路径在从输入端口直接到输出端口的路径上,数据:. 不需要在器件内部锁存(latch),直接从输入端口到输出端口。他们通常被称为In-to-out数据路径。端口时钟可以是虚拟时钟也可以是设计时钟路径举例图3-1 描述了上面所有的路径,在此例图中,设计时钟CLK0可被用作端口时钟,这样既可以约束DIN延时也可以约束DOUT延时。时钟路径部分每一个时钟路径由三个部分组成:. 源时钟路径. 数据路径. 目标时钟路径源时钟路径源时钟路径是由源时钟从它的源点(典型的是输入端口)到发送时序单元的时钟引脚之间的路径。对于从输入端口起始的时序路径来说,就不存在源时钟路径。数据路径对内部电路,数据路径是
4、发送时序单元和捕捉时序单元之间的路径发送时序单元的有效时钟管脚称为路径起始点捕捉时序单元的数据输入管脚称为路径结束点对于输入端口路径,数据路径起始于输入端口。输入端口是路径的起始点。对于输出端口路径,数据路径结束语输出端口。输出端口是路径的结束点。目标时钟路径目标时钟路径是由目标时钟从其源点(典型的是输入端口)到捕捉时序单元的时钟管脚之间的路径。对于结束于输出端口的时序路径,就没有目标时钟路径。图3-2显示了3段典型的时序路径Setup和Hold分析Vivado IDE 分析时序并且在时序路径终点时候报告时序裕量。时序裕量是指在时序路径终点数据要求时间和抵达时间的差异。如果裕量为正,从时序的角
5、度考虑此路径是有效的。Setup 检查为了计算数据所需的setup 时间,时序引擎:1.决定源时钟和目的时钟之间的普通周期。如果没有被发现,为分析考虑多达1000个时钟周期。2.检查覆盖普通周期上的起始点和终点所有上升和下降沿。3.在任何两个有效(active)沿之间的最小正差值delta。这个delta被称为setup分析的时序路径要求。Setup 路径要求示例假象2个寄存器之间的一条路径,这些寄存器由其相应时钟上升沿触发。这条路径有效的时钟沿只有上升沿。时钟定义如下:. clk0 周期6 ns. clk1周期4ns图3-3显示有2个单独的源和目的时钟沿有资格受到setup分析:setup(
6、1)和setup(2):源时钟发送沿时间:0ns + 1*T(clk0) = 6ns目的时钟抓取沿时间:0ns + 2*(clk1) = 8nsSetup Path Requirement = 抓取沿时间 发送沿时间 = 2ns在计算路径要求时候,需要考虑2个重要的点:1.时钟沿是理想的,那就是说,时钟树插入延迟不在考虑之内2.默认时钟在0时间点是phase-aligned,除非他们的波形定义引进了phase-shift。异步时钟相位关系未知。时序引擎在分析其间路径时候会考虑默认值。关于异步时钟的更多内容看一下部分。Setup 分析数据要求时间Setup分析数据要求时间是指为了让目的单元能安全
7、的采样数据,数据必须在这个时间点之前稳定。这个值基于:. 目的时钟采样沿时间. 目地时钟延时. 源时钟和目的时钟的不确定性. 目的单元setup 时间Setup 分析的数据抵达时间Setup分析的数据抵达时间,是指由源时钟发送的数据在路径终点的稳定时候所需要的时间。它的值基于:. 源时钟发送沿时间. 源时钟延时. 数据路径延时数据路径延时包括所有从起点到终点的单元(cell)和线(net)延时。在时序报告中,Vivado 将setup时序考虑为数据路径的一部分。相应的,数据到达和要求时间的公式为:Setup裕量是指要求时间和实际抵达时间的差值:在 输入数据引脚寄存器上Setup 裕量为负值,说
8、明寄存器有可能锁存到未知的值跳转到错误状态。Hold 检查Hold裕量的计算与setup 裕量计算直接相关。当setup分析证明了在最悲观的情况下数据可以被安全捕捉,hold分析确保了:. 同样的数据不可能被前面目地时钟沿错误的抓取. 下一个源时钟沿发送的数据不能被用来分析setup的目的数据沿抓取因此,为了找到hold分析的时序路径,时序引擎考虑了所有为setup分析的源和目的时钟沿结合的可能。对每一种可能的组合,时序引擎:. 检查发送沿和减去一个目的时钟周期的抓取沿之间的差值. 检查了加上一个源时钟周期的发送沿和抓取沿之间的差值. 只保留时间差值最大的发送沿和抓取沿hold路径要求示例采用
9、page33中setup路径要求示例中的时钟。对于setup分析那仅有2个可能的时钟沿组合:那么相应的hold要求如下:从上面可以看出最大的要求时间是0ns,这正好与源时钟和目的时钟第一次上升沿相吻合。Hold 路径要求示例,page36 显示了setup 检查沿和他们相关的hold检查。此例中,最终的hold要求时间不是来源于最紧的setup要求。这是因为所有可能的setup沿都会被考虑在内,是为了找到最又挑战性的hold要求。正如在setup分析中,数据要求时间和数据抵达时间是基于以下条件计算的:. 源时钟发送沿时间. 目的时钟抓取沿时间. 源和目的时钟延时. 时钟不确定性. 数据延时.
10、目的寄存器hold 时间Hold 裕量是要求时间和抵达时间的差值正的时序裕量意味着即使在最悲观的情况下数据也不会被错误的时钟沿抓取。而负的hold裕量说明抓取的数据错误,而且寄存器可能进入不稳定状态。矫正(recovery)和移除(removal)分析矫正和移除时序检查与setup和hold检查相似,区别就是它们应用于异步数据管脚例如set或者clear。对于异步复位的寄存器:. 矫正时间是异步reset信号为了锁定新数据已经切换到它的无效状态之后 ,到下一个有效时钟沿之间的最小时间。. 移除时间是在异步复位信号安全切换到其无效状态之前,到第一个有效时钟沿之后的最小时间。下面的等式描述了这两种
11、分析的slack是如何计算的Recovery check下面的等式描述了下面如何计算:Removal check正如setup和hold检查,一个负的recovery裕量和removal裕量说明寄存器可能进入亚稳态,并且将未知的电子层带入设计中。定义时钟时钟数字设计中,时钟提供了从寄存器到寄存器之间可靠的传输数据的时间参考。Vivado IDE 时序引擎用时钟特征来:. 计算时钟路径要求. 以裕量计算的方式报告设计时序裕量更多信息,参考 时序分析这章为了得到最精确的最大的时序路径覆盖,时钟必须合理的定义。可以用下面的特征定义时钟:. 源时钟是指定义在时钟驱动引脚或者时钟树跟端口的时钟. 时钟沿
12、可以由周期和波形特性的组合描述. 周期是ns级的,与描述的波形的时间周期相匹配. 时钟波形是在时钟周期里,在数ns内时钟上升沿和下降沿绝对时间的列表列表必须包含偶数个值。第一个值一般与第一个上升沿吻合,除非另外指定,默认的时钟占空比是50%相位是0ns。如图4-1所示,clk0周期10ns,占空比50%,相位0ns。Clk1周期8ns,占空比75%,相位2ns。Clk0: period = 10, waveform = 0 5Clk1: period =8 , waveform=2 8传播(propagated clock)时钟周期和波形特征体现了时钟的理想特征。当时钟进入FPGA器件并且经过
13、时钟树传播时候,时钟沿会有延时而且会随着噪声和硬件特性而改变。这些特点被称为时钟网络延时(latency)和时钟不确定(uncertainty)。时钟不确定性包含下面内容:. clock jitter. phase error. 任何额外指定的不确定Vivado会默认的将时钟作为传播时钟,这意味着,这是非理想的时钟。这么做是为了提供包含时钟树插入延时和不确定性的裕量的值。特定硬件资源Xilinx FPGA器件的特定硬件资源能有效支持大量设计时钟。这些时钟通常是由其它器件产生,以输入接口的方式提供给设计。它们也能由时钟配置模块产生,这些时钟配置模块包括:. MMCM . PLL. BUFR它们还
14、可以由LUT和register之类的常规单元改变。以下部分介绍了如何基于原始时钟来最好的定义它主时钟主时钟是板上产生的输入设计的时钟,可以通过以下途径输入:. 输入端口. gigabit transceiver 输出管脚(例如,recovered clock)主时钟只能由create_clock命令定义。主时钟必须连接到网表对象(netlist object)。网表对象代表了设计中时钟树上所有下行时钟时钟沿产生的点。换句话说,当Vivado计算slack等式中时钟延时和不确定性时候,主时钟源点定义了0时间。必须最先定义主时钟,这样其它的时钟约束才能有参考依据。主时钟示例如图4-2所示,板级时钟
15、通过sysclk端口进入FPGA,然后在抵达路径寄存器之前经过input buffer和clock buffer。. 周期是10ns. 占空比为50%. 没有相位移动相应的XDC语法为:与sysclk类似,板级时钟devclk通过ClkIn端口进入FPGA. 周期10ns. 占空比25%. 相移90度相应的XDC语法为:图4-3显示了tasnseiver gt0,是从板上高速链接收回的时钟rxclk。时钟rxclk周期3.33ns,占空比50%而且布线通过MMCM,这样可以为设计产生补偿时钟。当在GT0输出驱动管脚上定义rxclk时候,所有由MMCM驱动的时钟都有个共同的源点,就是gt0/RXOUTCLK。用合理的时钟延时和不确定值计算它们之间路径的裕量。虚拟时钟虚拟时钟是设计中没有在物理上连接到任何网表单元的时钟。虚拟时钟由create_clock命令定义而不需要指定任何源对象。以下情况中虚拟时钟可以用来指定输入和输
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1