16位乘法器vhdl代码合成错误



我想写一个16位*16位的乘法代码。这是我的代码:

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上合成代码时,我得到了这个错误:

错误:Bitgen:342-此设计包含位置(LOC(为未由用户分配或未由用户指定的I/O标准(IOSTANDARD(。这可能会导致I/O争用或与板电源不兼容,或者连接影响性能、信号完整性或在极端情况下对设备或与其连接的部件造成损坏。到为了防止出现此错误,强烈建议指定所有引脚位置和I/O标准,以避免潜在的争用或冲突,并允许比特流创建。将此错误降级为警告并允许比特流使用未指定的I/O位置或标准创建,可以应用以下bitgen开关:-g UnconstrainedPins:Allow错误: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标准。

相关内容

最新更新