使用約束

Xilinx®Vivado®集成設計環境(IDE)經過設置對象屬性的值,能夠對設計對象進行物理約束。 例子包括:
•I / O約束,例如位置和I / O標準
•放置約束,例如單元格位置
•路由約束,例如固定路由
•配置約束,例如配置模式
與時序約束相似,物理約束必須保存在Xilinx設計約束(XDC)文件或Tcl腳本中,以便在打開設計時可使用網表加載它們。 將設計加載到內存後,您可使用Tcl控制檯或使用Vivado Design Suite IDE編輯工具以交互方式輸入新約束。
大多數物理約束是經過對象上的屬性定義的:
set_property <property> <value> <object list>
例外是使用Pblock命令的區域約束。編程

嚴重警告
針對XDC文件中的無效約束髮出嚴重警告,包括應用於設計中沒法找到的對象的約束警告。
有關屬性定義和用法,請參閱「Vivado設計套件屬性參考指南」
(UG912)[參考文獻11]。網絡

網表約束
網表限制是在網表對象(如端口,引腳,網絡或單元)上設置的,要求編譯工具以特殊方式處理它們。
重要信息:確保您瞭解使用這些約束的影響。 它們可能會致使設計面積增長,設計性能下降,或二者兼而有之。工具

網表限制包括:
•CLOCK_DEDICATED_ROUTE
•MARK_DEBUG
•DONT_TOUCH
•LOCK_PINS性能

 

CLOCK_DEDICATED_ROUTE優化

 

 

在網絡上設置CLOCK_DEDICATED_ROUTE以指示如何路由時鐘信號。ui

CLOCK_DEDICATED_ROUTE屬性用於時鐘網絡以覆蓋默認路由。這是一種先進的控制,須要極其謹慎,由於它可能會影響時間可預測性和可路由性。例如,當專用時鐘路由不可用時,CLOCK_DEDICATED_ROUTE能夠設置爲FALSE。值FALSE容許Vivado工具使用通用路由將時鐘從輸入端口路由到全局時鐘資源,例如BUFG或MMCM資源。這僅應用做器件封裝引腳分配被鎖定時的最後手段,而且時鐘輸入不能分配給適當的時鐘輸入引腳(CCIO)。除非用於,不然路由將是次優和不可預測的編碼

與FIXED_ROUTE結合。
有關此屬性的更多信息,請參閱Vivado設計套件(UG949)[參考文獻5]的UltraFast設計方法指南中的時鐘約束。
設計

MARK_DEBUG
在RTL中的網絡上設置MARK_DEBUG以保留它並使其在網表中可見。 這容許它在編譯流程中的任何位置鏈接到邏輯調試工具。
有關更多信息,請參閱「Vivado Design Suite用戶指南:編程和調試」(UG908)[參考12]中的此連接。3d

DONT_TOUCH
在葉子單元格,分層單元格或網絡對象上設置DONT_TOUCH以在網表優化期間保留它。 DONT_TOUCH最經常使用於:
•防止網絡被優化掉。
帶有DONT_TOUCH的網絡沒法經過綜合或實施來吸取。 這有助於邏輯探測或調試設計中的意外優化。 要保留具備多個分層段的網絡,請將DONT_TOUCH放在淨PARENT(get_property PARENT $ net)上,該網絡是最接近其驅動程序的網段。
•防止合併手動複製的邏輯。
有時最好手動複製邏輯,例如跨越大範圍的高扇出驅動程序。 將DONT_TOUCH添加到手動複製的驅動程序(以及原始驅動程序)可防止合成和實現優化這些單元格。
注意:使用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集成設計環境(IDE)支持許多與集成軟件環境(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。

在內存中加載實現的設計後,您能夠查詢任何網絡的路由信息:

路由被定義爲一系列相對路由節點名稱,扇出使用嵌入式花括號表示。 經過在網絡上設置如下屬性來修復路由:

% 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]。

相關文章
相關標籤/搜索