インテルのみ表示可能 — GUID: mwh1409959599931
Ixiasoft
インテルのみ表示可能 — GUID: mwh1409959599931
Ixiasoft
1.5.3.2. ラッチを正しく推測する
デザインのラッチまたは組み合わせループがユーザー指定および推定ラッチセクションに表示されない場合、 インテル® Quartus® Prime合成はラッチを安全なラッチとして推論しなかったため、ラッチにグリッチがないとは見なされません。
Compilation ReportのAnalysis&Synthesis Logic Cells Representing Combinational Loopsテーブルにリストされているすべての組み合わせループは、タイミングの危険性があります。これらのエントリは、さらに調査が必要なデザインの問題を示しています。ただし、正しいデザインには組み合わせループを含めることができます。たとえば、組み合わせループを感作できない可能性があります。これは、ハードウェアに電気的なパスがある場合に発生しますが、次のいずれかです。
- デザイン者は、回路がそのパスをアクティブにするデータに遭遇しないことを知っている、または
- 周囲のロジックは相互に排他的な方法で設定され、データ入力に関係なく、そのパスがこれまでに増感されることを防ぎます。
6入力LUTベースのデバイスの場合、 インテル® Quartus® Prime合成は、組み合わせループ内の単一の適応ルックアップテーブル(ALUT)ですべてのラッチ入力を実装します。したがって、1つの入力が変更された場合、 ユーザー指定および推測ラッチテーブルのすべてのラッチにはタイミングの危険はありません。
インテル® Quartus® Prime合成レポートがラッチを安全なラッチとしてリストすると、itterでの物理合成ネットリストの最適化など、その他の最適化により、危険のないパフォーマンスを維持します。危険のない動作を保証するために、一度に変更できる制御入力は1つだけです。 setとresetを同時にディアサートする、データを変更して同時にイネーブルするなど、2つの入力を同時に変更すると、ラッチで不正な動作が発生する可能性があります。
インテル® Quartus® Prime合成は、Verilog HDLのalwaysブロックとVHDLのプロセスステートメントからラッチを推測します。しかしながら、 インテル® Quartus® Prime合成では、Verilog HDLでの連続した割り当て、またはVHDLでの同時信号割り当てからラッチを推測しません。これらの規則は、レジスターの推論と同じです。 インテル® Quartus® Prime合成は、 alwaysブロックおよびprocessステートメントからのみレジスターまたはフリップフロップを推測します。
Verilog HDL Set-Reset Latch
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 Data Type Latch
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 Continuous Assignment Does Not Infer Latch
次の例は、 インテル® Quartus® Primeソフトウェアのラッチを推測しないVerilog HDL連続割り当てを示しています。
assign latch_out = (~en & latch_out) | (en & data);
割り当ての動作はラッチに似ていますが、ラッチとして正しく機能しない場合があり、そのタイミングはラッチとして分析されません。 インテル® Quartus® Primeプロ・エディション 合成は、Intel FPGAラッチIPコアのインスタンス化のために可能な場合、安全なラッチも作成します。 Intel FPGAラッチIPを使用すると、データ、イネーブル、セット、およびreset入力の任意の組み合わせでラッチを定義できます。安全なラッチの作成には、HDLコードからラッチを推論する場合と同じ制限が適用されます。
別の合成ツールでIntel FPGAラッチIPコアを推測することにより、 また、 インテル® Quartus® Prime合成は実装をラッチとして認識します。サードパーティの合成ツールがIntel FPGAラッチIPコアを使用してラッチを実装している場合、 インテル® Quartus® Primeプロ・エディション 合成は、HDLソースコードで定義したラッチをリストするのと同じ方法で、 User-Specified and Inferred Latchesテーブルにラッチをレポートします。 Intel FPGAラッチIPコアの実装を生成するために必要なコーディング・スタイルは、合成ツールによって異なります。一部のサードパーティ合成ツールには、推論されるインテルFPGAラッチIPコアの数がリストされています。
Fitterは、合成がラッチイネーブルとして識別する信号を含む制御信号にグローバル・ルーティングを使用します。場合によっては、グローバル挿入遅延によりタイミング・パフォーマンスが低下します。必要に応じて、 インテル® Quartus® Primeグローバル信号ロジックオプションをオフにして、グローバル信号の使用を手動で防止できます。Compilation ReportのGlobal&Other Fast Signalsテーブルは、グローバル・ラッチ・イネーブルをレポートします。