我有一组寄存器/总线和一个定义如下的结果总线。
wire [BW-1:0] bus_array[NUM-1:0];
reg [BW-1:0] and_result;
在哪里
parameter BW = 4;
parameter NUM = 8;
我希望对数组的元素执行 BW 位与运算并将结果分配给寄存器and_result
。
我尝试按如下方式执行此操作。
integer l;
generate
genvar m;
for (m=0; m<BW; m=m+1)
begin : BW_LOOP
always @ (*)
begin
and_result[m] = 1'b1;
for (l=0; l<NUM; l=l+1)
and_result[m] = and_result[m] & bus_array[l][m];
end
end
endgenerate
但是,当我在 Modelsim 10.1e 中对此进行仿真时,出现以下错误。
错误:(vsim-3601)在时间 2 ns 达到迭代限制
如果我不使用生成循环,而是使用always @ (*)
块的 BW 实例,则模拟工作正常。
我可以从错误消息中推断出生成 for 循环存在问题,但我无法解决问题。