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

2021-09-25 10:25:39 字數 2053 閱讀 8876

任何學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是指資料從第一級觸發器取樣瞬間開始,傳輸到第二級觸發器並被取樣的傳輸延時。我們簡稱為資料傳輸延時。下面講述(6)式兩端的含義。

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

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

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

靜態時序分析(STA)要掌握的知識

靜態時序分析 static timing analysis,sta 是流片成功的關鍵環節,驗證設計在時序上的正確性。sta過程中設計環境和時序約束的設定 時序結果的分析和問題解決都需要設計工程師具有專門的知識和技能。靜態時序分析要掌握的知識 時序分析概念和流程 時序約束含多時鐘約束 時序報告 pba...

靜態時序分析

常用的靜態時序分析結構圖 時序圖如下 紅色虛線之間的是建立時間和保持時間,在這段時間內資料應保持穩定不變。其中clk1是前一級觸發器的時鐘,clk2是後一級觸發器的時鐘。clk2相對於clk1存在一定的偏斜tclk skew。我們在在後一級觸發器的第乙個時鐘上公升沿分析保持時間,在後一級觸發器的第二...

深入理解靜態鏈結的過程

靜態鏈結的過程 各個檔案之間都是單獨編譯的。編譯生成可重定位目標檔案後,目標檔案格 式也是elf可執行檔案格式但是並不能執行 根本原因是在編譯的時候目標檔案並沒有分配虛擬位址 原因如下 如果是定義在本檔案的函式和變數編譯器可以為它分配位址,但是如果當前的原始檔引用其他檔案的函式或者是全域性變數,這個...