引言
在同步電路設計中,時序是一個非常重要的因素,它決定了電路能否以預期的時鐘速率運行。為了驗證電路的時序性能,我們需要進行靜態時序分析,即在最壞情況下檢查所有可能的時序違規路徑,而不需要測試向量和動態仿真。本文將介紹靜態時序分析的基本概念和方法,包括時序約束,時序路徑,時序裕量,setup檢查和hold檢查等。
時序路徑
同步電路設計中,時序是一個主要的考慮因素,它影響了電路的性能和功能。為了驗證電路是否能在最壞情況下滿足時序要求,我們需要進行靜態時序分析,即不依賴于測試向量和動態仿真,而只根據每個邏輯門的最大延遲來檢查所有可能的時序違規路徑。
時序,面積和功耗是綜合和物理實現的主要驅動因素。芯片EDA工具的目標是在最短的運行時間內,用最小的面積和功耗,生成滿足時序網表,并進行布局和布線。EDA工具會根據設計者給定的約束條件,在時序,面積,功耗和EDA工具運行時間之間做出權衡。
芯片要想以期望的時鐘頻率運行,就必須遵守時序約束,因此時序是最重要的設計約束。靜態時序分析的核心問題是:
“在所有情況下(multi-mode multi-corner),每個同步設備(synchronous device,例如觸發器)的數據輸入端,在時鐘邊沿到達時,是否已經有正確的數據?”
上圖中的虛線箭頭代表了時序路徑。為了保證數據能被準確地鎖存,數據信號必須在時鐘邊沿到達觸發器FF2的時鐘端之前,傳遞到觸發器FF2的數據端。
setup檢查
上圖展示了這條時序路徑的時序情況。當時鐘邊沿到達FF1時,FF1會鎖存FF1.D的數據。經過觸發器的CLK-to-Q延遲后,數據會出現在觸發器的輸出端FF1.Q。這個過程叫做時序路徑的launch event。
然后,數據信號經過一定的延遲,通過組合邏輯,到達觸發器FF2的輸入端FF2.D。數據信號到達這里的時間叫做路徑的arrival time。
為了讓FF2能正確地鎖存數據,FF2.D的值必須在時鐘邊沿到達FF2的時鐘端之前穩定下來,并且提前一定的時間,即觸發器的建立時間。這個最小的允許時間叫做路徑的required time。FF2鎖存數據的過程叫做時序路徑的capture event。
時序裕量
時序路徑是否滿足時序約束,取決于它的時間裕量,即slack。
如果數據信號比必要的時間早到達,那么slack就是正值。
如果數據信號剛好在required time到達,那么slack就是零。
如果數據信號比required time晚到達,那么slack就是負值。
在任何情況下,slack都等于required time減去arrival time。
上面描述的時序檢查叫做setup檢查,它用來驗證數據是否能在每個時鐘邊沿之前及時到達時序電路。這是綜合和時序優化中最常見的一種時序檢查類型。
hold檢查
hold檢查用來驗證數據在時鐘邊沿到達后,還能保持多久的有效性。如果從launch到capture的數據路徑上的組合延遲太短,而從launch到capture的時鐘路徑上的延遲太長,就有可能出現hold違規。下圖給出了這種情況的例子。
上圖中,數據從FF1到FF2的時序路徑只經過了一個NAND門,組合延遲非常短。而時鐘信號從時鐘源到FF2的路徑上有三個緩沖器,延遲非常長。
上圖顯示了這種情況下的可能時序。由于數據在setup time之前到達,所以很容易滿足setup約束。然而,問題在于FF2的D輸入端的數據不能保持足夠長的時間,導致hold約束不能滿足。也就是說,數據在時鐘CLKB鎖存之前發生變化。
為了修復這種類型的違規,我們可以通過縮短時鐘線的延遲或增加數據路徑的延遲來調整時序。
最壞情況(worst-case conditions)
每種類型的時序檢查都考慮了不同的最壞情況(worst-case conditions)。例如,一個setup檢查(驗證數據是否在時鐘邊沿之前到達)考慮最長的組合邏輯/最慢的數據路徑,以及最早的時鐘路徑。相反,hold檢查(驗證數據是否在時鐘邊沿之后保持有效的時間)考慮最短/最快的數據路徑,以及最晚的時鐘路徑。
上圖顯示了通過同一個模塊不同組合邏輯路徑的示例。在數據路徑中,setup檢查會考慮較長的延遲(通過三個門),而hold檢查將考慮較短的路徑(通過兩個門)。
-
數據
+關注
關注
8文章
7247瀏覽量
91307 -
eda
+關注
關注
71文章
2904瀏覽量
176752 -
靜態時序分析
+關注
關注
0文章
29瀏覽量
9669
發布評論請先 登錄
時序分析和時序約束的基本概念詳細說明

FPGA設計中時序分析的基本概念
時序分析基本概念介紹—Timing Arc

評論