時序約束優先順序 幾種進行時序約束的方法

2021-10-19 06:31:31 字數 2728 閱讀 8600

對自己的設計的實現方式越了解,對自己的設計的時序要求越了解,對目標器件的資源分布和結構越了解,對eda工具執行約束的效果越了解,那麼對設計的時序約束目標就會越清晰,相應地,設計的時序收斂過程就會更可控。

從最近一段時間工作和學習的成果中,我總結了如下幾種進行時序約束的方法。按照從易到難的順序排列如下:

0. 核心頻率約束

這是最基本的,所以標號為0。

1. 核心頻率約束+時序例外約束

時序例外約束包括falsepath、multicyclepath、maxdelay、mindelay。但這還不是最完整的時序約束。如果僅有這些約束的話,說明設計者的思路還侷限在fpga晶元內部。

2. 核心頻率約束+時序例外約束+i/o約束

i/o約束包括引腳分配位置、空閒引腳驅動方式、外部走線延時(inputdelay、outputdelay)、上下拉電阻、驅動電流強度等。加入i/o約束後的時序約束,才是完整的時序約束。fpga作為pcb上的乙個器件,是整個pcb系統時序收斂的一部分。fpga作為pcb設計的一部分,是需要pcb設計工程師像對待所有cots器件一樣,閱讀並分析其i/o timing diagram的。fpga不同於cots器件之處在於,其i/o timing是可以在設計後期在一定範圍內調整的;雖然如此,最好還是在pcb設計前期給與充分的考慮並歸入設計文件。

正因為fpga的i/o timing會在設計期間發生變化,所以準確地對其進行約束是保證設計穩定可控的重要因素。許多在fpga重新編譯後,fpga對外部器件的操作出現不穩定的問題都有可能是由此引起的。

3. 核心頻率約束+時序例外約束+i/o約束+post-fit netlist

引入post-fit netlist的過程是從一次成功的時序收斂結果開始,把特定的一組邏輯(design partition)在fpga上實現的布局位置和佈線結果(netlist)固定下來,保證這一布局佈線結果可以在新的編譯中重現,相應地,這一組邏輯的時序收斂結果也就得到了保證。這個部分保留上一次編譯結果的過程就是incremental compilation,保留的網表型別和保留的程度都可以設定,而不僅僅侷限於post-fit netlist,從而獲得相應的保留力度和優化效果。由於有了eda工具的有力支援,雖然是精確到門級的細粒度約束,設計者只須進行一系列設定操作即可,不需要關心布局和佈線的具體資訊。由於精確到門級的約束內容過於繁多,在qsf檔案中儲存不下,得到保留的網表可以以partial netlist的形式輸出到乙個單獨的檔案qxp中,配和qsf檔案中的粗略配置資訊一起完成增量編譯。

4. 核心頻率約束+時序例外約束+i/o約束+logiclock

logiclock是在fpga器件底層進行的布局約束。logiclock的約束是粗粒度的,只規定設計頂層模組或子模組可以調整的布局位置和大小(logiclock regions)。成功的logiclock需要設計者對可能的時序收斂目標作出預計,考慮特定邏輯資源(引腳、儲存器、dsp)與logiclock region的位置關係對時序的影響,並可以參考上一次時序成功收斂的結果。這一權衡和規劃fpga底層物理布局的過程就是floorplanning。logiclock給了設計者對布局位置和範圍更多的控制權,可以有效地向eda工具傳遞設計者的設計意圖,避免eda工具由於缺乏布局優先順序資訊而盲目優化非關鍵路徑。由於模組在每一次編譯中的布局位置變化被限定在了最優的固定範圍內,時序收斂結果的可重現性也就更高。由於其粗粒度特性,logiclock的約束資訊並不很多,可以在qsf檔案中得到保留。

需要注意的是,方法3和4經常可以混合使用,即針對floorplanning指定的logiclock region,把它作為乙個design partition進行incremental compilation。這是造成上述兩種方法容易混淆的原因。

5. 核心頻率約束+時序例外約束+i/o約束+暫存器布局約束

暫存器布局約束是精確到暫存器或le一級的細粒度布局約束。設計者通過對設計施加精準的控制來獲得可靠的時序收斂結果。對設計中的每乙個暫存器手工進行布局位置約束並保證時序收斂是一項浩大的工程,這標誌著設計者能夠完全控制設計的物理實現。這是乙個理想目標,是不可能在有限的時間內完成的。通常的做法是設計者對設計的區域性進行暫存器布局約束並通過實際執行布局佈線工具來獲得時序收斂的資訊,通過數次迭代逼近預期的時序目標。

不久前我看到過乙個這樣的設計:乙個子模組的每乙個暫存器都得到了具體的布局位置約束。該模組的時序收斂也就相應地在每一次重新編譯的過程中得到了保證。經過分析,這一子模組的設計和約束最初是在原理圖中進行的,在達到時序收斂目標後該設計被轉換為hdl語言描述,相應的約束也儲存到了配置檔案中

6. 核心頻率約束+時序例外約束+i/o約束+特定路徑延時約束

好的時序約束應該是「引導型」的,而不應該是「強制型」的。通過給出設計中關鍵路徑的時序延遲範圍,把具體而微的工作留給eda工具在該約束的限定範圍內自由實現。這也是乙個理想目標,需要設計者對每一條時序路徑都做到心中有數,需要設計者分清哪些路徑是可以通過核心頻率和簡單的時序例外約束就可以收斂的,哪些路徑是必須制定maxdelay和mindelay的,一條也不能遺漏,並且還需要eda工具「善解人意」的有力支援。設定路徑延時約束就是間接地設定布局佈線約束,但是比上述3、4、5的方法更靈活,而且不失其準確性。通過時序約束而不是顯式的布局和網表約束來達到時序收斂才是時序約束的真諦。

記得有網友說過「好的時序是設計出來的,不是約束出來的」,我一直把這句話作為自己進行邏輯設計和時序約束的指導。好的約束必須以好的設計為前提。沒有好的設計,在約束上下再大的功夫也是沒有意義的。不過,通過正確的約束也可以檢查設計的優劣,通過時序分析報告可以檢查出設計上時序考慮不周的地方,從而加以修改。通過幾次「分析—修改—分析」的迭代也可以達到完善設計的目標。應該說,設計是約束的根本,約束是設計的保證,二者是相輔相成的關係。

時序約束優先順序 6 xdc約束優先順序

在xdc檔案中,按約束的先後順序依次被執行,因此,針對同乙個時鐘的不同約束,只有最後一條約束生效。雖然執行順序是從前到後,但優先順序卻不同 就像四則運算一樣,x 都是按照從左到右的順序執行,但x 的優先順序比 要高。時序例外的優先順序從高到低為 clock groups set clock grou...

FPGA時序約束的幾種方法

對自己的設計的實現方式越了解,對自己的設計的時序要求越了解,對目標器件的資源分布和結構越了解,對eda工具執行約束的效果越了解,那麼對設計的時序約束目標就會越清晰,相應地,設計的時序收斂過程就會更可控。riple 0.核心頻率約束 這是最基本的,所以標號為0。riple 1.核心頻率約束 時序例外約...

UILabel設定約束優先順序

相信很多人在ios開發中,使用多個uilabel會遇到乙個問題,在多個uilabel並列或者垂直排列設定約束都會報錯.既無法確定高度或者寬度.其實這是ios系統沒法判斷哪個控制項的約束優先順序更多而報錯。下面我們就看看 如何設定吧 水平方向別扯我 label setcontenthuggingpri...