【发布时间】:2023-03-19 10:30:01
【问题描述】:
我不确定这是否是发布此内容的正确堆栈交换网站,但如果不是,请将其移至适当的网站。
我在为 spartan 3 入门套件编写约束文件时遇到了一个小问题。
我已经阅读了赛灵思(制造商)提供的文档,并且我在网上搜索了几个星期,但没有任何运气。
我要做的是将我的网表接口链接到板上的 3 个 40 针头中的任何一个。 (见下图)
通常它很简单,如果说我想在板上连接一个按钮或一个 LED,我只需阅读板上的连接名称,例如其中一个按钮是 M13 并写在 UCF 文件中是这样的:
NET "BTN0" LOC = "M13";
正如您在图片上看到的,在板上的标题分别命名为 A1、A2 和 B1,但奇怪的是,以下都不起作用:
NET "TestOutputLine" LOC = "A1(0)"; -- The (0) is to reference a single line on an array
NET "TestOutputBus" LOC = "A1"; -- The bus is of equal dimension of A1 (which is 40)
我得到的错误意味着目标(由 LOC 指定)不存在或分配无效。
我希望你对我有一些想法。 提前致谢
编辑: 这是 ISE 的输出:
ConstraintSystem:59 - Constraint <NET "TestOutputBus" LOC = "A1";>
[circuit.ucf(12)]: NET "TestOutputBus" not found. Please verify that:
1. The specified design element actually exists in the original design.
但我很确定 TestOutputBus 存在,事实上我的设计中没有其他内容,并且正在使用正确的顶级单元。
EDIT2: 我更新了我的 UCF 文件,现在是这样的:
NET "TestOutputBus(0)" LOC = "A1(0)";
NET "TestOutputBus(1)" LOC = "A1(1)";
但是我现在在映射中遇到了一个不同的错误:
MapLib:30 - LOC constraint A1:0 on TestOutputBus<0> is invalid: No such
site on the device. To bypass this error set the environment variable
'XIL_MAP_LOCWARN'.
MapLib:30 - LOC constraint A1:1 on TestOutputBus<1> is invalid: No such
site on the device. To bypass this error set the environment variable
'XIL_MAP_LOCWARN'.
解决方案:
为了将引脚 5 和 6 分别映射到 TestOutputBus(0) 和 TestOutputBus(1),我必须使用的是:
NET "TestOutputBus(0)" LOC = "N7"; -- A1 pin 5
NET "TestOutputBus(1)" LOC = "L5"; -- A1 pin 6
请注意,引脚 0 不可映射,这就是我使用引脚 5 和 6 的原因,这里是显示所有接头及其 LOC 的可映射引脚的表格。
【问题讨论】:
-
你写的是有效的:
NET "TestOutputBus" LOC = "A1";请发布 ISE 的输出以详细显示错误消息。 -
感谢您的确认,我已经用详细信息更新了我的问题
-
在示意图中,您似乎没有将输出分配给 TestOutputBus(39:2)。如果是这种情况,那么它可能会导致问题。或者,您可能没有为 UCF 文件中的所有 40 个 TestOutputBus 网络指定 LOC 约束。
-
谢谢@NathanFarrington,所以如果我做对了,你的意思是我应该只对使用过的引脚设置约束?
-
您应该在 UCF 文件中为顶级模块上的每个端口设置 LOC 约束。因此,如果您有一个 40 位宽的总线作为顶层的输入或输出,那么您的 UCF 文件中还应该有 40 个单独的 LOC 约束,以确保顶层原理图中的逻辑总线实际映射到FPGA 上的正确引脚。如果您只使用两个引脚,那么您可以将总线声明为 2 位宽并使用 2 个 LOC 约束。 FPGA 会将所有未使用的引脚视为输入并忽略它们。
标签: constraints xilinx spartan