3

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

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

实现某种“条件约束”的最佳方法是什么,可以避免这个问题?(除了我的 UCF 文件中明显的预处理器/脚本之外)

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

4

4 回答 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 文件,然后创建一个脚本来指向一个或另一个,或者在您每次打开/关闭通用开关时手动替换它。

于 2013-10-14T13:10:29.853 回答
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

于 2013-10-15T11:06:14.257 回答
1

另一种可能的解决方案是使用赛灵思综合属性。

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

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

正确的解决方案可能取决于您有多少约束。

于 2013-10-15T20:31:56.573 回答
0

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

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

于 2014-05-23T12:55:21.037 回答