【发布时间】:2018-10-24 03:28:01
【问题描述】:
我为 2 个 n 位数字(这里 n=16)的简单乘法编写了以下代码。它正在使用所需的输出波形进行模拟,但问题是,即使我编写了 静态“for 循环”(即循环迭代是恒定的),它也没有在 vivado 17.2 中合成。我收到下面提到的错误。
[Synth 8-3380] 循环条件在 2000 次迭代后不收敛
注意:我已经写了
for(i=i;i<n;i=i+1)
而不是
for(i=0;i<n;i=i+1)
因为后者在我到达 n 后再次执行。所以这不是一个错误。请有人帮助。感谢您的宝贵时间
//unsigned integer multiplier
module multiplication(product,multiplier,multiplicand,clk,rset);
parameter n = 16;
output reg [(n<<1)-1:0]product;
input [n-1:0]multiplier, multiplicand;
input clk,rset;
reg [n:0]i='d0;
always @( posedge clk or posedge rset)
begin
if (rset) product <= 'd0;
else
begin
for(i=i;i<n;i=i+1)
begin
product =(multiplier[i] == 1'b1)? product + ( multiplicand << i ): product;
$display("product =%d,i=%d",product,i);
end
end
end
endmodule
【问题讨论】:
标签: verilog hardware xilinx hdl