FPGA靜態時序分析基礎
FPGA靜態時序分析基礎
基本概念
Skew: 時鐘偏移
Skew表示時鐘到達不同觸發器的延時差別,Tskew = 時鐘到達2號觸發器的時刻 - 時鐘到達1號觸發器的時刻。
Jitter: 時鐘抖動
Jitter表示時鐘沿到來時刻與標準時刻的差別或者時鐘占空比的變化。
Setup time: 建立時間
Setup time表示數據要在時鐘沿到來之前保持穩定的最短時間。
Hold time: 保持時間
Hold time表示數據要在時鐘沿過去之後保持穩定的最短時間。
timing path:時序路徑
靜態時序分析首先要把電路分解為一條一條的timing path,起始點是指電路中數據信號被時鐘沿鎖存的點;而數據信號經過一系列的組合邏輯的通道或者走線後被另外一個時鐘沿捕獲,這個點被稱為終點。信號從起始點到終點所經過的通道就被稱為 timing path。
critical path:關鍵路徑
延時最大的那條timing path稱為 critical path。關鍵路徑是系統中延時最大的路徑,它決定了系統所能達到的最大時鐘頻率。
slack:時序裕量
如果計算出某條路徑的 slack 是正數,說明這條路徑的時延是滿足要求的;如果計算出某條路徑的 slack 是負數,則表示路徑上的延時太大了,必須做出修改(修改設計 or 修改約束 or 換芯片),否則包含它的電路不能以預期的頻率工作。
時序分析
(靜態時序分析的典型案例如上圖所示)
描述:
第一個FF記為FF1,第二個FF記為FF2;
clk表示時鐘,周期為T;
Tcko表示數據被時鐘沿捕獲後輸出的時間;
Tclk_skew表示clk到達兩個FF的時間差(Tc2 - Tc1);
Tc2表示clk邊沿到達FF2的延時;
Tc1表示clk邊沿到達FF1的延時;
Tlogic表示數據經過組合邏輯的延時;
Tnet表示數據走線延時;
Tsetup表示FF的建立時間;
Thold表示FF的保持時間;
Thold+Tsetup是一個觸發器的采樣窗口時間,在窗口期內,觸發器是“直通”的,輸入信號在此窗口期間應該保持穩定。
分析:
1 時序路徑有幾條?
timing path共有一條:自數據從FF1的D端進入被時鐘捕獲開始(起始時刻),經過組合邏輯及走線,到達FF2的D端,又被時鐘捕獲為止(終止時刻)。該路徑也是該電路的critical path關鍵路徑。
2 如果該電路想要正常工作,需要滿足的條件是?
數據信號從起始時刻開始,到達FF2數據端口的延時時間為:Tcko + Tlogic + Tnet;
時鐘邊沿從起始時刻開始,到達FF2時鐘端口的延時時間為:T + Tclk_skew(第二個時鐘邊沿);
A、FF2想要正常工作需要滿足:數據信號要在時鐘邊沿到來之前Tsetup時間內保持穩定,即數據要早於時鐘Tsetup時間:
(Tcko + Tlogic + Tnet) +Tsetup <= (T + Tclk_skew)
信號傳輸延時時間 + 留出的建立時間裕量 <= 下次時鐘沿到來的時間
即:信號傳輸延時不能太大以至於超過了一個時鐘周期。
B、FF2想要正常工作需要滿足: 數據信號要在時鐘邊沿到來之後Thold時間內保持穩定,即
(Tcko + Tlogic + Tnet) >= Thold + Tclk_skew
信號傳輸延時時間 >= FF的保持時間
即,信號傳輸延時不能太小以至於小於FF的保持時間。
3 該電路最大工作頻率Fmax是多少?
T >= (Tcko + Tlogic + Tnet) + Tsetup - Tclk_skew
Fmax = 1 / T
參考:
1 http://guqian110.github.io/pages/2015/03/18/static_timing_analysis_1_basic.html
FPGA靜態時序分析基礎