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

ID 683082
日付 4/13/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

1.6.4. ステートマシンHDLガイドライン

合成ツールは、合成中にVerilog HDLおよびVHDLステートマシンを認識およびエンコードできます。このセクションでは、ステートマシンを使用するときに最良の結果を確保するためのガイドラインを示します。

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

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

ステートマシンの適切な認識と推論を保証し、結果の品質を向上させるには、Verilog HDLとVHDLの両方について次のガイドラインを遵守してください。

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

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

多くの合成ツール( インテル® Quartus® Prime 合成を含む)安全なステートマシンを実装するオプションがあります。 インテル® Quartus® Primeソフトウェアは、不正な状態を検出し、ステートマシンを強制的にreset状態に移行するための追加のロジックを挿入します。セーフステートマシンは、デュアルクロックFIFOの制御ロジックなど、ステートマシンに別のクロックドメインで発生する制御入力がある場合など、ステートマシンが不正な状態に入ることができる場合に役立ちます。

このオプションは、状態マシンを強制的にreset状態にすることにより、状態マシンを保護します。この方法では、デザイン内の他のすべてのレジスターは保護されません。非同期入力を使用するデザインのベストプラクティスとして、セーフ・ステート・マシン・オプションに依存する代わりに、同期レジスター・チェインを使用します。