VIVADO XDC約束注意事項

在ISE時代,使用的是UCF約束文件。從Vivado開始,XDC成了唯一支持的約束標準。XDC除了遵循工業界的通行標準SDC(Synopsys Design Constraints)之外,還加入了XILINX FPGA特有的位置物理約束等特性。以下是在實際使用中,經歷過一些經驗教訓後,體會的幾點我們在組織XDC約束時需要注意的事項。

1. XDC約束條目是有先後順序的

XDC裏面每一行相當於一條指令,Vivado按照行序從前往後讀取XDC指令,所以越後面的XDC指令,其優先級越高。比如當有2條XDC指令約束同一個東西時,後面指令會因爲執行的比較晚,而覆蓋前一條指令的效果,這點需要我們特別注意!

因爲XDC中的指令有先後順序,所以推薦的XDC文件組織方式一般是把timing約束放在前面,而把物理位置約束放在後面。如果更具體些,可以遵循下面的順序:

## Timing Assertions Section
# Primary clocks
# Virtual clocks
# Generated clocks
# Clock Groups
# Input and output delay constraints

## Timing Exceptions Section
# False Paths
# Max Delay / Min Delay
# Multicycle Paths
# Case Analysis
# Disable Timing

## Physical Constraints Section

2. 一個Vivado工程中可以添加多個XDC文件

這樣的好處是便於管理組織。因爲XDC約束條目是有順序要求的,所以XDC文件也是有先後順序的,我們可以在GUI界面通過鼠標拖拽,來調整XDC文件的順序。一般推薦把Timing約束,同物理位置屬性約束,分別放到不同的文件當中,就如同下面所做的那樣:

 

另外請注意,VIVADO不但可以支持多個XDC文件,還可以支持多組XDC文件集合,但是同時只能有1個集合起作用。如果我們一次create多個synthesis或者implementation,我們還可以爲它們每一個分別制定使用哪個約束文件。這個特性在時序收斂階段比較有用。

3. 關於XDC文件的指令和註釋

在XDC裏面,每個完整的XDC約束指令不應當跨行,必須在一行之內表達完畢。同樣,在一行之內也只允許存在一個約束指令,不可以把2個約束放在同一行。

關於註釋(以“#”開頭),唯一的一點限制是,在有效的XDC約束指令行末,不可以添加“#”開頭的註釋,否則Vivado工具會理解錯誤。這跟我們在其它語言中通常所理解的註釋語法不太一樣,可能需要建議XILINX改進。

錯誤:

正確:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章