インテルのみ表示可能 — GUID: mwh1409959599931
Ixiasoft
インテルのみ表示可能 — GUID: mwh1409959599931
Ixiasoft
1.5.3.2. ラッチの正しい推論
デザインのラッチまたは組み合わせループが User Specified and Inferred Latches セクションに表示されない場合、 インテル® Quartus® Primeの合成ではラッチを安全なラッチとして推論していません。そのため、そのラッチはグリッチなしであるとはみなされません。
コンパイルレポートの Analysis & Synthesis Logic Cells Representing Combinational Loops テーブルにリストされているすべての組み合わせループは、タイミング障害の危険があります。このエントリーはデザインに問題があり、さらに調査が必要な可能性があることを示すものです。ただし、正しいデザインに組み合わせループが含まれている場合もあります。例えば、組み合わせループが感応しない場合などがあります。これは、ハードウェアに電気的なパスがあり、次のいずれかが当てはまる場合に起こります。
- 設計者は、そのパスをアクティブにするデータが回路で起こらないことを理解している
- 周囲のロジックが相互に排他的な方法で設定され、データ入力に関係なく、そのパスが感応することはない
6入力LUTベースのデバイスの場合、 インテル® Quartus® Primeの合成では、すべてのラッチ入力を組み合わせループ内の単一のアダプティブ・ルックアップ・テーブル (ALUT) で実装します。したがって、User-Specified and Inferred Latches テーブルのすべてのラッチには、単一の入力が変化した際のタイミング障害はありません。
インテル® Quartus® Primeの合成レポートでラッチを安全なラッチとしてリストしている場合、その他の最適化 (フィッターでの物理合成ネットリスト最適化など) では障害のないパフォーマンスが維持されます。障害のない動作を保証するために、一度に変更できるコントロール入力は1つだけです。set と reset を同時にデアサートする、またはデータとイネーブルを同時に変更するなど、2つの入力が同時に変化すると、ラッチで不正な動作が発生する可能性があります。
インテル® Quartus® Primeの合成では、Verilog HDLの always ブロックおよびVHDLの process ステートメントからラッチを推論します。ただし、 インテル® Quartus® Primeの合成では、Verilog HDLの連続割り当て、またはVHDLの同時信号割り当てからラッチを推論しません。これらの規則は、レジスターの推論と同じです。 インテル® Quartus® Primeの合成では、レジスターまたはフリップフロップを always ブロックおよび process ステートメントからのみ推論します。
Verilog HDLセットリセット・ラッチ
module simple_latch ( input SetTerm, input ResetTerm, output reg LatchOut ); always @ (SetTerm or ResetTerm) begin if (SetTerm) LatchOut = 1'b1; else if (ResetTerm) LatchOut = 1'b0; end endmodule
VHDLデータ・タイプ・ラッチ
LIBRARY IEEE; USE IEEE.std_logic_1164.all; ENTITY simple_latch IS PORT ( enable, data : IN STD_LOGIC; q : OUT STD_LOGIC ); END simple_latch; ARCHITECTURE rtl OF simple_latch IS BEGIN latch : PROCESS (enable, data) BEGIN IF (enable = '1') THEN q <= data; END IF; END PROCESS latch; END rtl;
Verilogの連続割り当てではラッチは推論されない
次の例は、Verilog HDLの連続割り当てを示しています。この割り当てでは、 インテル® Quartus® Prime開発ソフトウェアはラッチを推論しません。
assign latch_out = (~en & latch_out) | (en & data);
この割り当ての動作はラッチに似ていますが、ラッチとして正しく機能しない場合があります。また、タイミングはラッチとして解析されません。 インテル® Quartus® Prime プロ・エディション の合成では、インテルFPGAラッチIPコアのインスタンス化で可能な場合にも、安全なラッチを作成します。インテルFPGAラッチIPを使用すると、データ、イネーブル、セット、および reset 入力の任意の組み合わせでラッチを定義することができます。安全なラッチの作成には、HDLコードからラッチを推論する場合と同じ制限が適用されます。
別の合成ツールでインテルFPGAラッチIPコアを推論している場合、 インテル® Quartus® Primeの合成でも実装をラッチとして認識するようになります。サードパーティー製の合成ツールがインテルFPGAラッチIPコアを使用してラッチを実装している場合、 インテル® Quartus® Prime プロ・エディション の合成では、HDLソースコードで定義しているラッチのリストと同じ方法で、User-Specified and Inferred Latches テーブルでラッチを報告します。インテルFPGAラッチIPコアの実装生成に必要なコーディング・スタイルは、合成ツールによって異なります。一部のサードパーティー製合成ツールでは、推論されているインテルFPGAラッチIPコアの数がリストされます。
フィッターは、グローバル配線をコントロール信号に使用します。これには、合成でラッチイネーブルとして識別された信号が含まれます。場合によっては、グローバルな挿入遅延によってタイミング・パフォーマンスが低下します。必要に応じて Intel Quartus Prime Global Signal ロジックオプションをオフにして、グローバル信号の使用を手動で防ぐことができます。コンパイルレポートの Global & Other Fast Signals テーブルでは、グローバル・ラッチ・イネーブルが報告されます。