sfl2vlでは、合成後のVerilog/VHDLに必要以上に自動生成の端子名が入らないようにという考えから、適度な深度の論理まではそのまま演算として出力していた。
一つには、論理合成の簡単化は組み合わせ回路に対してはかなり最適化可能だからという理由もあったのだが、XilinxのISEなどでは、最適化がイマイチなので、別オプションで、代入の条件となる論理を取りまとめて簡単化しておくことにした。
新オプションは、
-scond
というものだ。
また、以前作成した、-grayで状態遷移の番号順をグレイコード化することができ、場合によってはこれも論理縮小に効く。
(状態遷移マシンの自動推定ルールとの擦り合わせは各ベンダーごとのツールに合わせて合成スタイルを変える方がベターだけれど、ベンダールールの集約を行う時間が取れないので、まだ未対応)
これらのオプションを変更しながら、同一のSFLから数パターン変換し、ISE8.1でspartan3をターゲットに合成してみたので、その結果を示す。
オプション | スライス | 等価ゲート数 | クリチカルパス遅延 |
---|---|---|---|
-O -scond -gray | 529 | 11691 | 11.755 |
-O -gray | 643 | 13227 | 12.826 |
-O | 686 | 13815 | 13.82 |
-O1 | 745 | 14908 | 13.694 |
-O -scond -grayの最適化オプションをつけてコンパイルした結果が
もっともコンパクトで高速になった。
もちろん、論理によって違うので、必ずしも全部が全部この通りとは限らない。