轉載:https://zhuanlan.zhihu.com/p/35189753
介紹STA中最基本的概念以及教你如何計算setup,hold slack以及如何計算電路的最高工作頻率。
什么是STA(Staic Timing Analysis)?
- 靜態時序分析是用於驗證數字設計時序的技術之一
- STA是靜態的,因為設計的分析是靜態執行的,並且不依賴於在設計的輸入所施加的數據值
- STA是對設計的所有時序檢查的完整和詳盡的驗證
為什么要做 STA ?
- 時序分析方法只能驗證由simulus執行的設計部分
- 通過時序仿真進行驗證只與使用的測試向量一樣詳盡。
- 為了模擬和驗證具有10-100萬個門的設計的所有時序條件非常緩慢並且不能完全驗證時序。
所以,STA提供了更快,更簡單的方法來檢查和分析設計中的所有時序路徑,以防止任何時序違規。
Dynamic Timing Analysis (DTA) :
- 動態時序分析需要全面的輸入向量來檢查設計中的時序路徑
- 它確定給定輸入向量集合的電路的完整行為
- 動態仿真可以驗證設計的功能以及時序要求
動態時序分析和靜態時序分析的區別如下圖一所示。

圖1 DTA和STA的對比
舉個例子,如果我們有100個輸入,那么我們需要2的100次方次才能遍歷完成整個分析。與靜態分析相比,分析量簡直是天文數字。

圖2 靜態時序分析的輸入和輸出文件
靜態時序分析中的一些專業術語:
- Setup Time : 在時鍾有效沿之前,輸入數據必須保持穩定的最小時間,稱之為建立時間。
- Hold Time : 在時鍾的有效沿之后,輸入數據必須保持穩定的最小時間,稱之為保持時間。


圖3 setup time 和hold time
Launch 和Capture edge :
·
- Launch edge是指時鍾通過觸發器來發射數據的沿edge
- Capture edge是指時鍾通過觸發器捕獲數據的沿edge
Setup timing checks:
setup檢查確保數據在時鍾的有效沿之前在觸發器的輸入端可用。
在時鍾的有效邊沿到達觸發器之前,數據應該穩定一段時間,即觸發器的建立時間,以便將數據可靠地捕獲到觸發器中。
setup檢查可確保從前一時鍾周期啟動的數據,在一個周期后能夠正確捕獲。

圖 4 setup檢查波形圖
Setup 萬能套用公式:
[Tlaunch + Tck2q + Tdp] <= [Tcapture + TCLK – Tsetup]
Hold timing checks :
hold檢查是確保時鍾有效沿來臨之后的一段時間內,數據仍然保持穩定,從而確保capture時不至於采集到不穩定或者錯誤的數據。

圖 5 hold 檢查波形圖
Hold 萬能套用公式:
[Tlaunch + Tck2q + Tdp] >= [Tcapture + Thold]
setup和hold的檢查機制,也可以閱讀之前推送的文章。
深入淺出講透set_multicycle_path,從此徹底掌握它
Slack(裕量) :
Slack是指數據需要達到時間和實際達到時間之差。
Data Arrival Time : 數據在datapath上傳輸的時間
Data Required Time : 時鍾在clock path上傳輸的時間
Setup Slack = Data Required Time – Data Arrival Time
Hold Slack = Data Arrival Time – Data Required Time
有了setup和hold概念和計算公式后,很容易就能知道如何去fix setup and hold violation。這個很簡單,大家自己多多總結。之前推送的文章數字芯片設計實現中修復setup違例的方法匯總 系統全面介紹過修復setup violation的方法,各位可以前往復習下。
介紹這些基本概念后,我們來個實戰。下面這道題是某公司應屆生校園招聘的筆試題目,大家做做看。計算電路最高工作頻率的面試題數不勝數,幾乎一大半的公司都會考這種題。目的是考察應聘者是否熟悉setup,hold檢查的方式,是否具備基本的時序分析能力。這道題如果你還不會做或者會做錯,請給自己敲個警鍾。其實這道題還算簡單的,如果存在多條路徑到FF2的情況,你是否也能正確算出電路的最高工作頻率呢?反正原理是一樣的。

圖6 電路最高工作頻率思考題
