記述Tips集

記述Tips集一覧に戻る

Error/Warning対処Stack space overflow: current size 10485760 bytes.Use `+RTS -Ksize -RTS' to increase it.のようなメッセージでコンパイルが停止するエラー原因と対処方法

【原因】
このメッセージは、コンパイル処理時にスタックが足りなくなったために表示されています。スタック不足は、型のサイズが大きい場合や、配列(Vector)の要素数が多い場合などに起こりやすいです。

【対策】
現在のスタックサイズは、メッセージが示す通り、10M byte(10485760 bytes)です。
これを、`+RTS -Ksize -RTS' のオプションで増やせばパスすると思います。
例えば、スタックを 100M byte とする場合は、`+RTS -K100M -RTS' となります。
このコマンドオプションは、bsc コマンドで以下のような感じで使ってください。

 bsc -u -verilog +RTS -K100M -RTS Top.bsv

また、いくらスタックの量を増やしてもスタック不足が解消されない場合、モジュールの構造を変更しなければならないかも知れません。

例えば、大規模な配列を分割してサブモジュール化することによって、1個の配列のサイズを小さくして対処する等の記述上の工夫が必要となります。