如何計算setup/hold

1、基本概念

靜態(tài)時序分析中最基本的就是setup和hold時序分析,其檢查的是觸發(fā)器時鐘端CK與數(shù)據(jù)輸入端D之間的時序關(guān)系。

(1)Setup Time

setup time是指在時鐘有效沿(下圖為上升沿)之前,數(shù)據(jù)輸入端信號必須保持穩(wěn)定的最短時間。

圖1 觸發(fā)器的setup要求

(2)Hold time

hold time是指在時鐘有效沿(下圖為上升沿)之后,數(shù)據(jù)輸入端信號必須保持穩(wěn)定的最短時間。hold time時序檢查確保新數(shù)據(jù)不會在觸發(fā)器穩(wěn)定輸出初始數(shù)據(jù)之前過早到達(dá)D端而覆蓋其初始數(shù)據(jù)。

圖2 觸發(fā)器的hold要求

2、Setup & Hold詳細(xì)分析

以圖3為例,分析建立時間及保持時間。發(fā)送數(shù)據(jù)的觸發(fā)器稱為Launch flip-flop,接收/捕獲數(shù)據(jù)的觸發(fā)器稱為Capture flip-flop。兩觸發(fā)器時鐘端信號為同一時鐘。

如圖3所示,launch_path為:

CLKM→BUF(launch)→UFF0/CK→UFF0/Q→Comb_logic→UFF1/D;

capture path為:

CLKM→BUF(capture)→UFF1/CK;

圖3 兩個觸發(fā)器(flip-flop)組成的簡單電路

(1)Setup Time

兩觸發(fā)器間的數(shù)據(jù)傳輸通常在一個時鐘周期內(nèi)完成。

數(shù)據(jù)到達(dá)UFF1/D所需時間Arrival time為:

Ta = T_launch + T_ck2q + T_dp

滿足setup要求時所允許的最長時間Required time為:

Tr = T_capture + T_clk - T_setup

因此setup time要求可表示為:Tr - Ta = T_margin >= 0。

根據(jù)圖4,setup time要求還可表示為:

T_launch + T_ck2q + T_dp + T_margin + T_setup = T_capture + T_clk

其中:

T_launch:CLKM到UFF0時鐘端CK的延時

T_ck2q:UFF0的CK->Q的傳輸時間

T_dp:組合邏輯延時

T_margin:設(shè)計裕量

T_setup:UFF1的setup時間要求

T_capture:CLKM到UFF1時鐘端CK的延時

T_clk: 時鐘周期

由此可見,setup檢查發(fā)生在不同時鐘邊沿,與時鐘頻率有關(guān)。

(2)Hold Time

數(shù)據(jù)到達(dá)UFF1/D所需時間Arrival time為:

Ta = T_launch + T_ck2q + T_dp

滿足hold要求時所允許的最短時間Required time為:

Tr = T_capture + T_hold

因此hold time要求可表示為:Ta - Tr = T_margin >= 0。

根據(jù)圖4,hold time要求還可表示為:

T_launch + T_ck2q + T_dp = T_capture + T_hold + T_margin

其中:

T_launch:CLKM到UFF0時鐘端CK的延時

T_ck2q:UFF0的CK->Q的傳輸時間

T_dp:組合邏輯延時

T_hold:UFF1的hold時間要求

T_margin:設(shè)計裕量

T_capture:CLKM到UFF1時鐘端的延時

T_clk: 時鐘周期

由此可見,hold檢查發(fā)生在同一時鐘邊沿,與時鐘頻率無關(guān)。

圖4 setup & hold時序分析

(3)總結(jié)

setup time是針對Capture edge來說,待傳輸數(shù)據(jù)不能來太晚;hold time是針對Capture edge來說,新數(shù)據(jù)不能來太早,以確保待傳輸數(shù)據(jù)保持一段時間。總結(jié)為一句話:當(dāng)前待傳輸?shù)臄?shù)據(jù),相對于Capture edge來說,必須早來(setup time)晚走(hold time)。

3、Setup & Hold違例解決方法

(1)Setup需滿足以下條件:

T_launch + T_ck2q + T_dp + T_setup <= T_capture + T_clk

記Clock Skew: T_skew = T_capture- T_launch,即:

T_ck2q + T_dp + T_setup <= T_skew + T_clk

因此,setup violation修復(fù)方法包括:

① T_clk:增加T_clk,也就是降頻

② T_dp:優(yōu)化組合邏輯延時,具體包括:

a. 增加一個中間觸發(fā)器來切割Timing Path,分割組合邏輯延時(流水線結(jié)構(gòu))

b. 對于有較大負(fù)載的節(jié)點可以考慮插buffer、邏輯復(fù)制的方法來優(yōu)化扇出,減少關(guān)鍵路徑上的負(fù)載(插Buffer,邏輯復(fù)制)

c. 小Cell換成大Cell,更換更大驅(qū)動的Cell,增強(qiáng)驅(qū)動能力

d. 更換SVT/LVT的Cell

③ T_skew:采用positive skew(T_skew >0),但是要注意可能引入的hold問題,以及前后級的margin問題

④ T_ck2q:更換更快的時序邏輯單元,如HVT->LVT

(2)Hold需滿足以下條件:

T_launch + T_ck2q + T_dp >= T_capture + T_hold

記Clock Skew: T_skew = T_capture- T_launch,即:

T_ck2q + T_dp >= T_skew + T_hold

因此,hold violation修復(fù)方法包括:

① T_dp:增加組合路徑延時,通過插buffer、插delay cell、更換驅(qū)動、更換閾值的方法(組合邏輯深度的增加會增加芯片的面積、布線資源、功耗,可能產(chǎn)生在慢速工藝庫條件下建立時間違例)

② T_skew:減小skew,甚至采用negative skew,但需做好時鐘樹的balance。

③ 插入低電平有效的鎖存器(Lock-up Latch):高電平期間,鎖存器輸出保持不變,相當(dāng)于人為將數(shù)據(jù)推遲了半個時鐘周期,以保證滿足hold時間要求。

原文鏈接:https://zhuanlan.zhihu.com/p/278523793

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容