Spartan 3入门套件约束文件

时间:2012-01-01 20:23:16

标签: constraints xilinx spartan

我不确定这是否是正确的堆栈交换网站发布此内容,但如果不是,请将其移至相应的位置。

我在编写spartan 3入门套件的约束文件时面临一个小问题。

我已阅读Xilinx(制造商)提供的文档,并且我已经在网上搜索了几周而没有任何运气。

我要做的是将我的Netlist接口链接到主板上的3个40针接头中的任何一个。 (见下图)

enter image description here

通常非常简单,如果我想连接板上的按钮或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存在,事实上我的设计中没有其他任何内容,并且正在使用正确的顶级单元。

enter image description here

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的可映射引脚的表。

enter image description here enter image description here enter image description here

3 个答案:

答案 0 :(得分:2)

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

数据表(http://forums.xilinx.com/xlnx/attachments/xlnx/Spartan/3411/1/S3BOARD_RM.pdf)非常有用,特别是第49 - 51页

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

我曾经有一个原始的ConstraintSystem:当我意外地选择了我的一个模块作为顶层模块时,找不到59个网络xyz错误。在UCF中声明的引脚在错误模块的端口声明中找不到。

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