2013-10-14 58 views
3

有沒有一種方法/解決方法有條件地在UCF文件中使用語句,或者UCF文件是否可以有條件地包含在其他UCF文件中?有條件的UCF語句或有條件的UCF文件包含

我面臨的問題是,我有一個頂級模塊的一組泛型,它通過生成語句有條件地從頂層模塊實例化或刪除某些子模塊。
但是,大多數這些子模塊在項目U​​CF文件中定義了時間約束。 在map或par的某個地方,構建過程被中止,說明UCF文件引用的實例不存在(這是正確的,因爲實例從未被創建,因爲頂層模塊中的泛型選擇)。

什麼是最好的方式來實現某種「條件約束」,它可以避免這個問題? (旁邊是我的UCF文件中顯而易見的預處理器/腳本)

PS:我正在使用Xilinx ISE 14.4/Vivado 2012.4命令行工具。

回答

3

這個問題已經被問了幾次:

http://forums.xilinx.com/t5/Design-Entry/include-and-ifdef-for-ucf-files/td-p/77822

http://forums.xilinx.com/t5/Design-Entry/Conditional-inclusion-of-ucf-files/td-p/195684

簡短的回答是否定的,不可能的不幸。

最好的辦法是創建2個獨立的UCF文件,並創建一個指向其中一個或另一個的腳本,或者在每次打開/關閉通用開關時手動替換它。

+0

謝謝,但由於這兩個帖子是從2010年和2011年的事情可能已經改變到現在...... – damage

+0

我希望是這樣。 – Russell

3

如果您使用的是Vivado,那麼您應該知道在Vivado綜合下不再支持UCF文件。除非您必須使用XST,否則您不再限制爲約束使用過時的UCF文件格式。 Vivado使用XDC約束,這是TCL的子集,這意味着您可以編寫一個條件代碼,以您希望的任何方式處理約束條件。

您可以在UG 903看看,賽靈思爲moredetails如何在最新版本的他們的工具使用的約束:

http://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug903-vivado-using-constraints.pdf

+0

感謝您的提示。我將檢查是否可以使用當前正在使用的工具鏈將ucf文件移植到新格式(不確定當前工具鏈是否支持這種新格式)。 – damage

+0

那麼,如果你使用Vivado,你沒有選擇。 Vivado不支持UCF,除非您強制使用XST作爲合成。 – FarhadA

1

另一種可能的解決方案是使用賽靈思綜合屬性。

這可以做到限制網絡的時間,就像UCF可以。

不同之處在於,信號聲明附近的屬性可以在VHDL中以內聯方式完成。不過,它很笨重。

正確的解決方案可能取決於您有多少約束條件。

+1

是的,但我真的不喜歡有供應商特定的內聯代碼的想法... – damage

+0

我認爲這是一個非常糟糕的主意,將特定於工具的選項放入代碼中會使其無法使用或很難用於任何沒有使用特定的工具。除非您只想爲Xilinx創建並且僅爲ISE創建,否則請繼續操作,否則,應該遠離這些工具特定的內嵌命令。 – FarhadA

0

我提高了FarhadA的回答,但我想強調一點,即XDC文件是TCL腳本,因此它們可以包含條件和for循環。比UCF文件好得多。

Vivado約束處理的另一個優勢是,如果遇到與設計不匹配的約束,它將發出嚴重警告並繼續。