我有一个代码,我正在使用递归,
module mult(a,b,c)
generate
always @(*) begin
/* a few calculations */
if(x < 10)
flag = 1;
else
flag = 0;
end
if( flag == 1)
mult(x,y,z);
else
z = x*y;
endgenerate
endmodule
但是,此代码返回一个错误,指出该标志不是常量。我知道通过使用寄存器或连线或整数,不能在always块之外使用if-else。但是,有没有其他方法可以实现代码?
递归似乎仅在生成块中有效,但在always块之外。
答案 0 :(得分:1)
生成块中的条件需要在精化时保持不变。通常它们要么是模块的定义,要么是参数。
您的示例中根本没有声明'x'...事实上,有许多错误会阻止编译。够了,我们很难想出你的意图。你能提供一些细节吗?