深入理解建立/保持时间裕量在时序分析中的作用

何为裕量?

        裕量,英文名称叫做“Slack”。我们在Vivado实现后的报告中常常能看到这样一栏:

因为都是缩写,所以我们来解释一下前四栏的含义:

  1. WNS,即Worst Negative Slack,最差负时序裕量。这个表征了我们设计的电路中,最差的那条路径的时序裕量,如果为正,则说明满足建立时间要求,如果为负,则说明建立时间时序出现问题。
  2. TNS,即Total Negative Slack,也就是所有负时序裕量路径之和,数字的含义和上面是一样的。
  3. WHS,即Worst Hold Slack,代表最差保持时序裕量 ,为正则说明满足保持时间要求,为负则说明保持时序出现问题。
  4. THS, 即Total Hold Slack,也就是总的负保持时序裕量路径之和。

        上面我们一直提到了一个词:裕量。究竟如何理解“裕量”这个词呢?所谓的裕量字面上理解就是多出来的量,之前的文章中我们讨论过建立时间和保持时间的概念。

        对于建立时间,我们要求信号在建立时间之前就要稳定下来,至于具体提前了多久,那就得用“建立裕量”WNS和TNS进行衡量。

        对于保持时间,我们要求信号要在保持时间之后才可以变换,至于延后了多久,那就得用“保持裕量” WHS,THS进行衡量。

多说一嘴,建立时间要满足时序路径中最慢的信号也要符合要求,因此称为最大分析。保持时间要保证时序路径中最快的信号也要满足要求(不能在保持时间之前变换),因此称为最小分析。

     在理解了裕量的概念之后,我们可以开始研究“裕量”究竟应该怎么进行计算了。

建立时间裕量

                 在图示的时序路径中,Clock是时钟源的时钟,由于布局布线等因素,该时钟上升沿到达reg1的时钟端口Clock1时会有一小段延时T_{clk1},Clock1的上升沿也被我们称为启动沿。

        从启动沿到寄存器Q输出数据还有一小段延时,即T_{co},并且数据经过寄存器间的数据通路时还会有一小段延时,即T_{data}。因此我们可以得出:

数据到达时间 =时钟基准(0ns)+ T_{clk1}(3.2ns)+T_{co}+T_{data}(0.8ns) = 4ns

         同理,很容易计算数据被捕获的时间边界为:

数据锁存时间 = 时钟基准2(10ns)+T_{clk2}(2ns) – 建立时间(1.4ns)= 10.6ns 

因此可以知道,

建立时间余量 =  数据锁存时间 – 数据到达时间 = 6.6ns(即图中蓝色部分)

        只要建立时间裕量是正值,则说明我们的设计是符合要求的,如果为负值则说明不满足建立时间的要求,容易产生亚稳态等问题。 

保持时间裕量

 

         保持裕量的计算和建立裕量差不多,其核心为:

保持时间裕量 = 数据保持时间 – 数据锁存时间 

对于数据保持时间:

数据保持时间 = 数据到达时间(4ns) + 数据周期时间(Sig In = 10ns) = 14ns

对于数据锁存时间:

数据锁存时间 =  时钟基准2(10ns)+T_{clk2}(2ns) + 保持时间(1.4ns)= 13.4ns  

因此,数据的保持时间裕量:

保持时间裕量 = 数据保持时间 – 数据锁存时间 = 0.6ns 

        如果保持时间裕量为负,则说明数据在保持时间之前就发生了改变,因此将不满足保持时间的要求。

学习计算裕量的目的

        其实,在开发过程中并不需要我们去手工计算裕量,因为EDA软件将帮助我们计算。那为什么我们还要学习裕量的计算呢?其实这就是一种“从哪里来,到哪里去”的道理,我们心中要明白,这个时序裕量是怎么计算的,当我们遇到不满足裕量要求的情况时,我们能明确地知道问题的出处,以及解决问题的方法。

物联沃分享整理
物联沃-IOTWORD物联网 » 深入理解建立/保持时间裕量在时序分析中的作用

发表评论