歡迎您光臨本站 登入註冊首頁

約束、時序分析的概念

admin @ 2014-03-26 , reply:0

概述

   很多人詢問關於約束、時序分析的問題,比如:如何設置setup,hold時間?如何使用全局時鐘和第二全局時鐘(長線資源)?如何進行分組約束?如何約束某部分組合邏輯?如……

    很多人詢問關於約束、時序分析的問題,比如:如何設置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 附加約束的基本作用

  1.  提高設計的工作頻率
         對很多數字電路設計來說,提高工作頻率非常重要,因為高工作頻率意味著高處理能力。通過附加約束可以控制邏輯的綜合、映射、布局和布線,以減小邏輯和布線延時,從而提高工作頻率。
  2.  獲得正確的時序分析報告
         幾乎所有的FPGA設計平台都包含靜態時序分析工具,利用這類工具可以獲得映射或布局布線后的時序分析報告,從而對設計的性能做出評估。靜態時序分析工具以約束作為判斷時序是否滿足設計要求的標準,因此要求設計者正確輸入約束,以便靜態時序分析工具輸出正確的時序分析報告。
  3.  指定FPGA/CPLD引腳位置與電氣標準
         FPGA/CPLD的可編程特性使電路板設計加工和FPGA/CPLD設計可以同時進行,而不必等FPGA/CPLD引腳位置完全確定,從而節省了系統開發時間。這樣,電路板加工完成後,設計者要根據電路板的走線對FPGA/CPLD加上引腳位置約束,使FPGA/CPLD與電路板正確連接。另外通過約束還可以指定IO引腳所支持的介面標準和其他電氣特性。為了滿足日新月異的通信發展,Xilinx新型FPGA/CPLD可以通過IO引腳約束設置支持諸如AGP、BLVDS、CTT、GTL、GTLP、HSTL、LDT、LVCMOS、LVDCI、LVDS、LVPECL、LVDSEXT、LVTTL、PCI、PCIX、SSTL、ULVDS等豐富的IO介面標準。另外通過區域約束還能在FPGA上規劃各個模塊的實現區域,通過物理布局布線約束,完成模塊化設計等。

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