時序約束系統學習發布時間:2010-06-03 12:02:42
一直對時序約束沒有什么明確的概念,故詳細了解各方面資料,對時序約束有一個全面的從無到有的學習,記錄如下筆記: 時序約束的概念和基本策略: 約束的基本作用有3: 另外通過區域約束還能在FPGA上規劃各個模塊的實現區域,通過物理布局布線約束,完成模塊化設計等。 時序約束在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表示。其實他們所要描述的是同一個問題,僅僅是時間節點的定義上略有不同。 常用時序約束的概念: 周期:如圖1是周期示意圖,當計算出Tperiod,那么當然fmax=1/Tperiod,fmax是顯示設計最重要的性能指標之一。 時鐘建立時間:時鐘建立時間的計算方法 Tsu = datadelay - clkdelay + Microsetup Clock Setup Time (tsu),時鐘建立時間 tsu示意圖 注:這里定義Setup時間是站在同步時序整個路徑上的,需要區別的是另一個概念Micro tsu。 Micro tsu指的是一個觸發器內部的建立時間,它是觸發器的固有屬性,一般典型值小于1~2ns。在Xilinx等的時序概念中,稱Altera的Microtsu為setup時間,用Tsetup表示,請大家區分一下。 時鐘保持時間:計算Th=clkdelay-datadelay+Microhold 注意:前兩個公式中提到的Microsetup 和Microhold一般均是一個小于1ns的常量。 Clock Hold Time tH,時鐘保持時間 時鐘保持時間是只能保證有效時鐘沿正確采到的數據和使能信號的最小穩定時間。如下圖所示。 tH示意圖 定義的公式為: Clock-to-Output Delay(tco)時鐘輸出延遲Tco: 指在時鐘有效到數據有效的最大時鐘間隔。 Tco=clkdelay+datadelay+Microco 這個時間指的是當時鐘有效沿變化后,將數據推倒同步時序路徑的輸出端的最小時間間隔。如圖8所示。 tco示意圖 Pin to Pin Delay (tpd),管腳延時 tpd指輸入管腳通過純組合邏輯到達輸出管腳這段路徑的延時,特別需要說明的是,要求輸入到輸出之間只有組合邏輯,才是tpd延時。 slack:表示設計是否滿足時序的一個稱謂:正的slack表示滿足時序,負的slack表示不滿足時序。保持時間slack是一個重要的概念,引起不滿足的主要原因是時鐘偏斜大于數據路徑的偏斜。 slack示意圖 Clock Skew 周期(PERIOD)的含義 周期的定義
Altera的周期定義如圖所示,公式描述如下: Altera 的 Period 示意圖
Fmax
常用的三種時序約束設置方法: 1 通過Assignment/timing settings 2 Assignment/timing wiard tool 3 Assignment/Assignment editor 選擇在圖形界面下完成對設計的時序約束。一般情況下前兩種是做全局的時序約束,后一種是做局部的時序約束,另外還可以通過修改.qsf文件來實現。 時序約束思想:時序約束一般都是先全局后個別,如果沖突則個別的優先級更高。 一、將編繹器設置為時序驅動編繹,即是指讓編繹過程盡量向著滿足時序約束方向努力!assignment/settings/fitter setting. 二、全局時鐘設置如果在設計中只有一個全局時鐘,或者所有的時鐘同頻,可以在Quartus2中只設置一個全局時鐘約束。 Assignment/timing settings 三、時序向導 在對時序約束設置不熟悉的情況下,可以選擇使用向導。 Assignment/classic timing analyser wizards. 四、可以設置獨立時鐘與衍生時鐘,衍生時鐘是由獨立時鐘變化而來的,他是由獨立時鐘分頻,倍頻,移相等變化而來的,可以在設置中確定二者的關系 Assignment/settings/timing analyse setting/classic timing analyse setting/individual clock。 五、通過assignment editor 設置個別時鐘約束 各部分延遲的計算: 在FPGA設計工具中包含有4種路徑:從輸入端口到寄存器,從寄存器到寄存器,從寄存器到輸出,從輸入到輸出的純組合邏輯。通常,需要對這幾種路徑分別進行約束,以便使設計工具能夠得到最優化的結果。下面對這幾種路徑分別進行討論。 1. 從輸入端口到寄存器: 這種路徑的約束是為了讓FPGA設計工具能夠盡可能的優化從輸入端口到第一級寄存器之間的路徑延遲,使其能夠保證系統時鐘可靠的采到從外部芯片到FPGA的信號。 約束名稱:input delay。 約束條件的影響主要有4個因素:外部芯片的Tco,電路板上信號延遲Tpd,FPGA的Tsu, 時鐘延遲Tclk. Tco的參數通常需要查外部芯片的數據手冊。計算公式:input delay = Tco+Tpd+Tsu-Tclk。FPGA的Tsu也需要查FPGA芯片的手冊。 FPGA速度等級不同,這個參數也不同。Tpd和Tclk需要根據電路板實際的參數來計算。通常,每10cm的線長可以按照1ns來計算。例如:系統時鐘100MHz,電路板上最大延遲2ns,時鐘最大延遲1.7ns,Tco 3ns,FPGA的Tsu為0.2ns。那么輸入延遲的值:max Input delay = 2+3+0.2-1.7=3.5ns. 這個參數的含義是指讓FPGA的設計工具把FPGA的輸入端口到第一級寄存器之間的路徑延遲(包括門延遲和線延遲)控制在10ns-3.5ns=6.5ns 以內。 2. 寄存器到寄存器: 這種路徑的約束是為了讓FPGA設計工具能夠優化FPGA內寄存器到寄存器之間的路徑,使其延遲時間必須小于時鐘周期,這樣才能確保信號被可靠的傳遞。 由于這種路徑只存在于FPGA內部,通常通過設定時鐘頻率的方式就可以對其進行約束。對于更深入的優化方法,還可以采用對寄存器的輸入和寄存器的輸出加入適當的約束,來使邏輯綜合器和布線器能夠對某條路徑進行特別的優化。還可以通過設定最大扇出數來迫使工具對其進行邏輯復制,減少扇出數量,提高性能。 3. 寄存器到輸出: 這種路徑的約束是為了讓FPGA設計工具能夠優化FPGA內部從最后一級寄存器到輸出端口的路徑,確保其輸出的信號能夠被下一級芯片正確的采到。 約束的名稱: output delay。 約束條件的影響主要有3個因素:外部芯片的Tsu,電路板上信號延遲Tpd,時鐘延遲Tclk。Tsu的參數通常需要查外部芯片的數據手冊。計算公式:output delay = Tsu+Tpd-Tclk。例如:系統時鐘100MHz,電路板上最大延遲2ns,時鐘最大延遲 1.7ns,Tsu 1ns,輸出延遲的值:max output delay = 1+2-1.7=1.3ns。這個參數的含義是指讓FPGA的設計工具把最后一級寄存器到輸出端口之間的路徑延遲(包括門延遲和線延遲)控制在 10ns-1.3ns=8.7ns 以內。 4. 從輸入端口到輸出端口: 這種路徑是指組合邏輯的延遲,指信號從輸入到輸出沒有經過任何寄存器。給這種路徑加約束條件,需要虛擬一個時鐘,然后通過約束來指定哪些路徑是要受該虛擬時鐘的約束。在Synplifypro和Precision中都有相應的約束來處理這種路徑。 |
|
來自: zhangquanling > 《FPGA_混飯吃的》