參考博文:
sta分析是基於同步電路設計模型的,在資料輸入端,假設外部也是同時鐘的暫存器的輸出並且經過若干組合邏輯進入本級,而輸出也被認為是驅動後一級的同時鐘的暫存器。在不設定約束的情況下,純組合邏輯的輸入->輸出不得超過乙個t,否則也會被認為是timing violation.
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的路徑是:
對於某個dff來說,建立時間和保持時間可以認為是此器件固有的屬性。有關dff的內部結構及setup和hold時間對應的邏輯門會在其他文章中進行細緻描述。
在理想情況下,只要在時鐘沿來臨時,有效資料也來臨(時鐘沿之前或同時),則能夠正確採集到資料;而在時鐘沿之後(或同時),即使資料發生變化,也不會影響dff的輸出了。然而在實際中,上公升沿開啟開關需要時間,邏輯門的狀態改變(電容充放電等)都需要時間,因此資料的採集是需要一定時間的,在這個時間內資料不能發生變化。上公升沿時候開關關閉也需要時間,如果在這個時間段內資料有變化的話,那麼新資料就有可能被傳遞到下一級,進而發生錯誤,所以資料必須保持一定時間不變。(細節部分可以參考dff的內部結構)。
總而言之在dff的輸入埠上看,
滿足建立和保持時間要求,電路狀態改變就是正確的,電路功能就不會發生錯誤;如果不滿足,電容就沒有足夠的時間充放電,造輸出點的電平可能既非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時用得上。
對應於時序圖,見如下圖的分析:
因為在不同的情形下,例如不同的溫度,電壓,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公式就得到簡化。
Setup 和Hold (建立時間和保持時間)解析
sta分析是基於同步電路設計模型的,在資料輸入端,假設外部也是同時鐘的暫存器的輸出並且經過若干組合邏輯進入本級,而輸出也被認為是驅動後一級的同時鐘的暫存器。在不設定約束的情況下,純組合邏輯的輸入 輸出不得超過乙個t,否則也會被認為是timing violation.timing path就是時間線。...
Setup 和Hold (建立時間和保持時間)解析
sta分析是基於同步電路設計模型的,在資料輸入端,假設外部也是同時鐘的暫存器的輸出並且經過若干組合邏輯進入本級,而輸出也被認為是驅動後一級的同時鐘的暫存器。在不設定約束的情況下,純組合邏輯的輸入 輸出不得超過乙個t,否則也會被認為是timing violation.timing path就是時間線。...
為什麼會有建立時間setup和保持時間hold要求
要知道為什麼會有setup hold要求,首先要清楚d觸發器的結構 d觸發器可以由靜態邏輯實現,也可以由動態邏輯實現,這裡僅討論靜態cmos d觸發器的結構 構成乙個d觸發器最普遍方法是採用主從結構,由乙個負latch 主級 和正latch 從級 串聯而成,而latch可以採用傳輸門構成的多路開關m...