【メッセージ例】 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が生成できたとしても、論理合成フェーズで苦労する可能性があります。
パラメータを決定させてモジュール階層を保持させたり、モジュールを分割するなどの処置を施して、このメッセージが出ないようにするのが好ましいです。