




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、vivado 约束指导手册时序分析时序路径 时序路径由设计中instance之间的连接决定。在数字设计中,时序路径由一对时序元件(sequential elements)形成,这对时序元件由一个或二个不同的时钟控制。普通时序路径在任何设计中最普通的时序路径有以下4种:1 输入端口到内部时序单元路径2从时序单元到时序单元之间的内部路径3 从内部时序单元到输出端口之间的路径4 输入端口到输出端口之间的路径输入端口到内部时序单元之间路径在从输入端口到内部时序单元之间的路径上传输的数据:. 通过管脚时钟送出器件. 经过一个称为输入延时的延时到达器件端口(SDC 定义). 在到达由目标时钟(destin
2、ation 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 分析时序并且在时序路径终点时候报告时序裕量。时序裕量是指在时序路径终点数据要求时间和抵达时间的差异。如果裕量为正,从时序的角度考虑此路径是有效的。Setup 检查为
5、了计算数据所需的setup 时间,时序引擎:1. 决定源时钟和目的时钟之间的普通周期。如果没有被发现,为分析考虑多达1000个时钟周期。2. 检查覆盖普通周期上的起始点和终点所有上升和下降沿。3. 在任何两个有效(active)沿之间的最小正差值delta。这个delta被称为setup分析的时序路径要求。Setup 路径要求示例假象2个寄存器之间的一条路径,这些寄存器由其相应时钟上升沿触发。这条路径有效的时钟沿只有上升沿。时钟定义如下:. clk0 周期6 ns. clk1周期4ns图3-3显示有2个单独的源和目的时钟沿有资格受到setup分析:setup(1)和setup(2):源时钟发送
6、沿时间: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路径要求示例采用page33中setup路径要
9、求示例中的时钟。对于setup分析那仅有2个可能的时钟沿组合:那么相应的hold要求如下:从上面可以看出最大的要求时间是0ns,这正好与源时钟和目的时钟第一次上升沿相吻合。Hold 路径要求示例,page36 显示了setup 检查沿和他们相关的hold检查。此例中,最终的hold要求时间不是来源于最紧的setup要求。这是因为所有可能的setup沿都会被考虑在内,是为了找到最又挑战性的hold要求。正如在setup分析中,数据要求时间和数据抵达时间是基于以下条件计算的:. 源时钟发送沿时间. 目的时钟抓取沿时间. 源和目的时钟延时. 时钟不确定性. 数据延时. 目的寄存器hold 时间Hol
10、d 裕量是要求时间和抵达时间的差值正的时序裕量意味着即使在最悲观的情况下数据也不会被错误的时钟沿抓取。而负的hold裕量说明抓取的数据错误,而且寄存器可能进入不稳定状态。矫正(recovery)和移除(removal)分析矫正和移除时序检查与setup和hold检查相似,区别就是它们应用于异步数据管脚例如set或者clear。对于异步复位的寄存器:. 矫正时间是异步reset信号为了锁定新数据已经切换到它的无效状态之后 ,到下一个有效时钟沿之间的最小时间。. 移除时间是在异步复位信号安全切换到其无效状态之前,到第一个有效时钟沿之后的最小时间。下面的等式描述了这两种分析的slack是如何计算的R
11、ecovery 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它们还可以由LUT和register
14、之类的常规单元改变。以下部分介绍了如何基于原始时钟来最好的定义它主时钟主时钟是板上产生的输入设计的时钟,可以通过以下途径输入:. 输入端口. gigabit transceiver 输出管脚(例如,recovered clock)主时钟只能由create_clock命令定义。主时钟必须连接到网表对象(netlist object)。网表对象代表了设计中时钟树上所有下行时钟时钟沿产生的点。换句话说,当Vivado计算slack等式中时钟延时和不确定性时候,主时钟源点定义了0时间。必须最先定义主时钟,这样其它的时钟约束才能有参考依据。主时钟示例如图4-2所示,板级时钟通过sysclk端口进入FPG
15、A,然后在抵达路径寄存器之前经过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。用合理的时钟延时
16、和不确定值计算它们之间路径的裕量。虚拟时钟虚拟时钟是设计中没有在物理上连接到任何网表单元的时钟。虚拟时钟由create_clock命令定义而不需要指定任何源对象。以下情况中虚拟时钟可以用来指定输入和输出延时约束. FPGA I/O的外部参考时钟不作为设计时钟. FPGA I/O路径与内部产生的时钟有关,而这些I/O路径不能被板级时钟所约束. 在不修改内部时钟特性的前提下只为时钟相关的I/O延时约束指定不同的jitter和latency。例如,时钟clk_virt周期10ns,没有连接到任何网表对象。在此例中,-name选项是强制的,没有指定。虚拟时钟在其被输入和输出延时约束使用之前定义。生成时
17、钟(generated clock)有2种生成时钟:. 用户定义的生成时钟. 自动衍生时钟(derived clock)关于生成时钟生成时钟是指由MMCM或用户逻辑驱动内部逻辑的时钟。生成时钟与master 时钟相关联,master时钟可以是:. 主时钟. 其它生成时钟生成时钟的特性直接来源于它们的master时钟。必须描述如何变化的电路如何改变master时钟,而不是指定它的周期和波形。Master时钟和生成时钟的关系可以是:. 简单的分频. 简单的倍频. 在一个MMCM或PLL中既有简单的分频也有简单的倍频生成时钟也可以是其master时钟带有相移或波形反向的简单复制。用户定义的生成时钟用
18、户定义的生成时钟是:. 用create_generated_clock命令定义. 连接到网表对象,优先连到时钟树根引脚用-source选项指定master时钟。这标明了master时钟传播经过的管脚或端口。通常用master时钟的源点或生成时钟源单元的输入时钟引脚。示例1:简单2分频主时钟clkin时钟周期10ns。寄存器REGA将其2分频给其它寄存器管脚,其相应的生成时钟为clkdiv2。以下是3个等效的约束:例2:用-edge选项来2分频可以选择不用-divide_by选项,而是用-edge选项来直接描述基于master时钟沿产生的时钟波形。幅角是Master 时钟沿指示的列表,该列表用来
19、定义生成时钟沿的位置,以时钟上升沿开始。下面的例子等效于在例1中定义的的生成时钟。例3: 用-edge和-edge_shift选项来改变占空比和相移生成时钟波形的每个沿都可以独立的用 edge_shift选项来用一个绝对值移位。只有需要相移的时候才用这此选项。-edge_shift不能和以下选项一起使用:. divide_by. multiply_by. invert考虑一个master 时钟clkin周期10ns,占空比50%。它到达CMB单元产生时钟占空比25%,相移90度。例4: 同时使用-divide_by和-multiply_byVivado允许同时指定-divide_by和-mul
20、tiply_by。这是对标准SDC的延伸。这 在手动定义由MMCM或PLL产生的时钟时候非常方便。尽管Xilinx推荐由时序引擎自动创造这些约束。对于更多的信息,查看自动生成时钟考虑CMB是master 时钟clkin乘以4/3:如果在MMCM或PLL输出产生一个衍生时钟,必须验证波形定义符合MMCM或PLL的配置。自动派生时钟自动派生时钟也成为自动生成时钟。假如相关的master时钟已经定义了,他们约束是在CMB模块的输出引脚由VIVADO自动定义的。CMB模块包括MMCM,PLL或BUFR原语。如果用户定义的时钟(主时钟或生成时钟)同时也在网表对象上定义了,那么在同一个源点自动生成时钟是无
21、法建立的。自动生成时钟的名称是基于直接连接到源点的网线的名称的。自动派生时钟示例由MMCM产生的时钟Master时钟clkin驱动了输入CLKIN0和MMCME2例子mmcm_i。自动产生时钟的名称是cpuclk并且它定义的点是mmcm_i/CLKOUT0。本地网线名如果CMB示例位于设计结构之中,本地网线名不带源单元名的名字)用于产生生成时钟名称。例如,对一个称为aa/bb/usrclk的层次网线. 源单元名aa/bb. 产生的时钟名是usrclk名称冲突为了防止2个生成时钟名冲突,Vivado增加了独特的结尾来区分它们,例如:. usrclk , usrclk1, usrclk2 时钟组V
22、ivado 默认所有时钟都是有关联的,除非你通过增加组约束另外指定。Set_clock_groups命令禁止对标识的时钟组之间进行时序分析。同步时钟两个时钟当他们相关的相位可以预测时,那么它们就是同步的。这是因为他们的时钟树在网表中是起源是同一个根。例如,一个衍生时钟和它的master时钟就是同步的,因为他们传播通过同一网表源到达衍生时钟源点。异步时钟组当两个时钟之间的相位关系是不可预测时候,那么它们就是异步的。例如两个时钟由外部不同的晶振产生通过不同的管脚送入FPGA,那么它们就是异步时钟。大部分情况下,主时钟可以被当作异步时钟。当与它们相应的生成时钟有关时,它们可以形成异步时钟组。异步时钟
23、组示例. 在输入端口上定义主时钟clk0,通过MMCM产生时钟usrclk和itfclk。. 第二个主时钟是clk1,其定义在GTP instance输出管脚上的recovered 时钟,它通过第二个MMCM产生gtclkrx和getclktx。创造异步时钟组用-asynchronous选项来创造异步时钟组动态找回衍生时钟名称如果不能预知衍生时钟名,用get_clocks-include_generated_clocks来动态找回他们。这是SDC标准的延伸。以前的例子可以像下面这么些:专用时钟组有些设计有些选择模式要求时钟不同的时钟。这些时钟间的选择通常用:. 时钟倍频如BUFGMUX和BUF
24、GCTRL. LUT使用Vivado,在同一个时钟树上同时可以存在几个时钟,这便于同时报道所有操作模型,但是在硬件上这是不可能的。有些时钟被称为专用时钟。可以用set_clock_groups来约束他们:. logically_exclusive. physically_exclusive专用时钟组示例一个MMCM产生clk0和clk1,这个连接到BUFGMUX 元件clkmux上。Clkmux输出驱动这些设计时钟树。默认的,vivado分析clk0和clk1之间的路径,尽管既有分享同一时钟树的时钟也有不能同时存在的时钟。必须输入下面的约束来阻止分析两个时钟:时钟latency,jitter,
25、uncertainty除了定义时钟波形,还必须指定与环境相关的可预见的和随机的变化。Clock latency在电路板上传播到达FPGA内部之后,时钟沿抵达目地带有一定的延时。这个延时典型的可以表达为:. 源延时(在时钟源点之前延时,通常在FPGA外部). 网络延时由时钟网络延时引入的时钟延时(也称为插入延时)是要么:. 自动建立(pre-route 设计). 精确计算(post-route 设计)在标准的SDC工具中Set_propagated_clock命令触发了传播延时计算。Vivado中此命令是非必须的,因为这是vivado中默认的:. 所有时钟都被认为是传输时钟. 衍生时钟的延时包括
26、它源主时钟的插入延时加上自身的网络延时对于Xilinx FPGA,用set_clock_latency命令来指定FPGA外部的时钟延时。Set_clock_latency示例时钟jitter和时钟uncertainty对于ASIC器件,时钟jitter通常与时钟uncertainty特征同时出现。然而,对于xilinx FPGA,jitter的特性是可预测的。它们可由时序分析引擎自动计算或分开指定。输入Jitter输入jitter 是考虑到从正常的或理想的时钟抵达时间,两个连续的时钟沿之间的差值。用set_input_jitter命令来为每一个时钟独立指定输入jitter。输入jitter不是
27、从master时钟发送到其衍生时钟。结果,必须手动指定输入jitter,即使是衍生时钟。系统jitter系统jitter是全面的jitter,由于:. 电源噪声. 电路板噪声. 任何系统的额外jitter用set_system_jitter命令来为整个设计即所有时钟指定一个唯一值。额外的时钟uncertainty用set_clock_uncertainty命令来为不同的角落,延时,或所需的特定时钟关系定义额外的时钟不确定性。从时序角度来看,这是为部分设计增加额外裕量的一个便捷的方法。I/O延时为了确定外部时序内容在设计中的精确模型,必须给出输入和输出端口的时序信息。因为vivado只识别FPG
28、A器件内部的时序。在FPGA外部必须用下面命令来指定延时值:. set_input_delay. set_outpu_delay输入延时Set_input_delay命令指定了输入接口上的输入路径延时,此输入端口与设计接口上的时钟沿相关。当考虑到应用板,此延时代表了下面的相位差别:a. 数据通过外部芯片传输到FPGA的输入端口b. 相关参考板级时钟因此,输入延时值可正可负,取决于FPGA接口的时钟和数据相位关系。用输入延时选项尽管-clock 选项是在SDC标准中可选的,但是在vivado中是必需的。相关时钟可以是设计时钟也可以是虚拟时钟。输入延时命令选项有:. 最小和最大延时命令选项. 时钟
29、下降输入延时命令选项. 增加延时输入命令选项最小和最大延时命令选项-min和-max选项为下面指定不同的值:. 最小延时分析(hold/removal). 最大延时分析(setup/recovery)如果都没有用到,输入延时值既适用于min也适用于max。时钟下降输入延时命令选项-clock_fall选项指定了应用于时序路径的输入延时约束,这个时序路径与相关时钟的下降沿有关。如果没有此选项,Vivado只默认时钟的上升沿。不要将-clock_fall选项与-rise和-fall选项混淆。这些选项指的是数据沿而不是时钟沿。Add Delay 输入延时命令选项如果出现以下情况必须使用-add_delay选项:. 存在最大(或最小)延时约束. 你想指定第二个最大(或最小)输出延时约束此选项普遍应用于约束与多
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第25课《活板》教学设计 2023-2024学年统编版语文七年级下册
- 人教版新课标《历史与社会》七年级上册教学设计:第三单元各具特色的区域生活第5课干旱的宝地001
- 千米的认识(教学设计)-2024-2025学年数学三年级上册人教版
- 三年级信息技术下册 第8课 输入中文符号与词组教学实录 粤教版
- 四年级数学(三位数乘两位数)计算题专项练习及答案
- 冷链物流车租赁合同范例
- 九年级化学下册 第八章 常见的酸、碱、盐 8.2 常见的酸和碱 第1课时 常见的酸教学实录 (新版)粤教版
- 充电站框架合同范例
- 培训机构美术教师总结-美术教师个人工作总结
- 剧组道具租赁合同范例
- 2025年上半年宜宾江安县人社局招考易考易错模拟试题(共500题)试卷后附参考答案
- 2024年批次杭州市教育局所属事业单位招聘笔试真题
- 2024年海东市第二人民医院自主招聘专业技术人员考试真题
- 《VAVE价值工程》课件 - 创造最大化的价值与效益
- 中医养生保健知识科普
- 2023年湖北省技能高考计算机类备考题库(万维题库)-中部分(800题)
- 社区居委会2025年工作总结暨2025年工作计划
- S145水表井标准图集
- 2024年天翼云认证运维工程师考试复习题库(含答案)
- 水果联营合同范例
- 江苏卷2024年高考语文第一次模拟考试一(原卷版+解析版)
评论
0/150
提交评论