您好,歡迎進入深圳市穎特新科技有限公司官方網站!
Xilinx®Vivado®集成設計環(huán)境(IDE)通過設置對象屬性的值,可以對設計對象進行物理約束。 例子包括:
•I / O約束,例如位置和I / O標準
•放置約束,例如單元格位置
•路由約束,例如固定路由
•配置約束,例如配置模式
與時序約束類似,物理約束必須保存在Xilinx設計約束(XDC)文件或Tcl腳本中,以便在打開設計時可以使用網表加載它們。 將設計加載到內存后,您可以使用Tcl控制臺或使用Vivado Design Suite IDE編輯工具以交互方式輸入新約束。
大多數物理約束是通過對象上的屬性定義的:
set_property <property> <value> <object list>
例外是使用Pblock命令的區(qū)域約束。
嚴重警告
針對XDC文件中的無效約束發(fā)出嚴重警告,包括應用于設計中無法找到的對象的約束警告。
有關屬性定義和用法,請參閱“Vivado設計套件屬性參考指南”
(UG912)[參考文獻11]。
網表約束
網表限制是在網表對象(如端口,引腳,網絡或單元)上設置的,要求編譯工具以特殊方式處理它們。
重要信息:確保您了解使用這些約束的影響。 它們可能會導致設計面積增加,設計性能降低,或兩者兼而有之。
網表限制包括:
•CLOCK_DEDICATED_ROUTE
•MARK_DEBUG
•DONT_TOUCH
•LOCK_PINS
CLOCK_DEDICATED_ROUTE
在網絡上設置CLOCK_DEDICATED_ROUTE以指示如何路由時鐘信號。
CLOCK_DEDICATED_ROUTE屬性用于時鐘網絡以覆蓋默認路由。這是一種先進的控制,需要極其謹慎,因為它可能會影響時間可預測性和可路由性。例如,當專用時鐘路由不可用時,CLOCK_DEDICATED_ROUTE可以設置為FALSE。值FALSE允許Vivado工具使用通用路由將時鐘從輸入端口路由到全局時鐘資源,例如BUFG或MMCM資源。這僅應用作器件封裝引腳分配被鎖定時的最后手段,并且時鐘輸入不能分配給適當的時鐘輸入引腳(CCIO)。除非用于,否則路由將是次優(yōu)和不可預測的
與FIXED_ROUTE結合。
有關此屬性的更多信息,請參閱Vivado設計套件(UG949)[參考文獻5]的UltraFast設計方法指南中的時鐘約束。
MARK_DEBUG
在RTL中的網絡上設置MARK_DEBUG以保留它并使其在網表中可見。 這允許它在編譯流程中的任何位置連接到邏輯調試工具。
有關更多信息,請參閱“Vivado Design Suite用戶指南:編程和調試”(UG908)[參考12]中的此鏈接。
DONT_TOUCH
在葉子單元格,分層單元格或網絡對象上設置DONT_TOUCH以在網表優(yōu)化期間保留它。 DONT_TOUCH最常用于:
•防止網絡被優(yōu)化掉。
帶有DONT_TOUCH的網絡無法通過綜合或實施來吸收。 這有助于邏輯探測或調試設計中的意外優(yōu)化。 要保留具有多個分層段的網絡,請將DONT_TOUCH放在凈PARENT(get_property PARENT $ net)上,該網絡是最接近其驅動程序的網段。
•防止合并手動復制的邏輯。
有時最好手動復制邏輯,例如跨越大范圍的高扇出驅動程序。 將DONT_TOUCH添加到手動復制的驅動程序(以及原始驅動程序)可防止合成和實現優(yōu)化這些單元格。
注意:使用reset_property重置DONT_TOUCH屬性。 將DONT_TOUCH屬性設置為0不會重置該屬性。
避免在分層單元上使用DONT_TOUCH來實現,因為Vivado IDE實現不會使邏輯層次結構變平。 在綜合中使用KEEP_HIERARCHY來維護應用XDC約束的邏輯層次結構。
LOCK_PINS
LOCK_PINS是一個單元屬性,用于指定邏輯LUT輸入(I0,I1,I2,...)和LUT物理輸入引腳(A6,A5,A4,...)之間的映射。
常見的用途是強制將時序關鍵的LUT輸入映射到最快的A6和A5
物理LUT輸入。
Vivado集成設計環(huán)境(IDE)支持許多與集成軟件環(huán)境(ISE®)設計套件相同的I / O約束。 以下I / O屬性列表并非詳盡無遺
有關I / O屬性的完整列表,有關I / O端口和I / O單元屬性的更多信息,以及具有正確語法的編碼示例,請參閱“Vivado設計套件屬性參考指南”(UG912)[參考11]。
注意:除非另有說明,否則所有屬性都應用于端口對象。
°有關這些屬性背后的應用和方法的更多信息,
請參閱器件SelectIO文檔,例如7系列FPGA SelectIO資源
用戶指南(UG471)[參考13]。
重要提示:ISE Design Suite和Vivado Design Suite之間存在顯著差異
在處理IOB時。 Vivado工具允許在兩個端口和連接到端口的寄存器單元上設置IOB。 如果在端口及其寄存器上設置了沖突值,則以寄存器上的值為準。 Vivado工具僅使用值TRUE和FALSE。 值FORCE被解釋為TRUE,并且忽略值AUTO。 與ISE不同,如果無法遵守IOB設置,Vivado工具會生成嚴重警告,而不是錯誤。
重要信息:將BEL和LOC屬性分配給單元格時,必須在LOC之前分配BEL。
路由約束
路由約束應用于網絡對象以控制其路由資源。
固定路由
固定路由是鎖定路由的機制,類似于ISE中的定向路由。
鎖定網絡路由資源涉及三個網絡屬性。 見表8-1。
在內存中加載實現的設計后,您可以查詢任何網絡的路由信息:
路由被定義為一系列相對路由節(jié)點名稱,扇出使用嵌入式花括號表示。 通過在網絡上設置以下屬性來修復路由:
% set_property IS_ROUTE_FIXED TRUE $net
要對XDC文件中的約束進行反向注釋以供將來運行,還必須保留連接到固定網絡的所有單元的放置。 您可以通過選擇原理圖或設備視圖中的單元格來查詢此信息,并查看其LOC / BEL屬性
“屬性”窗口中的值。 或者,您可以直接從Tcl控制臺查詢這些值:
% get_property LOC [get_cells {a0 L0 L1}]
SLICE_X0Y47 SLICE_X0Y47 SLICE_X0Y47
% get_property BEL [get_cells {a0 L0 L1}]
SLICEL.CFF SLICEL.A6LUT SLICEL.B6LUT
由于固定路由通常是時序關鍵的,因此還必須在LUT的LOCK_PINS屬性中捕獲LUT引腳映射,以防止路由器交換引腳。
同樣,您可以從Tcl控制臺查詢每個邏輯引腳的站點引腳:
% get_site_pins -of [get_pins {L0/I1 L0/I0}]
SLICE_X0Y47/A4 SLICE_X0Y47/A2
% get_site_pins -of [get_pins {L1/I1 L1/I0}]
SLICE_X0Y47/B3 SLICE_X0Y47/B2
修復net netA路由所需的完整XDC約束是:
set_property BEL CFF [get_cells a0]
set_property BEL A6LUT [get_cells L0]
set_property BEL B6LUT [get_cells L1]
set_property LOC SLICE_X0Y47 [get_cells {a0 L0 L1}]
set_property LOCK_PINS {I1:A4 I0:A2} [get_cells L0]
set_property LOCK_PINS {I1:A3 I0:A2} [get_cells L1]
set_property FIXED_ROUTE { CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 {
IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 } [get_nets netA]
如果使用交互式Tcl命令而不是XDC,則可以使用place_cell命令一次指定多個放置約束,如下所示:
place_cell a0 SLICE_X0Y47 / CFF L0 SLICE_X0Y47 / A6LUT L1 SLICE_X0Y47 / B6LUT
有關place_cell的更多信息,請參閱Vivado Design Suite Tcl命令參考
指南(UG835)[參考文獻10]。
配置約束
配置約束是應用于當前設計的比特流生成的全局約束。 這包括諸如配置模式之類的約束。
有關比特流生成屬性和定義的列表,請參閱Vivado中的此鏈接
Design Suite用戶指南:編程和調試(UG908)[參考12]。