引言
在同步電路設(shè)計中,時序是一個非常重要的因素,它決定了電路能否以預(yù)期的時鐘速率運行。為了驗證電路的時序性能,我們需要進行靜態(tài)時序分析,即在最壞情況下檢查所有可能的時序違規(guī)路徑,而不需要測試向量和動態(tài)仿真。本文將介紹靜態(tài)時序分析的基本概念和方法,包括時序約束,時序路徑,時序裕量,setup檢查和hold檢查等。
時序路徑
同步電路設(shè)計中,時序是一個主要的考慮因素,它影響了電路的性能和功能。為了驗證電路是否能在最壞情況下滿足時序要求,我們需要進行靜態(tài)時序分析,即不依賴于測試向量和動態(tài)仿真,而只根據(jù)每個邏輯門的最大延遲來檢查所有可能的時序違規(guī)路徑。
時序,面積和功耗是綜合和物理實現(xiàn)的主要驅(qū)動因素。芯片EDA工具的目標(biāo)是在最短的運行時間內(nèi),用最小的面積和功耗,生成滿足時序網(wǎng)表,并進行布局和布線。EDA工具會根據(jù)設(shè)計者給定的約束條件,在時序,面積,功耗和EDA工具運行時間之間做出權(quán)衡。
芯片要想以期望的時鐘頻率運行,就必須遵守時序約束,因此時序是最重要的設(shè)計約束。靜態(tài)時序分析的核心問題是:
“在所有情況下(multi-mode multi-corner),每個同步設(shè)備(synchronous device,例如觸發(fā)器)的數(shù)據(jù)輸入端,在時鐘邊沿到達時,是否已經(jīng)有正確的數(shù)據(jù)?”
上圖中的虛線箭頭代表了時序路徑。為了保證數(shù)據(jù)能被準(zhǔn)確地鎖存,數(shù)據(jù)信號必須在時鐘邊沿到達觸發(fā)器FF2的時鐘端之前,傳遞到觸發(fā)器FF2的數(shù)據(jù)端。
setup檢查
上圖展示了這條時序路徑的時序情況。當(dāng)時鐘邊沿到達FF1時,F(xiàn)F1會鎖存FF1.D的數(shù)據(jù)。經(jīng)過觸發(fā)器的CLK-to-Q延遲后,數(shù)據(jù)會出現(xiàn)在觸發(fā)器的輸出端FF1.Q。這個過程叫做時序路徑的launch event。
然后,數(shù)據(jù)信號經(jīng)過一定的延遲,通過組合邏輯,到達觸發(fā)器FF2的輸入端FF2.D。數(shù)據(jù)信號到達這里的時間叫做路徑的arrival time。
為了讓FF2能正確地鎖存數(shù)據(jù),F(xiàn)F2.D的值必須在時鐘邊沿到達FF2的時鐘端之前穩(wěn)定下來,并且提前一定的時間,即觸發(fā)器的建立時間。這個最小的允許時間叫做路徑的required time。FF2鎖存數(shù)據(jù)的過程叫做時序路徑的capture event。
時序裕量
時序路徑是否滿足時序約束,取決于它的時間裕量,即slack。
如果數(shù)據(jù)信號比必要的時間早到達,那么slack就是正值。
如果數(shù)據(jù)信號剛好在required time到達,那么slack就是零。
如果數(shù)據(jù)信號比required time晚到達,那么slack就是負值。
在任何情況下,slack都等于required time減去arrival time。
上面描述的時序檢查叫做setup檢查,它用來驗證數(shù)據(jù)是否能在每個時鐘邊沿之前及時到達時序電路。這是綜合和時序優(yōu)化中最常見的一種時序檢查類型。
hold檢查
hold檢查用來驗證數(shù)據(jù)在時鐘邊沿到達后,還能保持多久的有效性。如果從launch到capture的數(shù)據(jù)路徑上的組合延遲太短,而從launch到capture的時鐘路徑上的延遲太長,就有可能出現(xiàn)hold違規(guī)。下圖給出了這種情況的例子。
上圖中,數(shù)據(jù)從FF1到FF2的時序路徑只經(jīng)過了一個NAND門,組合延遲非常短。而時鐘信號從時鐘源到FF2的路徑上有三個緩沖器,延遲非常長。
上圖顯示了這種情況下的可能時序。由于數(shù)據(jù)在setup time之前到達,所以很容易滿足setup約束。然而,問題在于FF2的D輸入端的數(shù)據(jù)不能保持足夠長的時間,導(dǎo)致hold約束不能滿足。也就是說,數(shù)據(jù)在時鐘CLKB鎖存之前發(fā)生變化。
為了修復(fù)這種類型的違規(guī),我們可以通過縮短時鐘線的延遲或增加數(shù)據(jù)路徑的延遲來調(diào)整時序。
最壞情況(worst-case conditions)
每種類型的時序檢查都考慮了不同的最壞情況(worst-case conditions)。例如,一個setup檢查(驗證數(shù)據(jù)是否在時鐘邊沿之前到達)考慮最長的組合邏輯/最慢的數(shù)據(jù)路徑,以及最早的時鐘路徑。相反,hold檢查(驗證數(shù)據(jù)是否在時鐘邊沿之后保持有效的時間)考慮最短/最快的數(shù)據(jù)路徑,以及最晚的時鐘路徑。
上圖顯示了通過同一個模塊不同組合邏輯路徑的示例。在數(shù)據(jù)路徑中,setup檢查會考慮較長的延遲(通過三個門),而hold檢查將考慮較短的路徑(通過兩個門)。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7139瀏覽量
89576 -
eda
+關(guān)注
關(guān)注
71文章
2787瀏覽量
173857 -
靜態(tài)時序分析
+關(guān)注
關(guān)注
0文章
28瀏覽量
9608
發(fā)布評論請先 登錄
相關(guān)推薦
時序分析中的一些基本概念
時序分析中的一些基本概念
![<b class='flag-5'>時序</b><b class='flag-5'>分析</b>中的一些<b class='flag-5'>基本概念</b>](https://file1.elecfans.com//web2/M00/A6/AD/wKgZomUMP42AZtPAAAAXw2lyBgQ741.jpg)
正點原子FPGA靜態(tài)時序分析與時序約束教程
![正點原子FPGA<b class='flag-5'>靜態(tài)</b><b class='flag-5'>時序</b><b class='flag-5'>分析</b>與<b class='flag-5'>時序</b>約束教程](https://file.elecfans.com/web1/M00/CE/CD/o4YBAF-rS5iABAFXAADn1A_7I2g634.png)
時序分析和時序約束的基本概念詳細說明
![<b class='flag-5'>時序</b><b class='flag-5'>分析</b>和<b class='flag-5'>時序</b>約束的<b class='flag-5'>基本概念</b>詳細說明](https://file.elecfans.com/web1/M00/D9/50/o4YBAF_4IhaAaYZFAAIk1GFh9kc159.png)
FPGA設(shè)計中時序分析的基本概念
時序分析基本概念介紹—Timing Arc
![<b class='flag-5'>時序</b><b class='flag-5'>分析</b><b class='flag-5'>基本概念</b>介紹—Timing Arc](https://file1.elecfans.com/web2/M00/8C/22/wKgZomSmZleAb_vjAABZIlqQ-WE742.jpg)
評論