Posts Issued on October 16, 2025

GameFSMの改良 (14)

posted by sakurai on October 16, 2025 #1036

call順位が高い関数のFSM化が完了したので、次に1度しか呼ばれていない関数もFSM化してみます。これは物量にはほぼ影響はないか若干増加するものの、巨大なFSMループからはずすことで、コンパイル時の競合条件計算量の減少を目的とするものです。まず、6個あるdrawString関数の1つをFSM化します。

まず、オリジナルのコードは、

   function Stmt drawTitle1(); // PLAY SPACE INVADERS
      return (seq
         for (str_idx <= 0; str_idx < 19; str_idx <=  str_idx + 1) seq
            copyGlyph(s1[str_idx]);
            waitTicks(`TICK_WAIT8);
            if (fbutton) break;
         endseq // for
      endseq);
   endfunction

変更後のコードは前回と同様なので省略します。

以下に結果の表を示します。思ったほどはコンパイル時間は減りませんでした。またverilog量は若干減ったものの、物量は想像したとおり増加しています。これは新たに起動、終了待ちが増えるためでしょう。全体としてあまり意味が無さそうなのでこれは中止します。

タイトル文字表示1を最適化前後 比較
BSV合成 コンパイル時間 1'26'' 1'25'' ▲1.2%
Verilog合成 ファイルサイズ[KB] 5,922 5,790 ▲2.2%
合成時間 0'59'' 0'53'' ▲10.2%
Vivado LUT数 5,583 5,638 1.0%
Vivado FF数 1,784 1,794 0.6%


左矢前のブログ 次のブログ右矢