17 |
GameFSMの改良 (15) |
前回の1度しか呼ばれていない関数のdrawString関数はボディが薄い(関数の行数が少ない)ので効果が出なかったかもしれないと思い、ボディが厚い関数をトライします。対象はupdateAlienBullet()(敵弾処理関数)で、行数は83行あります。
敵弾処理関数(updateAlienBullet())の最適化前後 | 前 | 後 | 比較 | |
---|---|---|---|---|
BSV合成 | コンパイル時間 | 1'27'' | 1'15'' | ▲13.8% |
Verilog合成 | ファイルサイズ[KB] | 5,922 | 5,253 | ▲11.3% |
合成時間 | 0'59'' | 0'52'' | ▲11.9% | |
Vivado LUT数 | 5,685 | 5,490 | ▲3.4% | |
Vivado FF数 | 1,789 | 1,894 | 5.9% |
結果としてはまず1度しか呼ばれない関数のため、物量削減どころかFSMオーバヘッドが増加しました。一方、ボディが厚かったため、bscコンパイル時間とverilog量及びそれに比例するvivado合成時間が削減されました。
Leave a Comment