很多人詢問關於約束、時序分析的問題,比如:如何設置setup,hold時間?如何使用全局時鐘和第二全局時鐘(長線資源)?如何進行分組約束?如何約束某部分組合邏輯?如何通過約束保證非同步時鐘域之間的數據交換可靠?如何使用I/O邏輯單元內部的寄存器資源?如何進行物理區域約束,完成物理綜合和物理實現?為了解決大家的疑難,我們將逐一討論這些問題。(註:以下主要設計時序約束)
A 時序約束的概念和基本策略
時序約束主要包括周期約束(FFS到FFS,即觸發器到觸發器)和偏移約束(IPAD到FFS、FFS到OPAD)以及靜態路徑約束(IPAD到OPAD)等3種。通過附加約束條件可以使綜合布線工具調整映射和布局布線過程,使設計達到時序要求。例如用OFFSET_IN_BEFORE約束可以告訴綜合布線工具輸入信號在時鐘之前什麼時候準備好,綜合布線工具就可以根據這個約束調整與IPAD相連的Logic Circuitry的綜合實現過程,使結果滿足FFS的建立時間要求。
附加時序約束的一般策略是先附加全局約束,然後對快速和慢速例外路徑附加專門約束。附加全局約束時,首先定義設計的所有時鐘,對各時鐘域內的同步元件進行分組,對分組附加周期約束,然後對FPGA/CPLD輸入輸出PAD附加偏移約束、對全組合邏輯的PAD TO PAD路徑附加約束。附加專門約束時,首先約束分組之間的路徑,然後約束快、慢速例外路徑和多周期路徑,以及其他特殊路徑。
B 附加約束的基本作用
C 周期(PERIOD)的含義
周期的含義是時序中最簡單也是最重要的含義,其它很多時序概念會因為軟體商不同略有差異,而周期的概念確是最通用的,周期的概念是FPGA/ASIC時序定義的基礎概念。後面要講到的其它時序約束都是建立在周期約束的基礎上的,很多其它時序公式,可以用周期公式推導。周期約束是一個基本時序和綜合約束,它附加在時鐘網線上,時序分析工具根據PERIOD約束檢查時鐘域內所有同步元件的時序是否滿足要求。PERIOD約束會自動處理寄存器時鐘端的反相問題,如果相鄰同步元件時鐘相位相反,那麼它們之間的延遲將被默認限制為PERIOD約束值的一半。如下圖所示,
圖1 周期的定義
時鐘的最小周期為:
TCLK = TCKO +TLOGIC +TNET +TSETUP -TCLK_SKEW
TCLK_SKEW =TCD2 -TCD1
其中TCKO為時鐘輸出時間,TLOGIC為同步元件之間的組合邏輯延遲,TNET為網線延遲,TSETUP為同步元件的建立時間,TCLK_SKEW為時鐘信號TCD2和TCD1延遲的差別。
D 數據和時鐘之間的約束
為了確保晶元數據採樣可靠和下級晶元之間正確地交換數據,需要約束外部時鐘和數據輸入輸出引腳之間的時序關係(或者內部時鐘和外部輸入/輸出數據之間的關係,這僅僅是從採用了不同的參照系罷了)。約束的內容為告訴綜合器、布線器輸入數據到達的時刻,或者輸出數據穩定的時刻,從而保證與下一級電路的時序關係。
這種時序約束在Xilinx中用Setup to Clock(edge),Clock(edge) to hold等表示。在Altera里常用tsu (Input Setup Times)、th (Input Hold Times)、tco (Clock to Out Delays)來表示。很多其它時序工具直接用setup和hold表示。其實他們所要描述的是同一個問題,僅僅是時間節點的定義上略有不同。下面依次介紹。
E 關於輸入到達時間
Xilinx的"輸入到達時間的計算"時序描述如下圖所示:
圖2 輸入到達時間示意圖
定義的含義是輸入數據在有效時鐘沿之後的TARRIVAL時刻到達。則,
TARRIVAL=TCKO+TOUTPUT+TLOGIC 公式1
根據上面介紹的周期(Period)公式,我們可以得到:
Tcko+Toutput+Tlogic+Tinput+Tsetup-Tclk_skew=Tclk; 公式2
將公式1代入公式2: Tarrival+Tinput+Tsetup-Tclk_skew=Tclk, 而Tclk_skew滿足時序關係後為負,所以
TARRIVAL +TINPUT+TSETUP <TCLK 公式3
這就是Tarrival應該滿足的時序關係。其中TINPUT為輸入端的組合邏輯、網線和PAD的延遲之和,TSETUP為輸入同步元件的建立時間。
F 數據延時和數據到達時間的關係
圖3 數據延時和數據到達時間示意圖
TDELAY為要求的晶元內部輸入延遲,其最大值TDELAY_MAX與輸入數據到達時間TARRIVAL的關係如上圖所示。也就是說: TDELAY_MAX+TARRIVAL=TPERIOD 公式4
所以:
TDELAY<TDELAY_MAX=TPERIOD-TARRIVAL
G 要求輸出的穩定時間
從下一級輸入端的延遲可以計算出當前設計輸出的數據必須在何時穩定下來,根據這個數據對設計輸出端的邏輯布線進行約束,以滿足下一級的建立時間要求,保證下一級採樣的數據是穩定的。計算要求的輸出穩定時間如下圖所示:
圖4 要求的輸出穩定時間示意圖
公式的推導如下:
定義:TSTABLE = TLOGIC +TINPUT +TSETUP
從前面帖子介紹的周期(Period)公式,可以得到(其中TCLK_SKEW=TCLK1-TCLK2):
TCLK=TCKO+TOUTPUT+TLOGIC+TINPUT+TSETUP+TCLK_SKEW
將TSTABLE的定義代入到周期公式,可以得到:
TCLK=TCKO+TOUTPUT+TSTABLE+TCLK_SKEW
所以:TCKO +TOUTPUT+TSTABLE<TCLK
這個公式就是TSTABLE必須要滿足的基本時序關係,即本級的輸出應該保持怎麼樣的穩定狀態,才能保證下級晶元的採樣穩定。有時我們也稱這個約束關係是輸出數據的保持時間的時序約束關係。只要滿足上述關係,當前晶元輸出端的數據比時鐘上升沿提早TSTABLE 時間穩定下來,下一級就可以正確地採樣數據。其中TOUTPUT為設計中連接同步元件輸出端的組合邏輯、網線和PAD的延遲之和,TCKO為同步元件時鐘輸出時間。
[admin via 研發互助社區 ] 約束、時序分析的概念已經有3848次圍觀
http://cocdig.com/docs/show-post-43029.html