靜態時序分析的前提就是設計者先提出要求,而後時序分析工具纔會根據特定的時序模型進行分析,給出正確是時序報告。html
進行靜態時序分析,主要目的就是爲了提升系統工做主頻以及增長系統的穩定性。對不少數字電路設計來講,提升工做頻率很是重要,由於高工做頻率意味着高處理能力。經過附加約束能夠控制邏輯的綜合、映射、佈局和佈線,以減少邏輯和佈線延時,從而提升工做頻率。工具
時序分析起點(launch edge):第一級寄存器數據變化的時鐘邊沿,也是靜態時序分析的起點。佈局
時序分析終點(latch edge):數據鎖存的時鐘邊沿,也是靜態時序分析的終點。post
創建時間(Tsu):是指在時鐘沿到來以前數據從不穩定到穩定所需的時間,若是創建的時間不知足要求那麼數據將不能在這個時鐘上升沿被穩定的打入觸發器。如圖3.2所示:ui
圖3.2 創建時間圖解url
保持時間(Th):是指數據穩定後保持的時間,若是保持時間不知足要求那麼數據一樣也不能被穩定的打入觸發器。保持時間示意圖如圖3.3所示:設計
圖3.3 保持時間圖解htm
數據輸出延時(Tco):這個時間指的是當時鐘有效沿變化後,數據從輸入端到輸出端的最小時間間隔。blog
時鐘偏斜(clock skew):是指一個時鐘源到達兩個不一樣寄存器時鐘端的時間偏移,如圖3.4所示:get
圖3.4 時鐘偏斜
時鐘偏斜計算公式以下:
Tskew = Tclk2 - Tclk1 (公式2-1)
數據到達時間(Data Arrival Time):輸入數據在有效時鐘沿後到達所須要的時間。主要分爲三部分:時鐘到達寄存器時間(Tclk1),寄存器輸出延時(Tco)和數據傳輸延時(Tdata),如圖3.5所示
圖3.5 數據到達時間
數據到達時間計算公式以下:
Data Arrival Time = Launch edge + Tclk1 +Tco + Tdata (公式2-2)
時鐘到達時間(Clock Arrival Time):時鐘從latch邊沿到達鎖存寄存器時鐘輸入端所消耗的時間爲時鐘到達時間,如圖3.6所示
圖3.6 時鐘到達時間
時鐘到達時間計算公式以下:
Clock Arrival Time = Lacth edge + Tclk2 (公式2-3)
數據需求時間(Data Required Time):在時鐘鎖存的創建時間和保持時間之間數據必須穩定,從源時鐘起點達到這種穩定狀態須要的時間即爲數據需求時間。如圖3.7所示:
圖3.7 數據需求時間
(創建)數據需求時間計算公式以下:
Data Required Time = Clock Arrival Time - Tsu (公式2-4)
(保持)數據需求時間計算公式以下:
Data Required Time = Clock Arrival Time + Th (公式2-5)
創建時間餘量(setup slack):當數據需求時間大於數據到達時間時,就說時間有餘量,Slack是表示設計是否知足時序的一個稱謂。
圖3.8 創建時間餘量
如圖3.8所示,創建時間餘量的計算公式以下:
Setup slack = Data Required Time - Data Arrival Time (公式2-6)
由公式可知,正的slack表示數據需求時間大於數據到達時間,知足時序(時序的餘量),負的slack表示數據需求時間小於數據到達時間,不知足時序(時序的欠缺量)。
時鐘最小週期:系統時鐘能運行的最高頻率。
1. 當數據需求時間大於數據到達時間時,時鐘具備餘量;
2. 當數據需求時間小於數據到達時間時,不知足時序要求,寄存器經歷亞穩態或者不能正確得到數據;
3. 當數據需求時間等於數據到達時間時,這是最小時鐘運行頻率,恰好知足時序。
從以上三點能夠得出最小時鐘週期爲數據到達時間等於數據需求時間,的運算公式以下:
Data Required Time = Data Arrival Time
從上面兩個圖中能夠清晰的看出Setup與Hold Slack的定義與計算方法:
Setup slack=latch edge+Tclk2-Tsu-(launch edge+Tclk1+Tco+Tdata)
=(latch edge-lanuch edge)+(Tclk2-Tclk1)-(Tsu+Tco+Tdata)
對於工具默認的單週期來講,latch edge-lanuch edge=T,若是不考慮時鐘的skew,Tclk2-Tclk1=0,上式能夠表達成:
Setup slack=T-(Tsu+Tco+Tdata),這就是爲何說源寄存器與目的寄存器之間延遲不能太長的緣由,延遲越長,slack越小。
Hold slack=data arrival time – data required time
=(launch edge + Tclk1 + Tco + Tdata) – (latch edge + Tclk2 + Th)
=(launch edge – latch edge) – (Tclk2 – Tclk1) + (Tco + Tdata + Th)
注意,上式中的launch edge爲next launch edge,即爲latch edge,因此launch edge – latch edge=0,若是不考慮時鐘的skew,Tclk2-Tclk1=0,上式能夠表達成:
Hold slack=Tco + Tdata – Th,這就是爲何說源寄存器與目的寄存器之間延遲不能過短的緣由,時間過短,slack越小。