16位乘法器vhdl代码综合错误
16bit multiplier vhdl code synthesize error
我想写一个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 标准。
我想写一个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 标准。