インテル® Quartus® Prime プロ・エディション ユーザーガイド: サードパーティー合成

ID 683122
日付 9/24/2018
Public
ドキュメント目次

2.9.4. FSM Compiler

FSM Compilerがオンの場合、コンパイラーはデザイン内のステートマシンを自動検出し、次にステートマシンを抽出して最適化します。FSM Compilerはステートマシンを分析し、ステート数に基づいて、 sequential、gray、またはone-hot エンコードを実装します。コンパイラーは、未使用ステートの分析、到達不能ステートの最適化、および遷移ロジックの最小化も実行します。実装は、HDLコードのコーディング・スタイルには関係なく、ステート数に基づいて行われます。

FSM Compilerがオフの場合、コンパイラーはロジックをステートマシンとして最適化しません。ステートマシンは、HDLコードとして実装されます。したがって、ステートマシンのコーディング・スタイルが’sequential の場合、実装もsequentialです。

syn_state_machineコンパイラー・ディレクティブを使用して、ステートマシンの抽出および最適化を行うか否かを指定します。 FSM Compilerのデフォルトのエンコーディングを無効にするには、syn_encodingディレクティブを使用します。

表 6.   syn_encodingディレクティブの値
説明
Sequential 可能な限り、フリップフロップが少ないステートマシンを生成します。バイナリとも呼ばれるSequentialステートマシンは、タイミングが主要な問題ではない場合に、面積が重視されるデザインに有効です。
Gray 遷移ごとに1つのフリップフロップだけが変化するステートマシンを生成します。Grayでエンコードされるステートマシンはグリッジが発生しない傾向があります。
One-hot 各ステートに1つのフリップフロップを含むステートマシンを生成します。One-hotステートマシンは、一般に、最高の性能と最短のclock-to-output遅延を提供します。ただし、One-hot実装は、通常Sequential実装よりも大きくなります。
Safe 無効なステートに達した場合に、ステートマシンをリセットステートに強制する、追加のコントロール・ロジックを生成します。値Safeは、他の3つの値のいずれかと併用​​すると、ステートマシンは要求されたエンコーディング方式で実装され、リセットロジックも生成されます。

Syn_encodingディレクティブを適用するためのVHDLコード例

SIGNAL current_state : STD_LOGIC_VECTOR (7 DOWNTO 0);
ATTRIBUTE syn_encoding : STRING;
ATTRIBUTE syn_encoding OF current_state : SIGNAL IS "sequential";

デフォルトでは、ステートマシンのロジックは速度と面積に合わせて最適化されますが、これはクリティカル・システムにとっては望ましくない場合もあります。値safeは、無効なステートに達した場合に、ステートマシンをリセットステートに強制する、追加のコントロール・ロジックを生成します。