在Verilog的生成块中使用if-else条件
我有一个使用递归的代码在Verilog的生成块中使用if-else条件,verilog,Verilog,我有一个使用递归的代码 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 en
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
多模块(a、b、c)
生成
始终@(*)开始
/*一些计算*/
if(x<10)
flag=1;
其他的
flag=0;
结束
如果(标志==1)
mult(x,y,z);
其他的
z=x*y;
最终生成
端模
但是,此代码返回一个错误,说明标志不是常量。我理解,通过使用寄存器、连线或整数,不能在always块之外使用if else。但是,还有其他方法可以实现代码吗
递归似乎只在generate块中有效,但在always块之外有效 生成块中的条件在精化时需要保持不变。通常,它们要么定义模块的参数 在您的示例中根本没有声明“x”。。。事实上,有许多错误会阻止编译。足以让我们很难理解你的意图。你能提供一些细节吗