記述Tips集

記述Tips集一覧に戻る

Error/Warning対処Warning G0024 の原因と対処方法

【メッセージ例】
 Warning: "Prelude.bs", line 1207, column 0: (G0024)
  The function unfolding steps interval has been exceeded when unfolding
  `Prelude.isStaticBool'. The current number of steps is 1000000. Next warning
  at 2000000 steps. Elaboration terminates at 200000000 steps.

【原因】
この警告メッセージは、内部のステートメントのステップ数が規定値を超えたために表示されています。
以下のような場合に発生する事があります。
 ・下位モジュールをインライン展開し 1個当たりのモジュールが大きくなったとき
 ・大規模な配列を使用した時
 ・ループで何度も同じ処理を繰り返した時
 ・大きな関数をあちこちで何度も呼んだ時

【対策】
このメッセージが出るような場合は、生成されるRTLのコード量が多少大きくなることに注意する必要があります。
デフォルトではこのステップ数の上限値は100万で、これを超えるとコンパイラが強制的に終了します。
この上限値はコマンドオプションで変更する事ができます。
例えば、上限値を200万に増やす場合は、以下のようなオプションを設定すればOKです。
 -steps-max-intervals 2000000

しかし、ここまでしないとコンパイルできないようなBSVは、例えRTLが生成できたとしても、論理合成フェーズで苦労する可能性があります。
パラメータを決定させてモジュール階層を保持させたり、モジュールを分割するなどの処置を施して、このメッセージが出ないようにするのが好ましいです。