再帰を使用しているコードがありますが、
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
ただし、このコードは flag が定数ではないというエラーを返します。レジスタ、ワイヤ、または整数を使用して、always ブロックの外で if-else を使用できないことを理解しています。ただし、コードを実装できる他の方法はありますか?
再帰は、生成ブロックでのみ機能するようですが、always ブロックの外では機能します。