TimeQuest定時分析的基本概念

TimeQuest定時分析的基本概念

全面的靜態定時分析包括寄存器到寄存器、I/O、異步復位路徑的分析,TimeQuest定時分析工具使用數據要求時間(data required time)、數據到達時間(data arrival time)、時鐘到達時間(clock arrival time)來驗證電路性能和檢測可能的違例。TimeQuest分析工具確定滿足設計正常工作所必須的定時關係,檢查到達時間是否滿足要求的時間來驗證定時關係,這一章概述一些爲了使用TimeQuest分析你的設計你必須知道的基本概念。

基本概念:

Nodes:最基本的定時分析網表單元(most basic timing netlist unit),用來代表portspins、寄存器。

CellsLUTslook-up tables)、寄存器、DSP模塊、內存模塊、I/O元素等等。Stratix器件LUTs和寄存器包含在LE中,也屬於cells

Pinscells的輸入輸出

Netspins之間的連接

Ports:頂層模塊的輸入或輸出,如器件的管腳

Clocks:抽象的對象,代表設計裏或設計外的時鐘域。

週期和最高頻率:指時鐘所能達到的最高工作頻率。

時鐘建立時間tsu指時鐘到達前,數據和使能信號已經準備好的最小時間間隔。

時鐘保持時間th指能保證有效時鐘沿正確採樣的數據和使能信號在時鐘沿之後的最小穩定時間間隔。

時鐘輸出延遲tco指從時鐘有效沿到數據有效輸出的最大時間間隔。

引腳到引腳的延時tpd信號從輸入管腳進來到達輸出管腳的最大時間間隔。

Slack是否滿足時序的稱謂。正德Slack表示滿足時序,負的Slack表示不滿足時序。

時鐘偏斜Clock Slew指同一個源時鐘到達兩個不同的寄存器時鐘端的時間差別。

1.定時網絡和定時路徑(Timing NetlistsTiming Paths

先要生成設計的定時網絡,然後TimeQuest纔可以對該設計進行定時分析。

1.1 Timing Netlist

6-1是一個設計,圖6-2是該設計的定時網絡,它顯示了不同的設計元素是如何劃分成cellspinsnetsports

1.2 Timing Paths

Timing Paths是兩個nodes的連接,如一個寄存器的輸出到另一個寄存器的輸人,理解Timing Path的類型對定時分析和優化是非常重要的。TimeQuest通常使用如下幾種類型的Timing Paths

Edge Pathsfrom ports-to-pinsfrom pins-to-pinsfrom pins-to-ports之間的連接。或者稱從引腳到引腳的路徑。

Clock Paths從器件ports或內部產生的時鐘pin到一個寄存器的時鐘pin之間的連接

Data Paths從一個ports或一個時序電路(a sequential element)的數據輸出pin到一個port或另一個時序電路(a sequential element)的數據輸入pin之間的連接。

從管腳到寄存器

從寄存器到管腳

從寄存器到寄存器

Asynchronous Paths從一個ports到另一個時序電路(a sequential element)的異步pin如異步復位或異步清除pin之間的連接。

6-3顯示這幾種類型的路徑:

除了標識出設計中的不同路徑,TimeQuest還分析時鐘特徵,以單個register-to-register路徑來計算在任何兩個寄存器之間最壞情況的要求。在分析時鐘特徵之前,你必須對設計中的所有時鐘進行約束。

1.3 Data and Clock Arrival Times

TimeQuest標示路徑類型之後,它可以報告數據和時鐘到達寄存器pins的時間。

TimeQuest計算數據到達時間(data arrival time),數據到達時間應該是4部分延遲的總和,數據到達時間的計算如下:

launch edge時間

+ 從時鐘源到源寄存器的時鐘pin的延遲

+ 時鐘源寄存器的micro clock-to-output延遲(utCO

+ 從源寄存器的數據輸出Q到目的寄存器的數據輸入D的延遲

TimeQuest計算數據要求時間(data required time),數據要求時間應該是2部分延遲的總和,如下:

Latch edge時間

+ 時鐘port和目的寄存器clock pin之間的所有延遲(這包括時鐘端口所有緩衝的延遲,減掉micro setup timeutSUFPGA內部寄存器要求的固有建立時間)。

6-4顯示瞭如何計算數據到達時間和數據要求時間。

公式6-1數據到達時間和數據要求時間的基本計算,包括launchlatch edge

1.4 Launch and Latch Edges

所有定時依賴於一個或多個時鐘,除了分析路徑,TimeQuest還確定你設計中的所有register-to-register關係。圖6-5顯示了launch edgelatch edge,以及它們之間的關係。

Launch edge:指的是一個時鐘沿,這個時鐘沿將一個寄存器或一個時序電路的數據送出,因此,這個時鐘沿充當數據傳輸的(請理解好這個“源”的概念,應該是時間意義上來理解)。

Latch edge:指的也是一個時鐘沿,這個時鐘沿將一個寄存器或一個時序電路的輸入端口的數據存儲起來,因此,這個時鐘沿充當數據傳輸的目的(請理解好這個“目的”的概念,應該從時間意義上來理解)。

讓我們繼續來理解圖6-5launch edge0ns將數據從寄存器reg1輸出,但是注意,這並不意味着reg1的數據在0ns就是出現了,一定要個延遲,這就是utCO,而reg210ns處的latch edge捕捉這個數據。顯然在10ns處的數據必須到達,因此這就是一個數據建立的時間關係,也就是圖中紅線所謂的Setup Relationship。如何理解圖中的Hold relationship呢?顯然,圖中所指示的Hold relaitionship並不是這個數據(就是0nslaunch的數據,或10nslatch的數據)的保持關係,而是上個數據的Hold關係。

Latch edgeLaunch Edge都是時間的概念,是指一個時刻(時鐘沿的所在時刻),而非一個延遲時間的概念。

2.時鐘建立檢查(Clock Setup Check

拿一個寄存器工作爲例,直白地說,建立檢查是要保證在時鐘沿到達之前Tsu要鎖存的數據必須出現。就是要保證Tsu

需要認真仔細地理解好下面的圖和公式:

TimeQuest計算setup B,而不需要計算setup A,因爲B滿足了,A自然滿足,TimeQuest總是考慮最壞情況。

如果數據到達時間短於要求的數據到達時間(這句話的意思就是說在規定的時間內數據到達了,這裏規定的時間就是Data Required Time,而數據到達的時間是Data Arrival Time),也即是Setup Slack爲正,顯然能夠正常工作。爲負,肯定不能正常工作。

公式6-26-3好理解,對於公式6-4,應該理解爲這樣的電路:前一級是一個FPGA內部寄存器,後一級是器件的管腳,我們必須保證管腳輸出的時鐘和數據能夠被外部一個寄存器(或時序電路)正常接收,所以器件輸出的時鐘和數據信號應該滿足一定的關係,這個關係就是等式6-4所要表達的意思。因爲外部電路未知,所以公式6-4並不能完整描述器件輸出的數據能被正常接收的條件,但是滿足公式6-4是最基本的,是必須的。如果不滿足(也即Setup Slack是負),外部邏輯肯定沒法接收器件輸出的數據。

3.時鐘保持檢查(Clock Hold Check

拿一個寄存器工作爲例,直白地說,保持檢查是要保證在時鐘沿達到後規定的時間內數據不得變化。就是要保證Th

需要認真仔細地理解好下面的圖和公式,並把這些公式與建立時間檢查的公式相比較,以加強對這些概念的理解。

TimeQuest進行A2情況下的Hold Check,因爲這條件最嚴酷。Launch edgeLatch edge相距越近,Hold關係就越嚴酷。TimeQuest總是分析最嚴酷條件下的時序關係。

如果數據要求的時間短於數據到達時間(這句話的意思就是規定的時間內數據不能變化,這個規定的時間就是Data Required Time,而數據發生變化的時間是Data Arrive Time。因爲如果數據到達時間一到數據就變化了,就不能得到想要的結果),此時Hold Slack爲正,很顯然就滿足了HOLD Check,電路可以正常工作。

4.恢復和去除時間(Recovery and Removal Time

恢復時間(Recovery Time是指異步控制信號(如寄存器的異步清除和置位控制信號)在“下個時鐘沿”來臨之前變無效的最小時間長度。這個時間的意義是,如果保證不了這個最小恢復時間,也就是說這個異步控制信號的解除與“下個時鐘沿”離得太近(但在這個時鐘沿之前),沒有給寄存器留有足夠時間來恢復至正常狀態,那麼就不能保證“下個時鐘沿”能正常作用,也就是說這個“時鐘沿”可能會失效。

去除時間(Removal是指異步控制信號(如寄存器的異步清除和置位控制信號)在“有效時鐘沿”之後變無效的最小時間長度。這個時間的意義是,如果保證不了這個去除時間,也就是說這個異步控制信號的解除與“有效時鐘沿”離得太近(但在這個時鐘沿之後),那麼就不能保證有效地屏蔽這個“時鐘沿”,也就是說這個“時鐘沿”可能會起作用。

換句話來說,如果你想讓某個時鐘沿起作用,那麼你就應該在“恢復時間”之前是異步控制信號變無效,如果你想讓某個時鐘沿不起作用,那麼你就應該在“去除時間”過後使控制信號變無效。如果你的控制信號在這兩種情況之間,那麼就沒法確定時鐘沿是否起作用或不起作用了,也就是說可能會造成寄存器處於不確定的狀態。而這些情況是應該避免的。所以恢復時間和去除時間是應該遵守的。

Recovery Slack計算類似於時鐘setup slack的計算。

如果異步復位信號來自於器件I/O port,爲了TimeQuest執行這個pathrecovery分析,你必須爲異步復位port創建輸入延遲約束。

Removal Slack的計算類似與時鐘hold slack計算。

如果異步復位信號來自於器件I/O port,爲了TimeQuest執行這個pathremoval分析,你必須爲異步復位port設置Input Minimum Delay

5.多週期路徑(Multicycle Paths

缺省情況下,在setup/hold檢查中,我們假設數據從launch edge開始發送,在Latch edge被捕獲,Launch edgeLatch edge是相鄰近的一對時鐘,這種方式我們稱之爲缺省的setup/hold關係。在多週期路徑檢查中,我們仍然採用Launch/Latch edge的概念,但是,Launch/Latch edge不再是相鄰的一對時鐘沿,而是間隔一定時鐘週期的一對時鐘沿,間隔的時鐘週期數由用戶來指定。

6-8顯示了一個乘法器的輸入寄存器和輸出寄存器之間的Multicycle Path例子,這個例子裏,目的寄存器在第二或第三等其它時鐘沿鎖存數據。

在圖6-9中,顯示了一個使用缺省setuphold關係的寄存器到寄存器路徑、目的和源時鐘的定時圖、缺省setuphold關係,這裏,src_clk時鐘週期是10nsdst_clk週期是5ns,缺省setup關係是5ns,缺省hold關係是0ns

爲了適應系統要求,你可以用multicycle timing exception來修改缺省setuphold關係。圖6-10顯示了應用multicycle timing exception之後的實際的setup關係。設置multicycle setup assignment2,以使用第2個沿來鎖存,這樣從缺省的5ns變爲10ns

在同步邏輯設計中,通常都是按照單週期關係考慮數據路徑的。但是往往存在這樣的情況:一些數據不需要在下一個時鐘週期就穩定下來,可能在數據發送後幾個時鐘週期之後才起作用;一些數據經過的路徑太複雜,延時太大,不可能在下一個時鐘週期穩定下來,必須要在數據發送後數個時鐘週期之後才能被採用。針對這兩種情況,設計者的設計意圖都是:數據的有效期在以Lauch edge爲起始的數個時鐘週期之後的Latch edge。這一設計意圖不能夠被時序分析工具猜度出來,必須由設計者在時序約束中指定;否則,時序約束工具會按照單週期路徑檢查的方式執行,往往會誤報出時序違規。

不設置多週期路徑約束的後果有兩種:一是按照單週期路徑檢查的結果,虛報時序違規;二是導致佈局佈線工具按照單週期路徑的方式執行,雖然滿足了時序規範,但是過分優化了本應該多個週期完成的操作,造成過約束(Over-Constrain)。過約束會侵佔本應該讓位於其他邏輯的佈局佈線資源,有可能造成其他關鍵路徑的時序違規或時序餘量變小。

在多週期路徑的建立時間(Setup Time)檢查中,TimeQuest會按照用戶指定的週期數延長Data Required Time,放鬆對相應數據路徑的時序約束,從而得到正確的時序餘量計算結果;在保持時間(Hold Time)檢查中,TimeQuest也會相應地延長Data Required Time,不再按照單週期路徑的分析方式執行(不再採用Launch edge最近的時鐘沿,而是採用Latch edge最近的時鐘沿),這就需要用戶指定保持時間對應的多週期個數。TimeQuest計算Hold Time的缺省公式等同於PrimeTime。PrimeTime會採用建立時間檢查對應時鐘沿的前一個時鐘沿進行保持時間檢查,並多會造成保持時間檢查違規,需要用戶指定保持時間檢查對應的時鐘沿爲Launch edge最近的時鐘沿。

TimeQuest缺省的Hold Time檢查公式是需要用戶修改的——針對Setup Time多週期路徑的設置也會影響到Hold Time的檢查。究其原因,多週期路徑是爲了解決信號傳播太慢的問題,慢到一個週期都不夠,所以要把Setup Time的檢查往後推幾個週期——擴大Setup Time檢查的時間窗口。而Hold Time檢查信號是否傳播得太快,如果把檢查時刻往後推,就縮小了Hold Time檢查的時間窗口。

“信號跳變抵達窗口”:對Latch寄存器來說,從previous時鐘對應的Hold Time開始,到current時鐘對應的Setup Time結束。

“信號電平採樣窗口”:對Latch寄存器來說,從current時鐘對應的Setup Time 開始,到current時鐘對應的Hold Time結束。

Launch寄存器必須保證驅動的信號跳變到達Latch寄存器的時刻恰好處於“信號跳變抵達窗口”內,才能保證不破壞Latch寄存器的信號電平採樣窗口。

時序檢查的目的就是確認信號跳變發生在“信號跳變抵達窗口”內,而不會發生在“信號電平採樣窗口”內。

多週期路徑的設置是通過延後Setup Time檢查的時刻,擴大了“信號跳變抵達窗口”,放鬆了時序約束。通過窗口的概念,也很容易理解延後Hold Time,就會縮小“信號跳變抵達窗口”。

6.亞穩態(MetaStability

Metastability可能會發生在一個信號在兩個不相關的電路或者異步時鐘域間的傳輸,因爲設計者不能確保信號會滿足setuphold時間要求,爲了使最小化由於metastability出錯的概率,電路設計者通常使用一個組順序寄存器,又稱同步寄存器鏈,或同步器,在目的時鐘域中用來重新同步數據信號到新的時鐘域。

MTBF是一個由於metastability導致出錯的平均時間估計。

TimeQuest分析你的設計中潛在的Metastability,爲同步寄存器鏈計算MTBF,整個設計的MTBF是基於它包含的同步鏈的估計。

除了報告在設計中發現的同步寄存器鏈外,Quartus II軟件還保護這些寄存器優化可能的MTBF負面影響,比如寄存器複製和邏輯重新定時,如果MTBF太低,Quatus II軟件也優化你的設計的MTBF

7Common Clock Path Pessimism Removal

公共時鐘路徑pessimism removal引起與公共時鐘路徑相關聯的最小和最大延遲值的變化,這種變化是在靜態分析計算slack的時候,將公共時鐘路徑的最大和最小延遲值的差加到對應的slack公式。

最小和最大延遲變化可能會發生,當兩個不同的延遲值被用於同樣的時鐘通道的時候,例如,在簡單的setup分析時,到源寄存器的最大時鐘路徑延遲用來確定數據到達時間,到目的寄存器的最小時鐘路徑延遲用來確定數據要求時間,然而,如果到源寄存器和到目的寄存器的時鐘路徑共享一個公共時鐘路徑的時候,在定時分析期間,最大延遲和最小延遲都被用於公共時鐘路徑模型。最小和最大延遲的使用會產生一個由於2個不同延遲值的overlay pessimistic分析,最大和最小延遲不可能被作爲同一時鐘路徑模型。

6-11顯示了一個典型的register-to-register路徑,最大和最小的延遲值標在路徑上。

A段是reg1reg2的公共時鐘路徑,最小延遲是5.0ns,最大延遲是5.5ns,最大和最小延遲的差等於公共時鐘路徑的pessimism removal值,在這種情況下,公共時鐘路徑pessimism0.5nsTimeQuest會將公共時鐘路徑pessimism removal值加到相應的slack公式來得到總的slack,因此,在圖6-11中如不加公共時鐘通道pessimism removal時的setup slack等於0.7,增加公共時鐘通道pessimism removal之後就變成了1.2ns

還可以使用公共時鐘路徑pessimism removal來確定一個寄存器的最小脈衝寬度,一個時鐘信號必須滿足一個寄存器的最小脈衝寬度的要求,以便寄存器能夠做出響應。上升沿觸發的寄存器有一個最小高電平脈衝寬度的參數要求,而下降沿觸發的寄存器有一個最小低電平脈衝寬度的參數要求。脈衝不滿足這個參數可能會導致寄存器不能正確地鎖定輸入數據。爲了計算最小脈衝寬度的slackTimeQuest分析器利用寄存器時鐘端口人爲設定的時鐘參數要求來確定實際最小脈衝寬度,TimeQuest分析器依據最大/最小上升時間和最大/最小下降的時間來確定要求的最小脈衝寬度。圖6-12顯示了要求的最小高電平和低電平脈衝寬度。

利用公共時鐘路徑pessimism,最小脈衝寬度slack可以增加,增加量是最大上升時間減去最小上升時間與最大下降時間減去最小下降時間兩個值中的較小的一個值。對圖6-12slack值增加了0.2ns,它是0.3ns0.8ns-0.5ns)和0.2ns0.9ns-0.7ns)兩個值的較小的一個值。

8Clock-As-Data分析

大部分設計是被稱作數據通道或時鐘通道的連接,一個數據通道連接2個同步單元的輸出,一個時鐘通道是同步單元的時鐘pin的連接。然而,會存在如圖6-13的路徑,從port clk_inport clk_out這個路徑,既是個時鐘path又是個數據path,時鐘path是從port clk_inreg_data的時鐘pin,數據path是從port clk_inport clk_out

採用clock_as_data分析,TimeQuest提供更精確的基於用戶約束的路徑分析,對於時鐘路徑分析,同PLL相關的任何相位漂移都會被考慮,對於數據通道分析,同PLL相關的任何相位漂移都會被考慮而不是忽略。

Clock-as-data分析也應有於內部產生的時鐘分頻器,如圖6-14,在這個圖中,反相器反饋路徑的波形在定時分析期間被分析。分頻器寄存器的輸出用來確定launch時間,寄存器的時鐘port用來確定latch時間。

9Multicorner分析

TimeQuest可以執行multicorner定時分析,以驗證在不同的運行環境下(電壓、處理速度、溫度等)能否滿足設計要求。

爲了改變操作條件或速度等級可以使用set_operating_condition命令。

爲了確保在不同條件下無違例發生,應該在不同的運行條件下執行靜態定時分析,表6-2給出了低速和高速定時模型操作條件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章