0

vivado synthesis过程中出现 warning, [Synth 8-3936] Found unconnected internal register 'genblk2.production_dut/product11_reg' and it is trimmed from '48' to '4' bits

code.png

warning.png

根据项目需要做一个乘法器,这是整个项目中的一小部分,端口输入输出包括如下
input [9:0] A10,
input [9:0] A20,
input [20:0] A11,
input [20:0] A21,

output reg [9:0] product00,
output reg [9:0] product01,
output reg [20:0] product10,
output reg [20:0] product11

进行以下操作
always@(posedge clk) begin
product00 <= A10A20;
product01 <= A10A21;
product10 <= A11A20;
product11 <= A11A21;
end

仿真的时候整个项目都没有问题,最终输出结果正确,所以应该不是逻辑上的问题
但vivado synthesis过程中出现以下warning
[Synth 8-3936] Found unconnected internal register ‘genblk2.production_dut/product11_reg’ and it is trimmed from ‘48’ to ‘4’ bits
[Synth 8-6014] Unused sequential element product11_reg was removed. [“D:/Xilinx/Vivado/2018.1/examples/multiplier_ip/source/product.v”:22]

显示寄存器被剪切,并且被移除。这种警告不能忽略的吧?
我已经尝试了改变寄存器长度,还是给出警告,寄存器未被使用,并且被移除。这是怎么回事?怎么解决?
请有经验的大佬指教

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
Robin 头像

评论

我知道乘积结果通常可以用更长的寄存器来存储,但刚刚尝试的实际结果是,用17位寄存器来保存就不报错了,这让我更加不理解Verilog综合器到底怎么回事,有经验的大佬请指点一下,非常感谢

Robin 头像Robin ( 2022-04-28 11:08:39 +0800 )编辑
0

貌似作为乘法器接收结果的寄存器不能超过20位,超过20位就报错,是这样吗?麻烦有经验的大佬表个态,多谢啊

编辑 标为违禁 删除 链接 更多选项...
Robin 头像
0

这个其实不需要解决。原因也很简单,这句话

Found unconnected internal register ‘genblk2.production_dut/product11_reg’ and it is trimmed from ‘48’ to ‘4’ bits

讲得很清楚了你有一些寄存器没有连。

编辑 标为违禁 删除 链接 更多选项...
Airkids_zz 头像

评论

谢谢啊,可是你说的这个我早就看到了,也进行了一些尝试,可这个寄存器我设置的是21位,被乘数和乘数也都是21位,为什么会存在从48位被剪切成4位这种情况呢。而且仿真的结果是对的啊,为什么存在寄存器没有连的问题? 我已经尝试着改变了位宽,想着是不是有多余的位宽,所以没有连上,但即使不报 “ it is trimmed from ‘48’ to ‘4’ bits”这个错,也还是始终说寄存器未被使用而被移除。

Robin 头像Robin ( 2022-04-28 09:25:55 +0800 )编辑

两端都查查吧,有时候你开了这头没改那头也一样会报错.

popomao 头像popomao ( 2022-05-02 20:25:03 +0800 )编辑

谢谢,好的,我再仔细检查检查。多谢多谢

Robin 头像Robin ( 2022-05-02 22:11:12 +0800 )编辑
登录/注册后进行回答

提问工具

1 follower

统计

已提问: 2022-04-27 10:39:29 +0800

已查看: 33 次

最后更新: Apr 28