后端Timing基礎概念之:為什么時序電路要滿足setup和hold?


下圖是上升沿觸發的D觸發器的一種典型的基於傳輸門的設計原理:

 

 

首先我們先把注意力集中在電路的前半部分。

假設CLK的初始狀態為0,此時第一個傳輸門導通,信號走向為:

        D -> a -> b -> c -> d   注:路徑1

從以上信號走向可以看出,信號必須在CLK上升沿到來之前在d點保持穩定,否則如果在這之前D pin的信號發生變化,就會導致DFF鎖住錯誤的信號。換句話說,如果假設路徑1需要花費的時間為t0,那么D處的信號必須要在CLK上升沿之前的t0或更早的時間內保持穩定。此即setup的物理意義,也是timing report種library setup time所代表的含義。

 

接着,當CLK從0變成1后,D與a之間的傳輸門關閉,a與d之間的傳輸門導通,此時信號走向為:

        d -> a -> -> b -> e -> f(Q) -> g -> h

需要注意的是,當信號從0變為1的過程中,在一段很短的時間內,所有傳輸門都可能導通,若此時D端信號發生變化而CLK的transition比較慢,則會發生新值覆蓋舊值而導致信號錯誤的現象。因此,D段信號需要在傳輸門完成開/關過程中保持穩定,此即為hold的物理意義,也是timing report中library hold time代表的含義。

 

現在我們從DFF的構造上分析了setup和hold的原理,請大家思考這樣一個問題:從上面的描述可以看出,library setup time和library hold time應該都是正值,但是它們是否有可能是負值?如果有可能,在什么情況下會為負呢?

 

 

3. setup和hold為負值淺析

為了探討方便,此處將觸發器解剖為兩個鎖存器用以分析,該觸發器原理圖如圖3所示。

 

 3.1 hold time為負值

當data從pin到鎖存數據的鎖存器的delay時間大於clock從pin到達鎖存器CK端的delay時,那么當D結束於CLK上升沿之前,此時從REGISTER層面觀測到的hold為負值,而實際上在鎖存數據的鎖存器端,由於之前data延遲大於clock延遲,CLK'對D'進行控制時,D'相對於CLK'一直保持到CLK'為高電平之后,也就是此時hold為正值,出現在上升沿右側。

 

 

3.2 setup time為負值

當data從pin到鎖存數據的鎖存器的delay時間小於clock從pin到達鎖存器CK端的delay時,那么當D開始於CLK上升沿之后,此時從REGISTER層面觀測到的setup為負值,而實際上在鎖存數據的鎖存器端,由於之前data延遲小於clock延遲,CLK'對D'進行控制時,D'出現在了CLK'之前,也就是此時setup為正值,出現在上升沿左側。

 

 

問:library setup time和library hold time應該都是正值,但是它們是否有可能是負值?如果有可能,在什么情況下會為負呢?

答:在實際設計中,它們均可能為負值,其根本原因在於當前很多DFF的標准單元中並非純粹的D觸發器結構,而是會包含數量不等的buffer/inverter。詳細的內容請參看我收藏的這篇文章:

https://pan.baidu.com/s/1xLbwl1KnbuOUSZtiIBnmSw


免責聲明!

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



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