问题描述
我想写一个16bit * 16bit的乘法代码。这是我的代码:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity mul is
port
(
A,B: IN INTEGER RANGE -32768 TO 32767;
C: OUT INTEGER RANGE -2147483648 TO +2147483647
);
end mul;
architecture Behavioral of mul is
begin
C <= A * B;
end behavioral;
但是当我尝试在 xilinx isim 上合成代码时,我收到此错误:
ERROR:Bitgen:342 - 此设计包含具有位置 (LOC) 的引脚 非用户分配或非用户分配的 I/O 标准 (IOSTANDARD)。 这可能会导致 I/O 争用或与电路板电源不兼容或 连接影响性能、信号完整性或在极端情况下 导致设备或其连接的组件损坏。到 防止此错误,强烈建议指定所有引脚位置和 I/O 标准,以避免潜在的争用或冲突,并允许适当的 比特流创建。将此错误降级为警告并允许比特流 使用未指定的 I/O 位置或标准创建,您可以应用 跟随 bitgen 开关:-g UnconstrainedPins:Allow ERROR:Bitgen:157 - Bitgen 将因上述错误而终止。
解决方法
实体中定义的所有端口都应具有使用 ucf 文件定义的引脚分配。如果您缺少 ucf 文件,该工具将继续自行放置引脚。错误消息中明确说明了这一点。
NET"A(0)" LOC ="AB16" | IOSTANDARD ="LVTTL";
NET"A(1)" LOC ="AB16" | IOSTANDARD ="LVTTL";
...
在您的示例中,A 和 B 的宽度是 16 位,C 是 32 位。因此,您需要为所有这些分配正确的引脚位置和 IO 标准。