http://blog.csdn.net/verylogic/article/details/14261989?reload
任何學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觸發器是脆弱的,對毛刺沒有免疫力的。假如資料傳輸延時特别小,那麼就會發現,當第二級觸發器開始采樣的時候,第一級觸發器的視窗期還沒有結束!也就是說,如果這個時候輸入端資料有變化,那麼不僅第一級觸發器處于亞穩态,第二級觸發器也将處于亞穩态!
綜上,我們就可以知道,資料傳輸延時既不能太大以至于超過一個時鐘周期,也不能太小以至于小于觸發器采樣視窗的寬度。這就是靜态時序分析的終極内涵。有了這個,就不需要再記任何公式了。