条件UCF语句或条件UCF文件包含

时间:2013-10-14 13:03:26

标签: vhdl fpga xilinx

是否有条件/解决方法有条件地在UCF文件中使用语句,或者UCF文件是否可以有条件地包含在其他UCF文件中?

我面临的问题是我有一个带有一组泛型的顶层模块,它通过生成语句有条件地实例化或从顶层模块中删除某些子模块。
但是,这些子模块中的大多数都具有在项目UCF文件中定义的时序约束。 在map或par期间的某处,构建过程被中止,表明UCF文件所引用的实例不存在(这是正确的,因为由于在顶层模块中选择了泛型而从未创建实例)。

什么是最好的方法来实现某种“条件约束”,这可以避免这个问题? (旁边显而易见的预处理程序/脚本在我的UCF文件中徘徊)

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

4 个答案:

答案 0 :(得分: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文件,并创建一个指向其中一个的脚本,或者每次打开/关闭通用开关时手动替换它。

答案 1 :(得分:3)

如果您使用的是Vivado,那么您应该知道Vivado综合下不再支持UCF文件。除非您必须使用XST,否则您不再局限于使用过时的UCF文件格式作为约束。 Vivado正在使用XDC约束,它是TCL的子集,这意味着您可以编写具有条件的代码,以您希望的任何方式处理约束。

您可以查看Xilinx的UG 903,了解如何在最新版本的工具中使用约束:

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

答案 2 :(得分:1)

另一个可能的解决方案是使用Xilinx综合属性。

这可以用来约束网络的时间,就像UCF一样。

不同之处在于,属性可以在VHDL中内联,在信号声明附近。 但它很笨重。

正确的解决方案可能取决于你有多少限制。

答案 3 :(得分:0)

我赞成了FarhadA的答案,但我想强调一点,即XDC文件是TCL脚本,因此它们可以包括条件和循环。比UCF文件好得多。

Vivado中约束处理的另一个优点是,如果遇到与设计不匹配的约束,它会发出严重警告并继续。