0

再帰を使用しているコードがありますが、

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 ブロックの外では機能します。

4

1 に答える 1

1

生成ブロックの条件は、エラボレーション時に一定である必要があります。通常、それらはモジュールの定義またはパラメータのいずれかです。

あなたの例では「x」をまったく宣言していません...実際、これをコンパイルできない多くのエラーがあります。あなたの意図を理解するのは難しいほどです。これについて少し詳しく教えていただけますか?

于 2012-12-12T02:22:51.387 に答える