|
24 |
GameFSMの改良 (17) |
3番目にボディが厚い関数の最適化をトライします。対象はinitAll()(毎回のステージでの初期化関数)で、45行あります。
| 初期化関数(initAll())の最適化前後 | 前 | 後 | 比較 | |
|---|---|---|---|---|
| BSV合成 | コンパイル時間 | 1'03'' | 0'54'' | ▲14.3% |
| Verilog合成 | ファイルサイズ[KB] | 4,283 | 3,554 | ▲17.0% |
| 合成時間 | 0'58'' | 0'51'' | ▲12.1% | |
| Vivado LUT数 | 5,582 | 5,489 | ▲1.7% | |
| Vivado FF数 | 1,907 | 1,907 | 0.0% | |
結果としては、FSMオーバヘッドはほぼ0でした。一方、ボディがやや厚かったため、bscコンパイル時間とverilog量の削減となりました。物量も削減されているのは2度呼ばれているためかもしれません。
PCやbscの更新により、かつて1時間以上かかっていたコンパイルが今では1分を切るようになりました。まさに隔世の感があります。当初は論理の構築に集中しており、コンパイル時間も長く、思うように検証を進められませんでした。一方、現在は論理が固まったことで最適化も容易になり、コンパイル時間は劇的に短縮されました。この効果を当初に得られていればと感じます。
Leave a Comment