1、vivado 约束指导手册时序分析时序路径时序路径由设计中 instance 之间的连接决定。在数字设计中,时序路径由一对时序元件(sequential elements)形成,这对时序元件由一个或二个不同的时钟控制。普通时序路径在任何设计中最普通的时序路径有以下 4 种:1 输入端口到内部时序单元路径2 从时序单元到时序单元之间的内部路径3 从内部时序单元到输出端口之间的路径4 输入端口到输出端口之间的路径输入端口到内部时序单元之间路径在从输入端口到内部时序单元之间的路径上传输的数据:. 通过管脚时钟送出器件. 经过一个称为输入延时的延时到达器件端口(SDC 定义). 在到达由目标时钟(de
2、stination 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 个单独的源和目的时
6、钟沿有资格受到 setup 分析:setup(1)和 setup(2):源时钟发送沿时间:0ns + 1*T(clk0) = 6ns目的时钟抓取沿时间:0ns + 2*(clk1) = 8nsSetup Path Requirement = 抓取沿时间 发送沿时间 = 2ns在计算路径要求时候,需要考虑 2 个重要的点:1. 时钟沿是理想的,那就是说,时钟树插入延迟不在考虑之内2. 默认时钟在 0 时间点是 phase-aligned,除非他们的波形定义引进了 phase-shift。异步时钟相位关系未知。时序引擎在分析其间路径时候会考虑默认值。关于异步时钟的更多内容看一下部分。Setup 分
7、析数据要求时间Setup 分析数据要求时间是指为了让目的单元能安全的采样数据,数据必须在这个时间点之前稳定。这个值基于:. 目的时钟采样沿时间. 目地时钟延时. 源时钟和目的时钟的不确定性. 目的单元 setup 时间Setup 分析的数据抵达时间Setup 分析的数据抵达时间,是指由源时钟发送的数据在路径终点的稳定时候所需要的时间。它的值基于:. 源时钟发送沿时间. 源时钟延时. 数据路径延时数据路径延时包括所有从起点到终点的单元(cell)和线(net)延时。在时序报告中,Vivado 将 setup 时序考虑为数据路径的一部分。相应的,数据到达和要求时间的公式为:Setup 裕量是指要求
8、时间和实际抵达时间的差值:在 输入数据引脚寄存器上 Setup 裕量为负值,说明寄存器有可能锁存到未知的值跳转到错误状态。Hold 检查Hold 裕量的计算与 setup 裕量计算直接相关。当 setup 分析证明了在最悲观的情况下数据可以被安全捕捉,hold 分析确保了:. 同样的数据不可能被前面目地时钟沿错误的抓取. 下一个源时钟沿发送的数据不能被用来分析 setup 的目的数据沿抓取因此,为了找到 hold 分析的时序路径,时序引擎考虑了所有为 setup 分析的源和目的时钟沿结合的可能。对每一种可能的组合,时序引擎:. 检查发送沿和减去一个目的时钟周期的抓取沿之间的差值. 检查了加上一
9、个源时钟周期的发送沿和抓取沿之间的差值. 只保留时间差值最大的发送沿和抓取沿hold 路径要求示例采用 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
13、: period = 10, waveform = 0 5Clk1: period =8 , waveform=2 8传播(propagated clock)时钟周期和波形特征体现了时钟的理想特征。当时钟进入 FPGA 器件并且经过时钟树传播时候,时钟沿会有延时而且会随着噪声和硬件特性而改变。这些特点被称为时钟网络延时(latency)和时钟不确定(uncertainty)。时钟不确定性包含下面内容:. clock jitter. phase error. 任何额外指定的不确定Vivado 会默认的将时钟作为传播时钟,这意味着,这是非理想的时钟。这么做是为了提供包含时钟树插入延时和不确定性的裕量的值。特定硬件资源