由于XDC約束是按順序應用的,并且基于明確的優先級規則進行優先級排序,因此必須仔細檢查約束的順序。
如果多個物理約束發生沖突,則最新約束將獲勝。 例如,如果通過多個XDC文件為I / O端口分配了不同的位置(LOC),則分配給該端口的最新位置優先。
Vivado IDE可全面了解您的設計。 要逐步驗證您的約束:
1.運行相應的報告命令。
2.查看Tcl控制臺或“消息”窗口中的消息。
推薦的約束順序
建議:無論是為設計使用一個還是多個XDC文件,都按以下順序組織約束。
## Timing Assertions Section # Primary clocks # Virtual clocks # Generated clocks # Clock Groups # Bus Skew constraints # Input and output delay constraints ## Timing Exceptions Section # False Paths # Max Delay / Min Delay # Multicycle Paths # Case Analysis # Disable Timing ## Physical Constraints Section # located anywhere in the file, preferably before or after the timing constraints # or stored in a separate constraint file
從時鐘定義開始。 必須先創建時鐘,然后才能將它們用于任何后續約束。 聲明之前對時鐘的任何引用都會導致錯誤,并忽略相應的約束。 在單個約束文件中以及設計中的所有XDC文件(或Tcl腳本)中都是如此。
約束文件的順序很重要。 您必須確保每個文件中的約束不依賴于另一個文件的約束。 如果是這種情況,則必須最后讀取包含約束依賴項的文件。 如果兩個約束文件具有相互依賴關系,則必須將它們手動合并到一個包含正確序列的文件中,或者將文件分成幾個單獨的文件并正確排序。
編輯約束順序
Vivado IDE約束管理器將任何已編輯的約束保存回XDC文件中的原始位置,但不會保存在Tcl腳本中。 任何新約束都保存在標記為目標的XDC文件的末尾。 在許多情況下,當約束集包含多個XDC文件時,目標約束文件不是列表中的最后一個文件,并且在打開或重新加載設計時不會最后加載。 因此,保存在磁盤上的約束序列可能與之前在內存中的約束序列不同。
重要信息:您必須驗證存儲在約束文件中的最終序列是否仍按預期工作。 如果必須修改序列,則必須通過直接編輯約束文件來修改它。 這對時序約束尤為重要。
約束文件順序
在沒有任何IP的項目流程中,所有約束都位于約束集中。 默認情況下,Vivado IDE中顯示的XDC文件(或Tcl腳本)的順序定義了將elaborated design或synthesized design加載到內存時工具使用的讀取順序。 首先讀取列表頂部的文件,最后讀取底部的文件。 您只需在IDE中選擇文件并將其移動到列表中的所需位置即可更改順序。
例如,在圖1中,使用拖放操作將文件wave_gen_pin.xdc移動到文件wave_gen_timing.xdc之前。
The equivalent Tcl command is:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]
在非項目模式下,read_xdc調用的順序決定了約束文件的計算順序。
Constraint Files Order with IP Cores
許多IP內核隨附一個或多個XDC文件。 在RTL項目中生成此類IP內核時,還會在各種設計編譯步驟中使用其XDC文件。
例如,圖2顯示項目中的一個IP核帶有一個XDC文件。
默認情況下,在用戶XDC文件之前讀入IP XDC文件。 以這種方式處理它允許IP創建可在XDC中引用的時鐘對象。 它還允許您覆蓋由IP內核設置的物理約束,因為在IP之后評估用戶約束。 對于依賴于由用戶或其他IP創建的時鐘對象的IP核,此順序有一個例外(例如,get_clocks -of_objects [get_ports clka])。 在這種情況下,在用戶文件之后讀取IP XDC。
此行為由PROCESSING_ORDER屬性控制,為每個XDC文件設置:
?EARLY:必須先讀取的文件
?NORMAL:默認
?LATE:必須最后讀取的文件
IP XDC將其PROCESSING_ORDER屬性設置為EARLY或LATE。 沒有哪個IP提供屬于NORMAL約束組的XDC文件。 對于屬于同 一PROCESSING_ORDER組的用戶XDC(或Tcl)文件,Vivado IDE中顯示的相對順序決定了它們的讀取順序。 可以通過移動Vivado IDE約束集中的文件或使用reorder_files命令來修改組中的順序。
對于屬于同一PROCESSING_ORDER組的IP XDC文件,順序由IP內核的導入或創建順序確定。 創建項目后,無法更改此順序。
最后,用戶組和IP XDC PROCESSING_ORDER組之間的相對順序如下:
1.標記為EARLY的用戶約束
2.標記為EARLY的IP約束(默認)
3.標記為NORMAL的用戶約束
4.標記為LATE的IP約束(包含時鐘依賴性)
5.標記為LATE的用戶約束
注意:將其PROCESSING_ORDER設置為LATE(以便在用戶約束后進行處理)的IP XDC文件命名為
下圖顯示了如何設置PROCESSING_ORDER屬性的示例:
The equivalent Tcl command is:
set_property PROCESSING_ORDER EARLY [get_files wave_gen_pins.xdc]
建議:使用Tcl控制臺中的report_compile_order -constraints命令報告由工具根據上述屬性確定的XDC文件讀取順序,包括IS_ENABLED,USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION。
Changing Read Order
要在約束集中更改XDC文件或非托管Tcl腳本的讀取順序,請執行以下操作:
1. 在“源”窗口中,選擇要移動的XDC文件或Tcl腳本。
2. 將文件拖放到約束集中的所需位置。
對于圖1中所示的示例,等效的Tcl命令是:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]
在非項目模式下,read_xdc或source命令的順序決定了約束文件的讀取順序。
如果使用帶有約束的IP內核,則會自動處理兩組約束,如下所示:
?不依賴于時鐘的約束被分組到XDC文件中,PROCESSING_ORDER設置為EARLY,
?依賴于時鐘的約束在PROCESSING_ORDER設置為LATE的XDC文件中分組。
默認情況下,用戶XDC文件屬于PROCESSING_ORDER NORMAL組。 它們在EARLY XDC文件之后和LATE XDC文件之前加載。 對于每個PROCESSING_ORDER組,IP XDC文件的加載順序與IP Sources窗口中IP核的列表順序相同。 例如,下圖顯示了XDC文件附帶的項目IP內核之一。
打開設計時,日志文件顯示最后加載了IP XDC文件:
Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst' Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst' Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0' Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0' Parsing XDC File [C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc] Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc] Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0' Finished Parsing XDC File [C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0' Completed Processing XDC Constraints
與用戶XDC文件不同,您無法直接更改屬于同一PROCESSING_ORDER組的IP XDC文件的讀取順序。 如果必須修改訂單,請執行以下操作:
1. 禁用相應的IP XDC文件(IS_ENABLED設置為false)。
2. 復制他們的內容。
3. 將內容粘貼到約束集中包含的一個XDC文件中。
4. 在需要的地方使用完整的分層網表對象路徑名更新復制的IP XDC命令。 這樣做是必需的,因為IP XDC約束以這樣的方式編寫,即它們可以作用于IP實例。
5. 查看以特殊方式處理范圍約束的get_ports查詢。
編輯:hfy
-
Vivado
+關注
關注
19文章
812瀏覽量
66471 -
xdc
+關注
關注
1文章
24瀏覽量
5927
發布評論請先 登錄
相關推薦
評論