Setup 和Hold (建立時間和保持時間)解析

本文是第一篇,有空會繼續更新。(轉載請註明出處!!!)

STA分析是基於同步電路設計模型的,在數據輸入端,假設外部也是同時鐘的寄存器的輸出並且經過若干組合邏輯進入本級,而輸出也被認爲是驅動後一級的同時鐘的寄存器。在不設置約束的情況下,純組合邏輯的輸入->輸出不得超過一個T,否則也會被認爲是Timing violation.

  1. Timing path
    Timing path就是時間線。Timing就是從起始位置的時間點到終點位置的時間點之間的時間長度。Path是指跟位置相關,即時間起始或終點的位置。Timing path就是某位置的某一時間點到另一位置的某個時間點。對於DFF來說,上升沿類似於一瞬間的脈衝,只有在這短短的一瞬間,數據才允許通過。對於DFF來說,有兩個輸入點:數據D和時鐘CK,有一個輸出點:數據Q。由於是時間比較,所以對於D和CK一定要有一個共同的起始時間點,如下圖中的A點出現clk上升沿的時刻。如下圖,假設我們分析DFF2的數據和時鐘到達的時間。二者共同的出發點是A的上升沿,因爲A位於時鐘通路上,FF1的時鐘經過A點到達FF1-C點,在FF1-C上升沿打開FF1,然後數據才能從FF1-Q輸出,進而傳遞到FF2-D。在A點, FF2的時鐘沿經過clock tree,達到FF2-C點。所以數據走過的路程是:

Data path: A->clk_tree_buf1->FF1-C -> FF1-Q -> Comb_logic -> B

而對於FF2來說只要滿足下個週期的上升沿能夠採樣即可,所以時鐘到達FF2-C的路徑是:

Clk path: A -> clk_tree_buf2-> C.
在這裏插入圖片描述
2. 什麼是建立時間和保持時間?
對於某個DFF來說,建立時間和保持時間可以認爲是此器件固有的屬性。有關DFF的內部結構及setup和hold時間對應的邏輯門會在其他文章中進行細緻描述。

在理想情況下,只要在時鐘沿來臨時,有效數據也來臨(時鐘沿之前或同時),則能夠正確採集到數據;而在時鐘沿之後(或同時),即使數據發生變化,也不會影響DFF的輸出了。然而在實際中,上升沿打開開關需要時間,邏輯門的狀態改變(電容充放電等)都需要時間,因此數據的採集是需要一定時間的,在這個時間內數據不能發生變化。上升沿時候開關關閉也需要時間,如果在這個時間段內數據有變化的話,那麼新數據就有可能被傳遞到下一級,進而發生錯誤,所以數據必須保持一定時間不變。(細節部分可以參考DFF的內部結構)。

總而言之在DFF的輸入端口上看,

  • 在clk上升沿來之前,數據必須提前一個最小時間量“預先準備好”,這個最小時間量就是建立時間;
  • 在clk上升沿來之後,數據必須保持一個最小時間量“不能變化”,這個最小時間量就是保持時間。
    在這裏插入圖片描述
  1. 建立和保持時間要求、及其公式
    滿足建立和保持時間要求,電路狀態改變就是正確的,電路功能就不會發生錯誤;如果不滿足,電容就沒有足夠的時間充放電,造輸出點的電平可能既非0也非1,造成“亞穩態“輸出。如果前級驅動夠強勁,電路就能按照趨勢變化下去,一定時間後該點的值就會變化爲“正確值”,如果驅動不夠強勁,電路就會恢復之前的值,最終得到何值是不可控的,所以我們要避免亞穩態。在使用DFF時,必須滿足其建立時間和保持時間的要求。
    在這裏插入圖片描述
    建立時間
    現在在回頭分析data path和clk path,假設t0時刻FF1採集到數據並傳遞給FF2,那麼FF2只要在t10上升沿採到數據即可,所以數據有一整個Tperiod的時間來傳遞到FF2-D端。因爲要滿足建立時間要求,所以對於FF2來說,數據要比時鐘“走得快”:

Tdata_path+ Tsetup <= Tclk_path+ Tperiod

所以

Tclk_delay_FF1 + Tc->q_FF1+ Tcomb_logic + Tsetup <= Tclk_delay_FF2 + Tperiod

在分析STA時,不滿足此公式的即爲setup violation。對應時序圖的分析,見下圖:

保持時間
保持時間比較難理解,其實質是當前時鐘沿的FF1輸出不能太快在當前沿到達FF2。以上圖爲例,即在t10時刻,爲防止FF1採到的新數據太快到達FF2而“沖掉”原來的正確數據,數據必須要在一定時間之後才允許到達,所以保持時間分析,分析的是FF1和FF2的同一個時鐘沿。因爲datapath和clk_path要滿足保持時間要求,所以

Tdata_path– Thold >= Tclk_path

所以:

Tclk_delay_FF1 + Tc->q_FF1+ Tcomb_logic– Thold>= Tclk_delay_FF2

在STA分析時,不滿足此公式的即爲Holdviolation。

其中Tclk_skew = Tclk_delay_FF2 – Tclk_delay_FF1. 這條公式在分析Tskew時用得上。

對應於時序圖,見如下圖的分析:
在這裏插入圖片描述
4. 實際電路的Setup和Hold公式及violation分析
因爲在不同的情形下,例如不同的溫度,電壓,loading等等,每一段電路的delay是不同的,所以對於同一段電路,其delay可以在如下範圍中:

Min_delay<= Delay <= max_delay

如下圖:
在這裏插入圖片描述
建立時間

公式爲:

Tclk_delay_FF1 + Tc->q_FF1+Tcomb_logic+ Tsetup <= Tclk_delay_FF2 + Tperiod

應該滿足MAX_data_path_delay + Tsetup <= MIN_clk_path_delay + Tperiod,才能保證電路是可靠的。所以在實際電路中:

Tdata_path_max+ Tsetup <= Tclk_path_min+ Tperiod

對應上圖,該公式應該是:

2ns+ 11ns + 2ns + 9ns + 2ns + 4ns <= 2ns + 5ns + 2ns + Tperiod

所以: 30 <= 9 + 15.因爲違反了該公式,所以該電路出現了setup violation。

保持時間

公式爲:

Tclk_delay_FF1 + Tc->q_FF1 + Tcomb_logic –Thold>= Tclk_delay_FF2

應該滿足MIN_data_path_delay – Thold>= MAX_clk_path_delay.才能保證電路是可靠的。所以在實際電路中:

Tdata_path_min- Thold >= Tclk_path_max

在這裏插入圖片描述
對應上圖,該公式應該是:

1ns +9ns + 1ns + 6ns + 1ns – 2ns >= 3ns + 9ns + 3ns

所以: 16ns >= 15ns,滿足公司要求,所以該電路無holdviolation。

在某些電路中,可以認爲clk tree上面沒有延遲,可以認爲wire沒有延遲,那麼setup和hold公式就得到簡化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章