【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,沒准可以測試一下基本功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM