【Basking Rootwalla】真正理解setup time/hold time(二)

算是转的原文 http://www.edaboard.com/thread139461.html#post604717

核心就是setup time和hold time

HOLD violations are dangerous than SETUP.

To keep it simple way, SETUP timing depends on the frequency of operation. But HOLD time is not.

先来定义几个后面会用到的变量

Tclk    = Frequency of operation (can be variable)
Tcq     = Flop clock to Flop q delay (fixed/constant)
Tcomb   = Delay on the combinational logic between the Flops (can be variable)
Tsetup  = Setup time of a Flop (fixed/constant)
Thold   = Hold time of a Flop (fixed/constant)
Tskew   = Delay between clock edges of two adjacent flops (delay offered by clock path) (can be variable)

 

一、首先来看setup time,其正常工作要满足的公式为

Tclk > Tcq + Tcomb + Tsetup - Tskew

如果出现了setup violation那么就意味着上面的公式变成了

Tclk < Tcq + Tcomb + Tsetup - Tskew

我们分两种case来考虑出现的setup violation,

1. 设计电路的过程中

在设计时,可以看到,上面的式子中,我们有3个变量可以来操作,Tclk, Tcomb, Tskew

  1)这里首先的想法是增大Tclk,就是降低系统的工作频率此时就可以令式子满足条件,但是往往这个是不科学的,一般都是最后才想到要降低系统时钟频率来来满足setup time

  2)减小Tcomb,具体就像什么pipeline或者是在不改变逻辑功能的前提下,改变成其他样式的组合逻辑,进行组合逻辑的优化,或者是改变扇出系数使得延时减小,或者是增大cell的尺寸来使得延时减小都是可以施行的措施。

  3)增大Tskew,就是在时钟路径上插入buffer来使得Tskew变大,当然是在不影响hold timing的情况下。

2. 芯片回来了

看上面的式子,在芯片回来时,我们能改变的就只有Tclk,相当于我们只能使得工作频率降低,来使得setup violation消除。

 

二、再看hold time,其正常工作的公式为

Thold < Tcq + Tcomb - Tskew

如果hold violation出现就意味着

Thold > Tcq + Tcomb - Tskew

此时电路的Thold不被满足,还是分两种case来讨论

1. 设计过程中

对于上面的式子,有两个变量可以操作,就是Tcomb和Tskew

  1)增大Tcomb,那么能做的就是在data path上面插入buffer来增加组合逻辑延时,但是相对的,当你插入buffer增大延时的时候,相应的setup time就会变差,相当于是一个tradeoff了。所以通常这不是一个最好的选择(So this may not be the perfect solution always)。

  2)减小Tskew,这个方法通常都依赖于PR工程师了,所以一般都是在PR的时候来修正hold time。

2. 流片归来

看看上面的式子,你手上还有牌可出么?没有,所以在流片回来时,如果hold violation出现,那么你就什么都做不了了(等死吧,孩子)。所以才说hold violation要比setup violation更可怕。但是另一方面,你也可以给芯片提供一个ss的条件(当然只是一个临时的权宜之策),比如给芯片一个低电压,高温来使得芯片的延时都变大,避过hold violation,没准可以测试一下基本功能。

posted @ 2012-10-29 21:19  poiu_elab  阅读(13281)  评论(0编辑  收藏  举报