FPGA靜態時序分析模型——寄存器到寄存器


1. 適用范圍

  本文檔理論適用於Actel FPGA並且采用Libero軟件進行靜態時序分析(寄存器到寄存器)。

2. 應用背景

  靜態時序分析簡稱STA,它是一種窮盡的分析方法,它按照同步電路設計的要求,根據電路網表的拓撲結構,計算並檢查電路中每一個DFF(觸發器)的建立和保持時間以及其他基於路徑的時延要求是否滿足。STA作為FPGA設計的主要驗證手段之一,不需要設計者編寫測試向量,由軟件自動完成分析,驗證時間大大縮短,測試覆蓋率可達100%。

  靜態時序分析的前提就是設計者先提出要求,然后時序分析工具才會根據特定的時序模型進行分析,給出正確是時序報告。

  進行靜態時序分析,主要目的就是為了提高系統工作主頻以及增加系統的穩定性。對很多數字電路設計來說,提高工作頻率非常重要,因為高工作頻率意味着高處理能力。通過附加約束可以控制邏輯的綜合、映射、布局和布線,以減小邏輯和布線延時,從而提高工作頻率。

3. 理論分析

3.1         靜態時序分析的理論基礎知識

  在進行正確的時序分析前,我們必須具備基本的靜態時序的基本知識點,不然看着編譯器給出的時序分析報告猶如天書。如圖3.1所示,為libero軟件給出的寄存器到寄存器模型的時序分析報告的截取,接下來我們會弄清楚每個欄目的數據變量的含義,以及計算方法。

 圖3.1  libero靜態時序分析報告

3.1.1    固定參數launch edge、latch edge、Tsu、Th、Tco概念

1.         launch edge

 

  時序分析起點(launch edge):第一級寄存器數據變化的時鍾邊沿,也是靜態時序分析的起點。

2.         latch edge

  時序分析終點(latch edge):數據鎖存的時鍾邊沿,也是靜態時序分析的終點。

3.         Clock Setup Time (Tsu)

  建立時間(Tsu):是指在時鍾沿到來之前數據從不穩定到穩定所需的時間,如果建立的時間不滿足要求那么數據將不能在這個時鍾上升沿被穩定的打入觸發器。如圖3.2所示:

 

 圖3.2  建立時間圖解

4.         Clock Hold Time (Th)

  保持時間(Th):是指數據穩定后保持的時間,如果保持時間不滿足要求那么數據同樣也不能被穩定的打入觸發器。保持時間示意圖如圖3.3所示:

 

 

圖3.3  保持時間圖解

5.         Clock-to-Output Delay(tco)

  數據輸出延時(Tco):這個時間指的是當時鍾有效沿變化后,數據從輸入端到輸出端的最小時間間隔。

3.1.2    Clock skew

  時鍾偏斜(clock skew):是指一個時鍾源到達兩個不同寄存器時鍾端的時間偏移,如圖3.4所示:

 

 

圖3.4  時鍾偏斜

  時鍾偏斜計算公式如下:

                                              Tskew = Tclk2 - Tclk1                (公式3-1)

3.1.3    Data Arrival Time

  數據到達時間(Data Arrival Time):輸入數據在有效時鍾沿后到達所需要的時間。主要分為三部分:時鍾到達寄存器時間(Tclk1),寄存器輸出延時(Tco)和數據傳輸延時(Tdata),如圖3.5所示

 

圖3.5  數據到達時間

  數據到達時間計算公式如下:

                Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata            (公式3-2)

3.1.4    Clock Arrival Time

  時鍾到達時間(Clock Arrival Time):時鍾從latch邊沿到達鎖存寄存器時鍾輸入端所消耗的時間為時鍾到達時間,如圖3.6所示

圖3.6  時鍾到達時間

時鍾到達時間計算公式如下:

                Clock Arrival Time = Lacth edge + Tclk2              (公式3-3)

3.1.5    Data Required Time(setup/hold)

  數據需求時間(Data Required Time):在時鍾鎖存的建立時間和保持時間之間數據必須穩定,從源時鍾起點達到這種穩定狀態需要的時間即為數據需求時間。如圖3.7所示:

 

 

圖3.7  數據需求時間

  (建立)數據需求時間計算公式如下:

               Data Required Time = Clock Arrival Time - Tsu            (公式3-4)

  (保持)數據需求時間計算公式如下:

                      Data Required Time = Clock Arrival Time + Th               (公式3-5) 

3.1.6    Setup slack

  建立時間余量(setup slack):當數據需求時間大於數據到達時間時,就說時間有余量,Slack是表示設計是否滿足時序的一個稱謂。

 圖3.8  建立時間余量

  如圖3.8所示,建立時間余量的計算公式如下:

                  Setup slack = Data Required Time - Data Arrival Time            (公式3-6)

  由公式可知,正的slack表示數據需求時間大於數據到達時間,滿足時序(時序的余量),負的slack表示數據需求時間小於數據到達時間,不滿足時序(時序的欠缺量)。

3.1.7    時鍾最小周期

  時鍾最小周期:系統時鍾能運行的最高頻率。

  1.  當數據需求時間大於數據到達時間時,時鍾具有余量;

  2.    當數據需求時間小於數據到達時間時,不滿足時序要求,寄存器經歷亞穩態或者不能正確獲得數據;

  3.    當數據需求時間等於數據到達時間時,這是最小時鍾運行頻率,剛好滿足時序。

  從以上三點可以得出最小時鍾周期為數據到達時間等於數據需求時間,的運算公式如下:

            Data Required Time = Data Arrival Time                (公式3-7)        

  由上式推出如下公式:

 Tmin + Latch edge + Tclk2 - Tsu = Launch edge + Tclk1 + Tco + Tdata

  最終推出最小時鍾周期為:

            Tmin = Tco + Tdata + Tsu - Tskew                  (公式3-8)

4. 應用分析

4.1         設置時鍾主頻約束

  所有的靜態時序分析都是在有約束的情況下編譯器才給出分析報告,所以進行時序分析的第一步就是設置約束。

  Libero軟件設置時鍾約束的途徑三種,單時鍾約束,多時鍾約束和在Designer里面進行約束。

4.1.1    單時鍾約束

  有時我們系統所有模塊都采用同一個時鍾,這種方式最為簡單,直接在Synplify主界面上有個設置時鍾約束的,如圖4.1中紅框所示:

 

 

圖4.1  單時鍾設置

  設置完成后,編譯,通過Synplify時鍾報告看初步時鍾運行頻率能否達到要求,時鍾報告如圖4.2所示,設定100Mhz,能運行102.7Mhz,滿足時序。

 

 

圖4.2  時序報告

4.2         多時鍾約束

  當系統內部模塊采用了多個時鍾時,那就需要進行多時鍾約束了。首先需要打開設置界面,在Synplify中選擇:File->New->Constraint File建立SDC文件,選擇時鍾約束如圖4.3所示:

 

 

圖4.3  多時鍾約束

  對時鍾進行如下約束后保存SDC文件,約束如圖4.4所示 

圖4.4  多時鍾約束完成

4.3         Designer SmartTime時鍾約束

  時鍾約束除了在Synplify中可以約束外,還可以在Designer SmartTime中設置時鍾約束,打開Designer Constraint,選擇Clock進行針對每個使用時鍾的設置,如圖4.5所示:

圖4.5  Designer時序約束

4.4         時序報告分析

4.4.1    Synplify時序報告

  當約束了時序后,需要觀察時序報告,看時鍾能否達到我們需要的時鍾,首先觀察Synplify綜合報告。以多時鍾約束為例子,從Synplify得到的時序報告如圖4.6所示:

 

圖4.6  多時鍾約束時序報告

由上圖可知時序都滿足約束,未出現違規,可以在下面的報告中查看最差路徑,如圖4.7所示是clk2的最差路徑。

圖4.7  最差路徑

4.4.2    Designer SmartTime時序分析報告

  當設計經過Synplify綜合給出網表文件后,還需要Designer進行布局布線,通過布局布線優化后的時序會有變化,因此,還需要分析布局布線后的時序,打開Designer->Timing Analyzer查閱整體時序分析報告如圖4.8所示:

圖4.8  布局布線后時序報告

  由Synplify綜合后的報告和Designer進行布局布線后的報告可以看出,布局布線后優化了一些時序,特別是clk2時鍾,通過布局布線后優化到了184Mhz,完全滿足時序。

4.4.3    詳細時序報告圖

  通過Synplify綜合后的和Designer進行布局布線都只是看到了一個大體的時序報告,當我們需要分析時序時候必須觀察仔細的時序報告,在SmartTime中提供這種報告功能,以clk2分析為例,在Timing Analyzer找到如下區域。

 

圖4.9  時序報告選擇

  如圖4.9所示,選擇寄存器到寄存器進行分析時鍾主頻。

 

 

圖4.10  寄存器到寄存器分析

  如圖4.10所示,時序報告中給出了數據延時,時序余量,數據到達時間,數據需求時間,數據建立時間,以及最小周期和時鍾偏斜等信息,有了上一節的時序分析基礎知識,我們完全能看懂這些數據代表的意義,這樣對我們時序分析就知己知彼,進一步雙擊其中一條路徑,還會給出這條路徑的硬件電路圖,如圖4.11所示,有了這些詳細的時序報告,對設計進行調整更加清晰。 

圖4.11  硬件路徑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM