Vivado使用技巧(30):使用時序約束嚮導
時序約束嚮導
開啟綜合設計或實現設計後,在Flow Navigator中點選Open Synthesized/Implemented Design目錄下的Constraints Wizard可以開啟時序約束嚮導(會要求選擇一個target約束檔案)。彈出如下視窗:
利用該向導可以快速地完成時序約束。時序約束嚮導會分析網表、時鐘網路的連線和已存在的時序約束,給出一些缺少的時序約束的建議。時序約束嚮導的前11頁按照3個目錄給出不同種類的時序約束,下表給出一個大致介紹:
時鐘 | |
---|---|
Primary clocks | 通常指通過輸入埠進入設計的時鐘 |
Generated clocks | 由主時鐘產生的時鐘,如MMCM/PLL輸出的時鐘 |
Forwarded clocks | 定義在輸出埠上的內部時鐘 |
External feedback delays | FPGA輸入和輸出埠之間的板級延時 |
輸入與輸出埠 | |
Input delays | 描述了輸入訊號與參考時鐘之間的相對相位 |
Output delays | 描述了輸出訊號與參考時鐘之間的相對相位 |
Combinatorial delays | 沒有經過任何時序單元,直接穿過FPGA的路徑 |
時鐘域交叉 | |
Physically exclusive clock groups | 指不會在設計中同時存在的物理互斥時鐘 |
Logically exclusive clock groups with no interaction | 這部分時鐘在共享時鐘樹之外,彼此之間沒有邏輯路徑時,它們在邏輯上是互斥的。 |
Logically exclusive clock groups with interaction | 這部分時鐘彼此之間有邏輯路徑時,只有限定在共享時鐘樹部分的時鐘在邏輯上才是互斥的。 |
Asynchronous clock domain crossings | 指在不具有明確相位關係的兩個時鐘之間傳輸資料,稱為非同步時鐘域交叉 |
上面的每一步都可以根據約束嚮導的建議進行約束,如果執意不想約束該物件,取消勾選物件前的核取方塊即可。如果取消勾選了某條建議,則後續步驟中的一些缺少的時序約束不會被檢測出來。比如跳過了建立主時鐘的步驟,約束嚮導便不會識別出與此時鐘相關的時序約束。
最後是一個Summary介面,給出了前面建立的所有約束,可以點選檢視約束的詳細資訊,退出約束嚮導後在時序約束視窗中也可以看到新約束。點選Finish結束約束嚮導時,還可以勾選如下選項建立相應報告:
- Create Timing Summary report:報告在新約束條件下的時序裕量,如果設定的週期或I/O延遲約束太過苛刻,會出現時序違背情況。
- Create Check Timing report:識別出不恰當地或缺少的約束。
- Create DRC Report using only Timing Checks:執行時序相關DRC檢查。
時序約束嚮導不會推薦會引進不安全的時序分析的約束,也不會修復當前將設計匯入記憶體時已經存在的不恰當約束。因此如果使用嚮導之後,執行時序檢查或DRC檢查時仍然存在一些時序問題,通常都是由源XDC檔案中已經存在的約束問題引起的,設計者需要自己解決這些問題,而不是試圖依靠約束嚮導來解決問題。
在嚮導中編輯約束
上文已經提到過,可以通過物件前的核取方塊來選擇是否建立該約束,該功能也可以通過選擇物件->右鍵->Create Constraint或Do Not Create Constraint實現。如下圖所示:
缺少的值顯示為紅色的undefined,如上圖中的Frequency和Period,雙擊可以設定值。如果希望同時編輯多個約束,則選中所有約束相同的行,點選Edit Selected Rows按鈕,在彈出的視窗中同時編輯所有物件的約束值:
使用Back和Next可以在不同的約束介面之間進行切換,但是如果沒有處理當前介面的所有缺少的值,便無法切換到下一個約束介面。再次強調一遍,時鐘約束嚮導無法編輯已經存在的時序約束,只會建立新的約束。
時序約束視窗
如果想要編輯已經存在的約束,在Elaborated設計階段,只能通過修改XDC檔案實現;而在綜合設計或實現設計階段,還可以通過時序約束視窗來實現。在Flow Navigator中點選Open Synthesized/Implemented Design目錄下的Edit Timing Constraints可以開啟時序約束視窗:
時序約束視窗下方的All Constraints按照XDC檔案和Tcl指令碼中的順序,或者在Tcl控制檯中輸入約束的順序顯示時序約束。如果某些約束不能在該視窗中編輯,則會標記為No Edit狀態,前面有一個?的圖示。
時序約束視窗中顯示了所有存在約束的詳細資訊,並且可以直接編輯。左邊以目錄的形式列出了各種約束型別。右邊雙擊最後一行可以建立當前所選型別的一個新約束,彈出視窗中完善約束資訊。點選OK即可將約束在記憶體中應用,但是隻有點選Save Constraints後才會儲存到XDC檔案中。如建立一個新的時鐘約束,彈出視窗如下:
另外IP核約束是無法編輯或刪除的,如果非要這樣做,可以禁用IP核發布的約束檔案,將其中的內容複製貼上到使用者XDC中,即可進行編輯操作。
相關文章
- Vivado使用技巧(31):時鐘的約束方法
- Vivado使用技巧(29):約束功能概述
- Vivado使用技巧(33):時序異常
- Vivado使用技巧(32):IO延遲的約束方法
- Vivado使用技巧(19):使用Vivado Simulator
- Vivado使用技巧(27):RAM編寫技巧
- Vivado使用技巧(26):HDL編寫技巧
- Vivado使用技巧(17):建立IBIS模型模型
- Vivado使用技巧(9):COE檔案使用方法
- Vivado使用技巧(6):Messages視窗管理
- Vivado使用技巧(20):Waveform功能詳解ORM
- Vivado使用技巧(18):模擬功能概述
- Vivado使用技巧(25):Block Synthesis技術BloC
- Vivado使用技巧(5):屬性編輯器的使用
- (9)邏輯綜合新增約束(時序、DRC)
- Vivado使用技巧(4):查詢功能詳解
- Vivado使用技巧(3):Force Up-to-Date功能
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Vivado使用技巧(8):Core Container打包IP核AI
- Vivado使用技巧(34):路徑分割現象
- Vivado使用技巧(28):支援的Verilog語法
- 時序約束和綜合+跨時鐘產生的問題+spyglass的使用+SOC設計問題
- Vivado使用技巧(16):SSN轉換噪聲分析
- Vivado使用技巧(14):IO規劃方法詳解
- Vivado使用技巧(23):綜合執行與OOC
- Vivado使用技巧(21):模擬中的Debug特性
- composer 版本約束使用方法
- PostgreSQL唯一約束如何使用?SQL
- Vivado使用技巧(7):使用IP核自帶Testbench進行模擬
- Vivado使用技巧(15):DRC設計規則檢查
- Vivado使用技巧(13):CSV檔案定義IO Ports
- 基於Bootstrap的jQuery使用者嚮導外掛bootjQuery
- 使用嚮導介面 豐富細節的移倉助手
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- Vivado使用技巧(10):編輯與改寫IP核原始檔
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Vivado使用技巧(22):綜合策略與設定的選擇
- 使用 yo 命令列嚮導建立 SAP UI5 應用命令列UI