在后仿真過程中經(jīng)常會遇到關(guān)于setup和hold violation的問題,但是關(guān)于setup和hold time的產(chǎn)生原因和由來很多人還比較朦朧,為此本文通過解剖一個邊沿觸發(fā)器簡要說明setup和hold產(chǎn)生原因。
解剖示例
上圖為觸發(fā)器的簡要示意圖(clk和’clk為反向時鐘)。T1和T4同時導(dǎo)通,T2和T3同時導(dǎo)通,且T1、T4和T2、T3導(dǎo)通狀況互反。其中T1、T2、T3、T4均為傳輸門,均為電平敏感,所以所謂的時鐘跳變可以理解為高低電平的相互跳變所致。而電路中實際的延時信息主要由于電信號導(dǎo)通時通過電子器件時耗費(fèi)的時間。
【注】傳輸門的開關(guān)狀態(tài)如下圖所示。
工作過程
clk和’clk互為相反的信號,clk為低電平(’clk為高電平)時,T1和T4導(dǎo)通,此時數(shù)據(jù)進(jìn)入到`D和``D,因為此時T4導(dǎo)通,圖中綠色箭頭線中的數(shù)據(jù)保持上一拍的數(shù)據(jù)結(jié)果。 當(dāng)clk高電平(’clk為低電平)到來時,T1和T4關(guān)斷,T2和T3導(dǎo)通,②中的數(shù)據(jù)維持穩(wěn)定,通過T3輸出至Q端,同時B點(diǎn)、’Q和’’Q點(diǎn)的數(shù)據(jù)保持一致穩(wěn)定;當(dāng)?shù)碗娖降絹頃r,T2和T3關(guān)斷,T1和T4導(dǎo)通,此時B點(diǎn)、’Q(Q)和’’Q點(diǎn)數(shù)據(jù)一直穩(wěn)定,因此可以保證綠色箭頭線部分有穩(wěn)定一致的數(shù)據(jù)通過Q端發(fā)送出去。
所以,可以看到在上跳沿采樣的數(shù)據(jù)可以保持一個時鐘周期。通過上述分析,我們可以看到一個邊沿觸發(fā)器實際上可以解剖為兩個鎖存器,后續(xù)分析時也會用到這種結(jié)構(gòu)特點(diǎn)。 一般觸發(fā)器setup和hold的產(chǎn)生,就跟上述觸發(fā)器的工作過程密切相關(guān),下面一塊來看看兩者之間的聯(lián)系。
setup和hold蹤跡
下圖為陰影區(qū)域為timing violation區(qū)。
clk上跳沿之前
setup時間(tsu):輸入數(shù)據(jù)D在時鐘上升沿之前必須保持不變的時間。為了得到有效的數(shù)據(jù),必須保證A點(diǎn)、`D和``D點(diǎn)的數(shù)據(jù)保持一致穩(wěn)定,否則在T2導(dǎo)通時將會形成振蕩電路。當(dāng)T1打開時,輸入信號經(jīng)過T1后分別到達(dá)A點(diǎn)、`D和``D點(diǎn),并且保持一致,耗費(fèi)的時間為Ts,時鐘從低電平跳變到高電平需要耗費(fèi)時間為Tc,因此,為了保持?jǐn)?shù)據(jù)的有效和電路的穩(wěn)定,輸入數(shù)據(jù)需要保持的時間至少應(yīng)該為Ts,如果不滿足將會在T2導(dǎo)通時,A點(diǎn)、`D和``D點(diǎn)的值不同,從而可能會產(chǎn)生亞穩(wěn)態(tài)。因此,可以這樣理解,所謂的建立時間是指輸入數(shù)據(jù)D經(jīng)過多長時間才能使`D的數(shù)據(jù)穩(wěn)定可靠。所以setup指的是數(shù)據(jù)從D到達(dá)``D的時間。
clk上跳沿之后
hold時間(thold):在時鐘上升沿到達(dá)后,輸入數(shù)據(jù)需要保持穩(wěn)定的時間。在clk上跳沿發(fā)生之后,T1和T4關(guān)閉,T2和T3打開,數(shù)據(jù)從Q端輸出。但是需要注意,因為T1關(guān)閉需要時間,所以在T1和T4關(guān)閉到T2和T3打開輸入數(shù)據(jù)必須保持穩(wěn)定,如果A點(diǎn)的數(shù)據(jù)受到D點(diǎn)的影響,從而導(dǎo)致A點(diǎn)和D點(diǎn)數(shù)據(jù)不一致,也就是在上跳沿發(fā)生后,即T2、T3導(dǎo)通時,②中循環(huán)的數(shù)據(jù)不能保持穩(wěn)定一致,從而導(dǎo)致Q端數(shù)據(jù)不穩(wěn)定。因此,thold可以理解為D端數(shù)據(jù)通過T1,再經(jīng)過②到達(dá)A點(diǎn),保證A和`D點(diǎn)數(shù)據(jù)一致穩(wěn)定的時間。 上面是對setup和hold產(chǎn)生原因的一些簡單介紹,有些朋友可能會問,上文中setup和hold感覺都是正值,為什么我在仿真的時候遇到過setup或者h(yuǎn)old為負(fù)值的情況呢?為了探討方便,此處以常用到的一種觸發(fā)器(由兩個鎖存器組成)為例進(jìn)行簡單的說明。
hold time為負(fù)值
當(dāng)data從pin到鎖存數(shù)據(jù)的鎖存器的delay時間大于clock從pin到達(dá)鎖存器CK端的delay時,那么當(dāng)D結(jié)束于CLK上升沿之前,此時從REGISTER層面觀測到的hold為負(fù)值,而實際上在鎖存數(shù)據(jù)的鎖存器端,由于之前data延遲大于clock延遲,CLK'對D'進(jìn)行控制時,D'相對于CLK'一直保持到CLK'為高電平之后,也就是此時hold為正值,出現(xiàn)在上升沿右側(cè)。
setup time為負(fù)值
當(dāng)data從pin到鎖存數(shù)據(jù)的鎖存器的delay時間小于clock從pin到達(dá)鎖存器CK端的delay時,那么當(dāng)D開始于CLK上升沿之后,此時從REGISTER層面觀測到的setup為負(fù)值,而實際上在鎖存數(shù)據(jù)的鎖存器端,由于之前data延遲小于clock延遲,CLK'對D'進(jìn)行控制時,D'出現(xiàn)在了CLK'之前,也就是此時setup為正值,出現(xiàn)在上升沿左側(cè)。
審核編輯:劉清
-
鎖存器
+關(guān)注
關(guān)注
8文章
906瀏覽量
41564 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61261 -
CLK
+關(guān)注
關(guān)注
0文章
127瀏覽量
17190 -
邊沿觸發(fā)器
+關(guān)注
關(guān)注
0文章
34瀏覽量
4008
原文標(biāo)題:說說setup和hold violation
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論