• 一起学时序分析之建立/保持时间裕量


    何为裕量?

            裕量,英文名称叫做“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软件将帮助我们计算。那为什么我们还要学习裕量的计算呢?其实这就是一种“从哪里来,到哪里去”的道理,我们心中要明白,这个时序裕量是怎么计算的,当我们遇到不满足裕量要求的情况时,我们能明确地知道问题的出处,以及解决问题的方法。

  • 相关阅读:
    ChatGPT提示词(prompt)资源汇总
    打不开github网页解决方法
    Linux应用程序对异步通知的处理
    [Pytorch] 保存模型与加载模型
    491. 递增子序列
    扩展点系列之ApplicationContextAwareProcessor普通类获取Spring Bean - 第433篇
    Kotlin let run with apply also 关键字
    Redis
    【MATLAB】(高数)
    06、JavaWeb启程——MyBatis基础
  • 原文地址:https://blog.csdn.net/weixin_54358182/article/details/128129367