はい。Stratix® 10 デバイスを使用すると、エミュレートされたトゥルー・デュアル・ポート (TDP) RAM で使用される DCFIFO で複数のセットアップ・タイミング違反が発生することがあります。
セットアップのタイミング違反は、次のようなノードから観察される場合があります。
- <エミュレートされた TDP RAM インスタンスへのパス>|ram_2port_0|fifo_wrapper_in|dcfifo_in|dcfifo_component|auto_generated|rdptr_g[<数>]
- <エミュレートされた TDP RAM インスタンスへのパス>|ram_2port_0|fifo_wrapper_out|dcfifo_out|dcfifo_component|auto_generated|ws_dgrp|dffpipe1|dffe3a[<数値>]
これらのセットアップ・タイミング・スラックは、以下の解決策に示す手順を使用して DCFIFO の深さを減らすことで改善できます。
エミュレートされた TDP RAM 内の DCFIFO の深さを減らすには、次の手順を使用します。
- Quartus® Prime プロ・エディションのプロジェクト・ナビゲーターに階層タブを表示します。
- デザイン階層を展開して、エミュレートされた TDP RAM インスタンスの下に以下のインスタンスを見つけます。
- ram_2port_0 > fifo_wrapper_in > dcfifo_in
- ram_2port_0 > fifo_wrapper_out > dcfifo_out - dcfifo_inインスタンスとdcfifo_outインスタンスのエンティティ名を覚えておいてください。
次の図の例では、黄色の四角で囲まれたエンティティ名を覚えています。
- インスタンスの "ram2p_fifo_1910_sno4eky" dcfifo_in
- インスタンスの "ram2p_fifo_1910_3zzux5y" dcfifo_out
- プロジェクトナビゲータの「ファイル」タブに移動します。
- を展開します 。エミュレートされた TDP RAM の ip ファイルで 、dcfifo_in>.v のエンティティ名<dcfifo_out>.v のエンティティ名<を見つけます。
次の[ファイル]タブの例では、黄色の四角で囲まれたファイルが編集されます。
- dcfifo_in>.v のエンティティ名<を開きます。
- defparam 宣言で次のパラメーターを見つけます。
- dcfifo_component.lpm_numwords = <lpm_numwords 数値>
- dcfifo_component.lpm_widthu = <lpm_widthu 数値>
- dcfifo_component.lpm_numwords および dcfifo_component.lpm_widthu を変更します。
- dcfifo_component.lpm_numwords は、クロック B (高速クロック) のクロック周波数比をエミュレートされた TDP RAM IP のクロック A (低速クロック) で割った値より大きくなければなりません。
- dcfifo_component.lpm_numwords は 4 より大きくなければなりません
- dcfifo_component.lpm_numwords は 2^dcfifo_component.lpm_widthu でなければなりません
例えば
- クロック B の周波数とクロック A の周波数の比率が 5 の場合、最小の dcfifo_component.lpm_numword は 8 (2^3) でなければなりません。
- dcfifo_component.lpm_numword が 8 (2^3) の場合、dcfifo_component.lpm_widthu は 3 となります。 - ファイルを保存
- dcfifo_out>.v のエンティティ名を開き<手順 7 から 9 を繰り返します
エミュレートされたTDP RAM IPが再生成されると、上記のファイルが再生成され、パラメータもデフォルトの番号に復元されることに注意してください。