更新於20180823
時序檢查中對異步復位電路的時序分析叫做()和()?
這個題做的讓人有點懵,我知道異步復位電路一般需要做異步復位、同步釋放處理,但不知道這里問的啥意思。這里指的是恢復時間檢查和移除時間檢查。
在開始之前需要先搞明白的一點是為什么要保持建立時間和保持時間大於零,不滿足的話會怎么樣呢?
首先需要明白的一點就是D觸發器的構造,D觸發器實際上是由一個傳輸門加上反相器組成的雙穩態電路組成的如下圖:
這個電路的工作情況:clk為低電平的時候傳輸門T1導通,T2關斷,輸入數據D會被鎖存到Qm處。然后在clk為高電平的時候,T1關斷,T2導通,輸入數據Qm傳輸到Q上面去。這個過程實際上就是在時鍾上升沿的時候將D數據 轉移到Q上面去。
建立時間指的是在T1導通T2關斷的時候,輸入數據D到達Qm所用的時間,假設這個時候D沒有到達Qm,會導致其輸出的是原先的值,或者是錯誤的值,保持時間指的是在T1關斷,T2導通的時候,Qm 到達Q用的時間,假設輸入D沒有在sclk到達后保持這么長的時間的話,加入變化的快的話,D變化導致的Qm變化從而使得輸出的Q采集到不正確的值,這也是亞穩態的一種吧。還有一種情況就是反相器的I1 的輸入端因為D輸入變化而使得Qm電壓波動,這個波動會在T2導通后傳輸到Q端
一、時序分析
首先需要明確的是深入理解什么是建立時間,什么是保持時間,還是用圖來說話
Tsu:保證數據在時鍾采樣是是穩定的,決定了該觸發器之間組合邏輯的最大延遲
Th:保證數據能准確的被采樣,決定了該觸發器之間組合邏輯的最小延遲
在實際上做時序分析的時候可以分兩類分別分析
1.組合邏輯的時序分析:電路上的延時是加性的
2.時序邏輯的時序分析:電路上的延時是非加性的
一個典型的模型在實際電路中,通常是時序邏輯和組合邏輯的結合,保證兩種電路之間的數據傳輸沒有問題的關鍵是要保證滿足建立時間和保持時間之間的關系。,也就是說對於D2而言,它的建立時間和保持時間與D1的建立保持時間無關,只取決於D2的組合邏輯延時以及D1 的傳輸延時。
例題:假設第一個觸發器的D1的建立時間最大值為T1max,最小為T1min,組合邏輯的延時最大為T2max,最小為T2min,請問第二個觸發器D2的建立時間和保持時間瞞住的關系。
圖中tco指的是觸發器從0翻轉到1所用的時間,有的地方叫tdq
Tdelay指的是組合邏輯的延時,tpd是時鍾傳輸的延時,但實際上在FPGA中這部分的延時已經做到了很小了完全可以忽略掉的,有的地方叫tskew
進入正題開始分析:用時序電路圖的方法,先假設tpd為零
對於D2的建立時間可以畫圖:
建立時間滿足公式:Tco+Tdelay+T3<T T3<T-Tco-Tdelay 那么這里的Tco和Tdelay應該取max
保持時間與建立時間滿足公式Th+Tsetup=Tclk,因此,可以得到T4<Tco+Tdelay這里取min
把時鍾延時加上,即Tpd!=0時,有如下時序圖:
可以計算的到,建立時間放寬了Tpd,為Tclk+Tpd-(Tco+Tdelay)>=T3,Th減小為Tco+T2min-Tpd。
總結:
簡易公式:
以下兩個公式確定了D2的Tsetup和Thold:
1) D1的Tco + max數據鏈路延時+D2的Tsetup<T(T3<T-Tco-T2max)
2)D1的Tco + min數據鏈路延時>D2的Thold(T4<Tco+T2min)
實際中,某條數據鏈路的延時是一個定值,不過要求它在{T2min-T2max}之間
二、關於約束條件:
建立時間約束:
(1)式的思想其實就是在第二個時鍾沿來臨之前,數據穩定的時間一定要大於等於建立時間。因此在一個時鍾周期內,數據穩定的時間為Tclk-Tdq-Tcomb,因為時鍾也存在偏移,因此要把這個時鍾偏移加上,於是最后數據穩定的時間為Tclk+Tskew-Tdq-Tcomb,滿足這個穩定時間大於建立時間即可,因此推導出了(1)式,進而可以推導出在已知建立時間、組合邏輯延時、D觸發器延時、時鍾偏移的情況下,理論上能夠承載的最大時鍾頻率為:
f_max = 1/(Tsetup+Tdq+Tcomb-Tskew)
這個關系式對於電路設計和芯片選型方面都有着非常大的幫助。當然,在實際工程中還要根據實際情況留有一定的設計余量以應對短暫的非常規情況。
保持時間約束:
(2)式的思想為在第二個時鍾沿來臨之后,數據穩定的時間一定要大於等於保持時間。因此在時鍾沿來臨之后,數據穩定的時間為Tdq+Tcomb,再減去時鍾偏移則為Tdq+Tcomb-Tskew,滿足這個穩定時間大於等於保持時間即可。
最后聯立(1)(2)式我們可以推導得出:
組合邏輯延時范圍:
Thold+Tskew-Tdq<=Tcomb<=Tclk-Tdq+Tkew-Tsetup
時鍾偏移范圍:
Tsetup-Tclk+Tdq+Tcomb<=Tskew<=Tdq+Tcomb-Thold
三、補充問題:
關於Tco大小分析:
與()有關呢,如何提高這部分的性能,對於組合邏輯呢,翻轉的速度如何確定,如何提高?
假設數據是咋上升沿進行的采樣,那么只需要保證數據在時鍾上升沿到來前數據保持穩定,以及時鍾上升沿后數據保持穩定,那么我們知道數據是在上升沿到來的那一瞬間被打入到觸發器進而采樣的,那么我們只要保證這一瞬間數據穩定不就行了么?理論上沒啥問題,但實際上我們需要考慮D觸發器的內部結構
圖二是經典上升沿D觸發器的內部結構圖:
與非門G1到G4是維持阻塞電路,G5和G6構成一個RS觸發器用於數據的鎖存。如有不明白RS觸發器的真值表和工作機理的可以在網上找到資料,這里不再累述。
圖中可以看到,時鍾信號直接作用在了G2和G3上面,也就意味着G2和G3是真正的采樣傳輸門電路,輸入信號應該要正確的被G2和G3采樣后傳輸至后面的RS觸發器。我們注意到,數據在傳輸到G3之前經過了G4,傳輸至G2之前經過了G4和G1。我們知道,實際情況中信號經過門電路是有延遲的。所以輸入信號在到達G2和G3之前經過了G1和G4的延遲,因此就引入了建立時間的概念:建立時間就是為了補償信號在G1和G4上的延遲。也就是數據在時鍾沿來臨之前,需要足夠的建立時間讓信號經過G1和G4到達G2和G3。觸發器的建立時間主要取決於G1和G4.
那么保持時間呢?一樣的,上升沿來臨時,數據通過G2和G3傳輸至后面的RS觸發器,但G2和G3也會存在延時。因此又引入了保持時間的概念:保持時間就是為了補償信號在G2和G3上的延遲。也就是數據在時鍾沿來臨之后,需要足夠的保持時間讓信號正確的從G2和G3傳輸至RS觸發器。觸發器的保持時間主要取決於G2到G3,進而可以推斷出,一般D觸發器的保持時間比建立時間要長。
也許有人問,如果不滿足建立時間和保持時間會怎樣?很簡單,因為在傳輸的過程中數據並不是處於穩定狀態而處於亞穩態區,則會導致采樣的數據可能會出錯。
觸發器可以將hold time減小到0
此外關於自己在SDC文件中的約束
setup violation
主要就是設法剪掉critical path的delay,要么pipeline(流水線分一下),要么retiming,要么把combination往前后級挪一挪。減小傳輸延時,降低時鍾頻率。
hold time violation
hold time violation是clock tree的skew引起的。主要的宗旨就是設法加前面一級combination的delay,比如加buffer什么的。這時候hold time不滿足必須讓前前面延遲大一些,並大到比clock period還大出至少一個hold time來。也可以適當把clock period縮小。不過hold time並不是自己能控制的,挺鬧心的。或者可以減小時鍾延時。
在綜合時,綜上所述,
setup violation是由於前級組合的延遲過大引起的,因此要用set_max_delay來限制,
hold violation是由於前級組合延遲過小引起的,因此不能讓他太小,要用set_min_delay來限制。
再進一步分析下建立時間保持時間不滿足發生的情況:
建立時間不滿足是因為組合邏輯延時過於長,而保持時間不滿足是因為邏輯團延時過小,建立時間保持時間都不滿足發生在異步時鍾域中一個講的非常直觀的PPT乍就沒有早點看到這些東西,還是自己太懶了http://www.docin.com/p-977469569-f7.html