【问题标题】:Spartan 3 Starter Kit Constraints FileSpartan 3 Starter Kit 约束文件
【发布时间】: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


【解决方案1】:

事实证明,FPGA 的每个接头的每个可用引脚都有一个地址。

数据表 (http://forums.xilinx.com/xlnx/attachments/xlnx/Spartan/3411/1/S3BOARD_RM.pdf) 很有帮助,尤其是第 49 - 51 页

【讨论】:

    【解决方案2】:

    我从我之前对您问题的评论中复制了此内容,因此这将是一个实际的答案,而不仅仅是评论。

    您应该在 UCF 文件中为顶级模块上的每个端口设置 LOC 约束。因此,如果您有一个 40 位宽的总线作为顶层的输入或输出,那么您的 UCF 文件中还应该有 40 个单独的 LOC 约束,以确保顶层原理图中的逻辑总线实际映射到FPGA上的正确引脚。如果您只使用两个引脚,则可以将总线声明为 2 位宽并使用 2 LOC 约束。 FPGA 会将所有未使用的引脚视为输入并忽略它们。

    【讨论】:

    • Bitgen 默认情况下在未使用的引脚上放置下拉(类型bitgen -help &lt;architecture&gt; - “UnusedPin”行的第一个选项是默认值)) - 你需要询问Pullnone 拥有它们三态。
    【解决方案3】:

    当我不小心选择我的一个模块作为顶级模块时,我曾经得到原始的 ConstraintSystem:59 net xyz not found 错误。在错误模块的端口声明中找不到UCF中声明的管脚。

    当我在 UCF 中声明了一些引脚但在顶级模块的端口声明中省略了它时,我也会收到此错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 2018-05-12
      • 2017-03-21
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多