1. 程式人生 > >深入理解STA(靜態時序分析)

深入理解STA(靜態時序分析)

任何學FPGA的人都跑不掉的一個問題就是進行靜態時序分析。靜態時序分析的公式,老實說很晦澀,而且總能看到不同的版本,內容又不那麼一致,為了徹底解決這個問題,我研究了一天,終於找到了一種很簡單的解讀辦法,可以看透它的本質,而且不需要再記複雜的公式了。

我們的分析從下圖開始,下圖是常用的靜態分析結構圖,一開始看不懂公式不要緊,因為我會在後面給以非常簡單的解釋: 在這裡插入圖片描述 這兩個公式是一個非常全面的,準確的關於建立時間和保持時間的公式。其中Tperiod為時鐘週期;Tcko為D觸發器開始取樣瞬間到D觸發器取樣的資料開始輸出的時間;Tlogic為中間的組合邏輯的延時;Tnet為走線的延時;Tsetup為D觸發器的建立時間;Tclk_skew為時鐘偏移,偏移的原因是因為時鐘到達前後兩個D觸發器的路線不是一樣長。

這裡我們來做如下轉化:

因為對於有意義的時序約束,建立時間餘量Tslack,setup和保持時間餘量Thold都要大於0才行,所以對於時序約束的要求其實等價於:

Tperiod>Tcko+Tlogic+Tnet+Tsetup-Tclk_skew (1)

Tcko+Tlogic+Tnet>Thold+Tclk_skew (2)

之前說了,這兩個公式是最全面的,而實際上,大部分教材沒講這麼深,他們對於一些不那麼重要的延時沒有考慮,所以就導致不同的教材說法不一。這裡,為了得到更加簡單的理解,我們按照常規,忽略兩項Tnet和Tclk_skew。原因在於Tnet通常太小,而Tclk_skew比較不那麼初級。簡化後如下:

Tperiod>Tcko+Tlogic+Tsetup (3)

Tcko+Tlogic>Thold (4)

簡單多了吧!但是你能看出這兩個公式的含義嗎?其實(3)式比較好理解,意思是資料從第一個觸發器取樣時刻傳到第二個觸發器取樣時刻,不能超過一個時鐘週期啊!假如資料傳輸超過一個時鐘週期,那麼就會導致第二個觸發器開始取樣的時候,想要的資料還沒有傳過來呢!那麼(4)式又如何理解呢?老實說,一般人一眼看不出來。

我們對於(4)式兩邊同時加上Tsetup,得到(5):

Tcko+Tlogic+Tsetup>Thold+Tsetup (5)

結合(3)式和(5)式,我們得到如下的式子:

Thold+Tsetup <Tcko+Tlogic+Tsetup< Tperiod (6)

這個式子就是那個可以讓我們看出規律的式子。也是可以看出靜態時序分析本質的式子。

Tcko+Tlogic+Tsetup是指資料從第一級觸發器取樣瞬間開始,傳輸到第二級觸發器並被取樣的傳輸延時。我們簡稱為資料傳輸延時。下面講述(6)式兩端的含義。

Tcko+Tlogic+Tsetup< Tperiod :約定資料傳輸延時不能太大,如果太大(超過一個時鐘週期),那麼第二級觸發器就會在取樣的時刻發現數據還沒有到來。

Thold+Tsetup <Tcko+Tlogic+Tsetup:約定資料傳輸延時不能太小。這就奇怪了,資料傳得太慢大家都知道不好,難道傳得太快也不行嗎?是的,不行!Thold+Tsetup是一個觸發器的取樣視窗時間,我們知道,D觸發器並不是絕對的瞬間取樣,它不可能那麼理想。在D觸發器取樣的瞬間,在這瞬間之前Tsetup時間之內,或者這瞬間之後Thold時間之內,如果輸入埠發生變化,那麼D觸發器就會處於亞穩態。所以取樣是有視窗的,我們把Thold+Tsetup的時間寬度叫做觸發器的取樣視窗,在視窗期內,D觸發器是脆弱的,對毛刺沒有免疫力的。假如資料傳輸延時特別小,那麼就會發現,當第二級觸發器開始取樣的時候,第一級觸發器的視窗期還沒有結束!也就是說,如果這個時候輸入端資料有變化,那麼不僅第一級觸發器處於亞穩態,第二級觸發器也將處於亞穩態!

綜上,我們就可以知道,資料傳輸延時既不能太大以至於超過一個時鐘週期,也不能太小以至於小於觸發器取樣視窗的寬度。這就是靜態時序分析的終極內涵。有了這個,就不需要再記任何公式了。