はじめに
RTL 設計でステートマシン記述を行った場合、ステートマシンのエンコード・スタイルを Quartus® Prime 開発ソフトウェアの設定で変更することができます。
Quartus® Prime での設定方法
① プロジェクトのオープン
File メニュー -> Open Project.. を選択します。
② 設定変更
Assignments メニュー -> Settings.. を選択します。
「Category:」より 「Compiler Settings」 を選択し、[Advanced Settings(Synthesis)]ボタンをクリックします。
ステートマシンのエンコード・スタイルの設定
Synthesis に関する設定画面が表示されます。
「Name:」欄に「State Machine Processing」がありますのでこの設定でステートマシンのエンコード・スタイルを変更します。
設定は、 Auto, Gray, Johnson, Minimal Bits, One-Hot, User-Encoded のいずれかです。
Auto を選択した場合は、FPGA の場合は One-Hot に設定されます。
ステートマシンのステートビットを記述で指定している場合は、「User-Encoded」を選択してください。
イリーガル・ステート処理回路の設定
イリーガル・ステート記述を行っても、回路が最適化されすべてのイリーガル処理回路が生成されない場合があります。
(これはどの論理合成ツールにも言えることです)
すべてのイリーガル処理回路を生成する場合は、「Name:」欄から「Safe State Machine」を選択し、「Setting:」を「On」にします。
ただし、多大なイリーガル・ステートが存在するステートマシンが生成される回路の場合、特にステートマシンのエンコードスタイル設定(「State Machine Processing」設定)を One-Hot や Auto に設定したままの場合は、イリーガル・ステート処理回路が膨大になるのでお気を付け下さい。
「Safe State Machine」設定を 「On」にする場合は、「State Machine Processing」 設定を 「User-Encoded」 (あるいは、「Minimal Bits」) に設定することをお勧めします。
※ Minimal Bits に設定すると合成された論理が複雑化して Path が長くなりタイミングに影響するデメリットがありますのでご注意ください。