FPGA时序约束建立时间与保持时间概念
建立時間(setup time)是指在觸發器的時鐘信號上升沿到來以前,數據穩定不變的時間,如果建立時間不夠,數據將不能在這個時鐘上升沿被打入觸發器;
保持時間(hold time)是指在觸發器的時鐘信號上升沿到來以后,數據穩定不變的時間,
如果保持時間不夠,數據同樣不能被打入觸發器。
建立時間不滿足,只能重新綜合設計,并以違例路徑為目標進行優化,以及對涉及到違例的組合邏輯以及子模塊加緊約束。
保持時間不滿足,可在布圖前或者布圖后再修改這些違例,通常布圖后再修改。因為布圖前綜合,時序分析采用統計線載模型,在布局前修正保持時間違例可能會導致布圖后建立時間違例。
1、setup time的意義:為什么Data需要在Clock到達之前到達?
? ???其實在實際的問題中,setuptime并不一定是大于零的,因為Clock到達時刻并不等同于latch的傳輸門A關閉的時刻(更何況這種關閉并不是絕對的和瞬間完成的),這之間有一個未知的延遲時間。
????為使問題簡化,假設Clock的到達時刻為傳輸門A關閉、傳輸們B打開的時刻。如果Data沒有在這之前足夠早的時刻到達,那么很有可能內部的feedback線路上的電壓還沒有達到足夠使得inv1翻轉的地步(因為inv0有延時,Data有slope,傳輸門B打開后原來的Q值將通過inv2迫使feedback保持原來的值)。如果這種競爭的情況發生,Q的舊值將有可能獲勝,使Q不能夠寄存住正確的Data值;當然如果feedback上的電壓已經達到了足夠大的程度也有可能在競爭中取勝,使得Q能夠正確輸出。
? ???如果inv0、inv1和inv2的延時較大(Data的變化影響feedback和Q的時間越長),那么為了保證正確性就需要更大的setuptime。所以在實際測量setup time的時候,需要選取工藝中最慢的corner進行仿真測量。
2、hold time的意義:為什么Data在Clock到達之后仍然要保持一段時間?
? ???和setuptime的情況不一樣,因為Clock到達時刻并不等同于latch的傳輸門A完全關閉的時刻。所以如果Data沒有在Clock到達之后保持足夠長的時間,那么很有可能在傳輸門A完全關閉之前Data就已經變化了,并且引起了feedback的變化。如果這種變化足夠大、時間足夠長的話,很有可能將feedback從原本正確的低電壓拉到較高電壓的電壓。甚至如果這種錯誤足夠劇烈,導致了inv1和inv2組成的keeper發生了翻轉,從而徹底改變了Q的正確值,就會導致輸出不正確。當然,如果這種錯誤電壓不是足夠大到能夠改變keeper的值,就不會影響到Q的正確輸出。
? ???如果inv0、inv1和inv2的延時較小(Data的變化影響feedback和Q的時間越短),那么為了保證正確性,就需要更大的holdtime。所以在實際測量holdtime的時候,需要選取工藝中最快的corner進行仿真測量。
?
時鐘周期為T,觸發器D1的時鐘沿到來到觸發器Q變化的時間Tco(CLK--Q)最大為T1max,最小為T1min,邏輯組合電路的延遲時間最大為T2max,最小為T2min,問觸發器D2的建立時間和保持時間。
最終答案:T3setup
maxbird:D2的保持時間就是時鐘沿到來之后,D2的數據輸入端要保持數據不變的時間,這個時間是由D1和D2之間的組合邏輯時延決定的。例如:假設D1和D2之間的組合邏輯時延為2ns,時鐘周期為10ns,這意味著在時鐘沿來到后,D1輸出的新數據要過2ns才會到達D2的數據輸入端,那么在這2ns內,D2的數據輸入端保持的還是上一次的舊數據,其值不會立即更新,假設D2的最小保持時間為3ns,這意味時鐘沿到來后,D2的數據輸入端的值在3ns內不能有變化,回到問題的關鍵,由于D1在時鐘沿到來后的輸出結果,經過2ns的組合邏輯延時便到達了D2的輸入端,而D2要求在時鐘沿到來后的3ns內其輸入端的值不能改變,這樣D2的保持時間就得不到滿足,所以D2的保持時間必須小于等于2ns。至于說T2min為0時的情況,其實T2min是永遠不能為0的,即使是一根導線其時延也是不可能為0的,這就是為什么移位寄存器的兩個觸發器之間連的只是一根導線,導線后端觸發器的保持時間卻還是可以滿足的原因,其實移位寄存器中觸發器的保持時間可以看成是小于等于其間導線的時延。
建立時間:觸發器在時鐘沿來到前,其數據輸入端的數據必須保持不變的時間;保持時間:觸發器在時鐘沿來到后,其數據輸入端的數據必須保持不變的時間。
因為觸發器內部數據的形成是需要一定的時間的,如果不滿足建立和保持時間,觸發器將進入亞穩態,進入亞穩態后觸發器的輸出將不穩定,在0和1之間變化,這時需要經過一個恢復時間,其輸出才能穩定,但穩定后的值并不一定是你的輸入值。這就是為什么要用兩級觸發器來同步異步輸入信號。這樣做可以防止由于異步輸入信號對于本級時鐘可能不滿足建立保持時間而使本級觸發器產生的亞穩態傳播到后面邏輯中,導致亞穩態的傳播。兩級觸發器可防止亞穩態傳播的原理:假設第一級觸發器的輸入不滿足其建立保持時間,它在第一個脈沖沿到來后輸出的數據就為亞穩態,那么在下一個脈沖沿到來之前,其輸出的亞穩態數據在一段恢復時間后必須穩定下來,而且穩定的數據必須滿足第二級觸發器的建立時間,如果都滿足了,在下一個脈沖沿到來時,第二級觸發器將不會出現亞穩態,因為其輸入端的數據滿足其建立保持時間。同步器有效的條件:第一級觸發器進入亞穩態后的恢復時間 + 第二級觸發器的建立時間 < =時鐘周期。(編者注:maxbird在該部分詳細說明了建立時間和保持時間的概念,以及如果不滿足二者可能導致的亞穩態的傳播。注意這里說的建立時間和保持時間都是針對時鐘而言的,在進行時序約束時所指的就是這種,而很多網友以前學習的建立時間保持時間的概念是針對信號而言的,所指的對象不同,分析出來的結論完全相反,一定注意不要混淆。)
保持時間和建立時間
**保持時間和建立時間** ?在描述保持時間和建立時間之前我們首先需要了解為什么需要保持時間和建立時間,通俗的說就是在時鐘信號來臨之前,傳輸給寄存器的信號必須保持穩定,有效,才可以打入觸發器,稱為建立時間;時鐘沿來了之后,信號必須維持穩定一段時間,使得信號能夠正確被打入觸發器; ? ?
下面我們就經典的D觸發器來解釋這一現象: ?
? ? ? ? ?當CLK=1,D=0時,則G6輸出為1,G5輸出為0,G3輸出為1,G4輸出為0,最后Q=0; ? ? ? 當CLK=1,D=1時,則G6輸出為0,G5輸出為1,G3輸出為0,G4輸出為1,最后Q=1; ?我們可以看到為了得到G3和G4的值,則在CLK =1,之前,必須先得出G5,G6的值,也就是說在時鐘上升沿來臨之前,D值必須經過G6,G5,也就是所謂的建立時間; ??
那么保持時間就是:在時鐘來臨之后,D值不能改變,必須維持原來的值,直到G4輸出值返回給G6的輸入端之后,D值才允許改變,此時即使D改變也不會影響G3,G4的輸出; ?以上描述是基于觸發器層面上的,下面我們在通過寄存器層次來描述建立時間和保持時間; ? ?
首先先看一張同步設計的基本模型圖
我們假設T1,T2寄存器是一條路徑上的相連的兩個寄存器,數據輸入到T1經過1個clk之后,傳輸到T2; ?Tco為經過寄存器T1的傳輸延時; Tdelay為經過組合邏輯的傳輸延時; Tsetup為T2的建立時間; ?Tpd為時鐘到T1和T2的偏差; 在一個時鐘周期T之內,數據從寄存器T1傳出,需要經過延時Tco,然后經過組合邏輯,需要經過延時Tdelay,最后到達寄存器T2,然后在寄存器T2建立起來,需要經過延時Tsetup(這個延時我們在之前已經講解過為什么了),那么可以得出建立時間的要求: ? ?
?Tsetup <= Tpd+ T – Tco(max)-Tdelay(max);?
這里我們需要注意的是max,因為經過寄存器和組合邏輯有一個最大延遲和最小的延遲,對于建立時間來說,考慮到最惡劣的情況就是必須考慮到這些最大的延遲;之所以需要加上Tpd是因為時鐘也有可能存在著傳輸的偏移; ?
保持時間Thold,我們在上面已經描述過了為什么需要保持時間,現在我們知道T2的輸入在時鐘上升沿來之后必須保持一段時間的穩定,也就是說輸入值不能發生改變,此時T1寄存器的值經過Tco,經過組合邏輯Tdelay,才到達T2,那么可以得出保持時間的要求: ? ?
Thold <= Tco(min) + Tdelay(min); ?
這里為什么是min,因為我們需要考慮到下一個信號最快傳輸到T2的情況,那么最小的延時也就是代表著最快的傳輸; ? ?
參考文獻:?
?1. 數字電子技術基礎.(閻石,第五版)
?2. ~~~建立時間與保持時間(兩個寄存器的詳細分析) - yuedx的個人空間 - 中國電子頂級開發網(EETOP)-電子設計論壇、博客、超人氣的電子工程師資料分享平臺 - Powered by X-Space.htm?
3. 建立時間和保持時間關系詳解 - Ethan的日志 - 網易博客.htm?
4. 建立時間、保持時間和時序約束條件 - 第1頁 - 東大小小的數字世界 - EDN China電子設計技術.htm
總結
以上是生活随笔為你收集整理的FPGA时序约束建立时间与保持时间概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2013年10个稳赚行业曝光
- 下一篇: eset smart security