我有一个在Verilog中运行良好的for循环。看起来是这样的:
for(j=0; j<=5; j=j+1)begin
...
end
但是,一旦我将5转换成一个变量:
for(j=0; j<=m; j=j+1)begin
...
end
我知道这个错误:
误差(10119):Verilog循环语句错误在alu.v(95):具有非恒定循环条件的循环必须在250个迭代内终止
我将m作为一个reg初始化为这样:
reg [3:0] m = 5;
我需要使用变量的原因是我有另一个变量,我希望这个循环可以计数。我得到了同样的错误,所以我使用了这个测试值'm‘,应该总是等于5,我不知道为什么会发生这种情况。我认为循环将在5之后结束,但由于某些原因,它没有。请帮助!
发布于 2016-05-09 00:14:42
Verilog HDL不是像C或Python那样的编程语言,而是一种硬件描述语言(HDL)。因此,综合工具将把for
循环展开为一个固定的硬件电路,为此它需要知道循环中的(最大)迭代次数。
在您的示例中,当结束条件基于m
作为寄存器时,合成工具(Altera /Prime)似乎无法确定这一点,因此您必须将其重写到每个循环都有一个恒定的结束条件,从而使综合工具能够将其展开到一个固定的硬件电路中。
https://stackoverflow.com/questions/37109115
复制