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 标准。