STA -- Setup time & Hold time 詳細解讀


Setup time & Hold time

一般來說,setup可以通過時鍾頻率來調整,而hold time是不行的,是一定要滿足的。

  • 對於某個DFF來說,建立時間和保持時間可以認為是此器件固有的屬性。

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

  • 在clk上升沿來之前,數據必須提前一個最小時間量“預先准備好”,這個最小時間量就是建立時間

    在clk上升沿來之后,數據必須保持一個最小時間量“不能變化”,這個最小時間量就是保持時間

Setup time 檢查

對於上面的兩級DFF,setup time檢查就是要確保DFF1的Clk到DFF2的D端滿足時序要求。
簡單來說,就是檢查從DFF1的Clk到DFF2的D端這條path上,數據是否傳得太慢導致FF2的建立時間不能滿足
完整的setup time檢查時序如下圖:

對於FF2: Data path = 1 + 2 + 3 ; Clock path = 6 STA要求滿足: 1 + 2 + 3 + 4 + 5 = 6 + 7 且 4 需要 ≥ 0 因此 : 1 + 2 + 3 + 5 ≤ 6 + 7,即:

\[T_{clk\_delay}^{FF1} + T_{c->q}^{FF1} + T_{comb\_logic} + T_{setup}<= T_{clk\_delay}^{FF2} + T_{period} \]

不滿足此公式的即為setup violation

Hold time 檢查

相對與setup的檢查,hold的檢查與時鍾周期無關,它實際上檢查的是當前上升沿,本級DFF在采樣數據時會不會出錯。
簡單來說,就是查看上圖中DFF2在當前上升沿,會不會因為接到DFF2的D端上的數據變化太快導致無法滿足保持時間的要求
時序分析圖如下:

根據時序圖可以得到:

\[T^{FF2}_{clk\_delay} + T^{FF2}_{Hold}+T_{Design\_margin} = T^{FF1}_{clk\_delay}+T^{FF1}_{C->Q}+ T_{Comb\_logic} \]

STA要求上面式中的design margin>=0,即:

\[T^{FF1}_{clk\_delay}+T^{FF1}_{C->Q}+ T_{Comb\_logic}-T^{FF2}_{Hold} \ge T^{FF2}_{clk\_delay} \]

違反此式子就是hold violation.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM