インテル® Quartus® Prime プロ・エディションのユーザーガイド: デザインの推奨事項

ID 683082
日付 8/03/2023
Public
ドキュメント目次

1.6.4. HDLにおけるステートマシンに関するガイドライン

合成ツールでは、合成時にVerilog HDLおよびVHDLのステートマシンを認識およびエンコードすることができます。このセクションで提供するガイドラインにより、ステートマシンを使用している場合の最良の結果を実現します。

コードの一部をステートマシンとして認識できる合成ツールでは、最適化を実行してデザインの面積とパフォーマンスを改善することができます。例えば、ツールで状態変数を再コーディングして結果の品質を改善したり、ステートマシンの既知のプロパティーを利用してデザインの他の部分を最適化したりすることができます。

最適な結果を得るために、合成ツールでは多くの場合、FPGAデバイスにはワンホット・エンコーディングを使用し、CPLDデバイスには最小ビット・エンコーディングを使用しますが、実装の選択はステートマシンやデバイスによって異なります。ステートマシンのエンコーディングを制御する手法に関しては、合成ツールのドキュメントを参照してください。

ステートマシンを適切に認識して推論し、結果の品質を向上させるには、次のガイドラインに従います。このガイドラインは、Verilog HDLとVHDLの両方に適用されます。

  • デフォルト値をステートマシンから派生する出力に割り当てることで、合成で不要なラッチが生成されないようにします。
  • ステートマシン・ロジックをすべての算術関数およびデータパスから分離します。これには、出力値の割り当ても含まれます。
  • 複数のステートで同じ操作を実行するデザインの場合は、ステートマシン外部で動作を定義し、ステートマシンの出力ロジックに対してその値を使用するように指示します。
  • 単純な非同期または同期 reset を使用し、定義されている電源投入時の状態を確認します。デザインのステートマシンに非同期 reset や非同期ロードなどのより詳述されている reset ロジックが含まれる場合、 インテル® Quartus® Prime開発ソフトウェアは、ステートマシンではなく通常のロジックを推論します。

デバイスの問題によりステートマシンが不正な状態になると、ステートマシンの次の reset までデザインが正しく機能しなくなる可能性があります。合成ツールは、デフォルトではこの状況に対応していません。システムに何らかの障害がある場合は、同じ問題が他のレジスターでも発生します。デザインを意図的にこの状態にすることはないと仮定した場合、default または when others 節はこの動作に影響しません。合成ツールは、通常のステートマシンの動作では到達できない場合に、デフォルトの状態で生成されたロジックを削除します。

多くの合成ツール ( インテル® Quartus® Prime の合成を含む) には、Safe State Machineを実装するオプションがあります。 インテル® Quartus® Prime開発ソフトウェアでは、追加ロジックを挿入することで不正な状態を検出し、ステートマシンを強制的に reset 状態に移行します。Safe State Machineは、ステートマシンが不正な状態に入る可能性がある場合 (デュアルクロックFIFOのコントロール・ロジックなど、ステートマシンに別のクロックドメインで発生するコントロール入力がある場合など) に有効です。

このオプションでは、ステートマシンを保護するためにステートマシンを reset 状態に強制します。デザイン内の他のレジスターは、この方法では保護されません。非同期入力を使用するデザインのベスト・プラクティスとして、Safe State Machineオプションに頼るのではなく、同期レジスターチェーンを使用します。