基于Xlinx的时序分析与约束(3)----基础概念(下)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、4种基本的时序路径

        下图是一张典型的FPGA与上游器件、下游器件通信的示意图

        其可以划分为4条基本的数据路径这4条路径也是需要进行时序约束的最基本路径。

1寄存器到寄存器

        路径2FPGA内部的寄存器到另一个寄存器 即reg2reg寄存器到寄存器需要对其进行约束以满足FPGA端寄存器的建立时间和保持时间要求。

        路径2约束的是FPGA内部源寄存器起点和FPGA内部目的寄存器终点的数据路径其目的是要通过提供要求的方式来使得综合工具vivado满足所有FPGA内部寄存器的建立时间要求和保持时间要求。

2管脚到寄存器

        路径1上游器件通过FPGA管脚到FPGA的寄存器的时序路径即pin2reg管脚到寄存器需要对其进行约束以满足FPGA端寄存器的建立时间和保持时间要求。

        路径1约束的是上游器件的源寄存器起点和FPGA内部的目的寄存器终点的数据路径其目的是要满足后端即FPGA内部寄存器的建立时间要求和保持时间要求。

        路径1可以视为是路径2的一种只不过路径1的源寄存器和目的寄存器都在FPGA内部而路径2的源寄存器在上游器件中。

3寄存器到管脚

        路径3FPGA管脚到下游器件的寄存器的时序路径即reg2pin寄存器到管脚需要对其进行约束以满足下游器件的寄存器的建立时间和保持时间要求。

        路径3约束的是FPGA内部的源寄存器起点和下游器件的目的寄存器终点的数据路径其目的是要满足前端即FPGA内部寄存器的建立时间要求和保持时间要求。

        路径3同样可以视为是路径2的一种只不过路径1的源寄存器和目的寄存器都在FPGA内部而路径3的目的寄存器在下游器件中。

4管脚到管脚

        路径4FPGA管脚到FPGA管脚的时序路径不通过任何寄存器其本质上是纯组合逻辑电路仅仅需要将其值约束在一个指定范围不需要满足建立时间和保持时间要求。

        路径4中不存在任何寄存器通常都是纯组合逻辑或者走线延迟等所以也就不需要满足寄存器的建立时间要求和保持时间要求。需要的仅仅是根据开发需求约束其延迟的最小值和最大值。


2、发射沿Launch Edge与锁存沿Latch Edge

        路径1、2、3实际上都是对寄存器到寄存器之间的数据路径之间的约束而路径4则是约束纯组合逻辑。

        由于寄存器的采样往往都发生在时钟的边沿所以目的寄存器采样的值实际上是上个时钟周期的源寄存器的值也就是说在源寄存器与目的寄存器之间其采样时间相差一个时钟周期。

  • 发射沿Launch Edge 是源寄存器采样的时间点也是时序分析路径的起点
  • 锁存沿Latch Edge是目的寄存器采样的时间点也是时序分析路径的终点

3、数据到达时间Data Arrival Time

        由于2个寄存器之间存在的组合逻辑和走线延迟等使得在发射沿采样到的数据需要一定的时间才能到达后级的锁存沿这个时间就被称为数据到达时间Data Arrival Time。

        如上图在计算数据到达时间时存在3个时间参数

  • Tclk1:时钟信号从起点到达源寄存器REG1的时钟端口的时钟网络延时产生原因一般是走线延迟
  • Tco源寄存器REG1内部的数据输出延迟这个延迟时间是寄存器的固有属性只和使用的FPGA芯片型号有关
  • Tdata数据从源寄存器REG1输出Q端到下级目的寄存器REG2的数据输入D之间的延时一般是组合逻辑器件产生的固有延时和走线延时

        根据上图可以算出数据到达时间Data Arrival Time = launch edge + Tclk1 + Tco +Tdata


4、数据需求时间--建立时间Data Required Time - Setup

        时序约束的本质就是要满足所有寄存器的建立时间要求和保持时间要求所以在数据经过一定的延迟从源寄存器到达目的寄存器后同样需要满足目的寄存器的建立时间要求Tsu。

        如上图在计算数据需求时间--建立时间时存在2个时间参数

  • Tclk2时钟信号从起点到达目的寄存器REG2的时钟端口的时钟网络延时产生原因一般是走线延迟
  • Tsu 在时钟有效边沿到达之间输入数据必须保持不变的时间这意味着上级寄存器的输入至少要在这之前就保持稳定

        根据上图可以算出 Data Required Time + Tsu = latch edge + Tclk2 即 Data Required Time = latch edge + Tclk2 - Tsu

        数据需求时间--建立时间实际上是一种对石中盐到来之前数据保持稳定的最极端时间要求。比如为了满足目的寄存器的建立时间要求计算得到上级寄存器的输出必须至少在3ns之前即保持稳定这也就意味着上级数据能到达的最晚时间是3ns那么1ns、2ns到达自然是可以的。


5、数据需求时间--保持时间Data Required Time - Hold

        建立时间和保持时间是寄存器的2个固定需求属性所以在数据经过一定的延迟从源寄存器到达目的寄存器后同样需要满足目的寄存器的保持时间要求Th。

        如上图在计算数据需求时间--保持时间时存在2个时间参数

  • Tclk2时钟信号从起点到达目的寄存器REG2的时钟端口的时钟网络延时产生原因一般是走线延迟
  • Th在时钟有效边沿到达之后输入数据必须保持不变的时间这意味着上级寄存器的输入至少要在这之后才能发生变化

        所以可以算出 Data Required Time = latch edge + Tclk2 + Th


6、建立时间裕量Setup Slack

        数据需求时间--建立时间实际上是一种对数据到来之前保持稳定的最极端的时间要求比如为了满足目的寄存器的建立时间要求计算得到上级寄存器的输出必须至少在时间刻度3ns之前即保持不变这也就意味着上级数据能到达的最晚时间是3ns那么1ns、2ns到达自然是可以的。

        如果数据在1ns即到达了目的寄存器那么建立时间裕量就是3ns-1ns = 2ns那么这个裕量有什么作用呢或者说代表着什么前面我们知道到寄存器之间可能会存在一段组合逻辑和走线延迟如果你的设计中某2个寄存器之间的建立时间裕量是2ns则意味着你还有空间去折腾比如寄存器彼此之间还可以增加一些组合逻辑器件或者更长的走线。

        

        根据上图可以算出 Setup Slack = Data Required Time – Data Arrival Time即Setup Slack = latch edge + Tclk2 - Tsu – launch edge + Tclk1 + Tco +Tdata = latch edge - launch edge +Tclk2 - Tclk1 - Tsu  + Tco +Tdata=  Tperiod  + Tskew - Tsu  + Tco +Tdata

        如果Setup Slack为正则说明数据在规定的时间内达到了目的寄存器反之则认为数据并没有在规定的时间达到目标此时REG2锁存的数据很有可能是亚稳态状态。


7、保持时间裕量Hold Slack

        数据需求时间--保持时间实际上是一种对时钟沿到来之后数据保持稳定的最极端的时间要求比如为了满足目的寄存器的保持时间要求计算得到上级寄存器的输出必须至少在时间刻度3ns之前都保持不变这也就意味着上级数据能变化的最早时间是3ns那么4ns、5ns到达自然是可以的。

        如果数据在5ns处才在目的寄存器发生了变化那么保持时间裕量就是5ns-3ns = 2ns。

        

        根据上图可以算出Hold Slack = Data Arrival Time - Data Required Time即Hold Slack = latch edge + Tclk1 + Tco +Tdata  - latch edge + Tclk2 + Th= Tco +Tdata - Th-Tclk2 - Tclk1+ latch edge - latch edge= Tco +Tdata - Th - Tskew

        如果Hold Slack为正则认为数据在被锁存的时候有足够多的稳定时间是有效的反之则认为数据可能是亚稳态状态。


8、总结

        搞明白了这些概念那么静态时序分析其实也就很简单了。上文出现了很多的公式看起来有点晦涩难懂但是没关系这些公示实际上仅仅是起到一个辅助理解时序分析的作用并不需要去记忆更也不需要熟练掌握这些公式来生搬硬套时序分析。因为现在的综合工具已经足够智能了你只需要提出时序约束的要求综合工具vivado自然会对这些路径一一进行计算你所要做的仅仅是找到时序裕量为负的路径并想办法改善即可。

        此外通过对上面公式的分析可以让我们更好的了解静态时序分析的本质。

        根据上文有1和2两式

  • 建立时间裕量Setup Slack = Tperiod  + Tskew - Tsu  + Tco +Tdata----1
  • 保持时间裕量Hold Slack = Tco +Tdata - Th - Tskew  ----2

        其中Tperiod 是时钟周期Tskew 是寄存器之间的时钟偏差产生的原因是时钟到达不同的寄存器的时钟端口有延迟Tsu 与 Th分别是寄存器的建立时间要求和保持时间要求这是寄存器的固有属性只和FPGA的型号相关Tco 是从寄存器的输入端口到输出端口所需要的延时时间同样是寄存器的固有属性Tdata是寄存器之间的组合逻辑和走线延迟等之和这与具体设计有关平时我们大多都是通过减少Tdata来使得时间裕量为正以此实现设计的时序收敛。

        Tskew实际上是一个可以被忽略掉的较小值所以把它去掉再对 1和2两式做变形Slack>0需被满足然后有3和4两式

  • Tperiod >Tsu + Tco +Tdata----3
  • Tco +Tdata > Th ----4

        3式子中的Tsu  + Tco +Tdata代表数据从源寄存器到目的寄存器所消耗的时间即Tsu + Tco +Tdata< Tperiod 表示数据从源寄存器的采样时刻传到目的寄存器的采样时刻不能超过一个时钟周期。如果数据传输超过一个时钟周期那么就会导致目的寄存器器开始采样的时候从源寄存器出发的数据还没有传过来。

        对于4式可以两边同时加上Tsu  得到5式

  • Tco +Tdata + Tsu  > Th + Tsu   ----5

       5式子中的Tsu  + Tco +Tdata代表数据从源寄存器到目的寄存器所消耗的时间Th + Tsu是建立时间和保持时间之和即寄存器的采样窗口时间。那么Tsu + Tco +Tdata > Th + Tsu表示数据从源寄存器的采样时刻传到目的寄存器的采样时刻至少要大于寄存器的采样窗口。假如数据传输时间不大于采样窗口则意味着数据的传输是特别快的有可能目的寄存器开始采样时源寄存器的采样仍没有结束如果这个时候输入端数据有变化那么不仅源寄存器处于亚稳态目的寄存器也将处于亚稳态

        所以数据传输延时既不能太大以至于超过一个时钟周期也不能太小以至于小于触发器采样窗口的宽度。这就是静态时序分析的物理意义了。


  • 📣博客主页wuzhikai.blog.csdn.net
  • 📣本文由 孤独的单刀 原创首发于CSDN平台🐵
  • 📣您有任何问题都可以在评论区和我交流📞
  • 📣创作不易您的支持是我持续更新的最大动力如果本文对您有帮助还请多多点赞👍、评论💬和收藏⭐

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6