外部メモリー・インターフェイス・インテル® Stratix® 10 FPGA IPユーザーガイド

ID 683741
日付 9/30/2019
Public
ドキュメント目次

13.8. 生成されるデザイン例でのトラフィック・ジェネレーターの使用

この項は、生成されるデザイン例をトラフィック・ジェネレーターとともに使用するヒントを提供し、デザインの評価とデバッグを支援します。

生成されるEMIFデザイン例に関する一般的な情報は、 External Memory Interfaces Intel Stratix 10 FPGA IP Design Example User Guideを参照ください。

  1. インテル® Quartus® Primeプロジェクトを作成し、パラメーター・エディターでEMIF IPを開きます。
  2. パラメーター・エディターで、お使いのメモリー・インターフェイスの正しいパラメーター値を設定します (PCBのボード・タイミングの正しい値を含む)。
  3. Diagnosticsタブで、Calibration Debug options > Quartus Prime EMIF Debug Toolkit/On-chip Debug PortAdd EMIF Debug Interfaceに設定します。これにより、デバッグに向けたEMIFツールキットへの接続が作成されます。
  4. Example Designsタブで
    • Synthesisを選択します。
    • 必要なHDL形式を選択します。
    • Target Development Kit > Select BoardNoneに設定します。この設定により、お使いの特定のデバイス部品番号に対してデザイン例が生成されます。
  5. パラメーター・エディターの右上隅にあるGenerate Example Designをクリックします。システムはデザイン例を生成し、最上位のプロジェクト・ディレクトリーにIPファイル・ディレクトリーを含めます。
    • ed_synth.qsysはデザイン例のプラットフォーム・デザイナー・ファイルであり、EMIF IP、トラフィック・ジェネレーター、RZQ、およびリセット・スプリッターのコンポーネントを含みます。
    • ed_synth.qpfはデザイン例のプロジェクトです。
  6. 生成されたデザイン例のプロジェクトのed_synth.qpfを開き、デバイスの部品番号が正しいことを確認します。
  7. デフォルトでは、トラフィック・ジェネレーターはテストの1回の反復を実行するようにコンフィグレーションされています。一般的なデバッグでは、テストを継続して実行することが望ましい場合があります。テストを継続して実行するためのコンフィグレーションは、次のように行います。
    1. ed_synth.tg.vファイルを <project_directory>/ip/ed_synth/ed_synth_tg/synth ディレクトリーで検索し、テキストエディターでそのファイルを開きます。
    2. .TEST_DURATION ("SHORT"),を検索し、それを.TEST_DURATION ("INFINITE"),に変更します。
    3. 変更を保存します。
    注: トラフィック・ジェネレーターの無制限モードでの実行は、RLDRAM 3 EMIF IPでの使用に適用されません。
  8. 生成されると、 インテル® Stratix® 10デザイン例のプロジェクトは、local_reset_req信号のアクティブHighのリセットパルスに応答します。以前のデバイスファミリーで一般的だったレベルセンシティブで、通常はアクティブLowのリセット信号を使用する場合は、ed_synth.vファイルに次のRTLの変更を加えることにより、デザイン例のリセット信号を反転できます。
    • 次の2行を、ワイヤー宣言の行59の直後に追加します。
      	wire  reset_invert;
      	assign reset_invert = !local_reset_req;
    • リセットブロックがインスタンス化される位置でlocal_reset_reqを変更し、反転リセット信号のreset_invertに接続します。
      	ed_synth_local_reset_combiner local_reset_combiner (
      		.clk                   (emif_s10_0_pll_ref_clk_out_clk),                             
      		.reset_n               (emif_s10_0_pll_locked_pll_locked),                           
      		.local_reset_req       (local_reset_req),                                            
      		.local_reset_req       (reset_invert),                                            
      		.local_reset_req_out_0 (local_reset_combiner_local_reset_req_out_0_local_reset_req), 
      		.local_reset_done      (local_reset_done),                                           
      		.local_reset_done_in_0 (emif_s10_0_local_reset_status_local_reset_done)              
      	);
  9. 必須ではありませんが、この時点で解析とエラボレーションを実行することが推奨されます。これによりプロジェクトの構造が表示され、割り当てを確認できます。
  10. 次のトップレベルの信号のそれぞれに仮想ピンを追加する、もしくはオシロスコープまたはLEDでの監視のためにテストポイントに接続されている外部ピンにルーティングします。
    • local_cal_success
    • local_cal_fail
    • traffic_gen_pass
    • traffic_gen_fail
    • traffic_gen_timeout
  11. PCBのピン位置の割り当てを追加します。
  12. Signal Tapをプロジェクトに追加します。次の信号をタップすることが推奨されます。
    ピン (すべて) local_reset_req
    local_reset_done
    local_cal_success
    local_cal_fail
    traffic_gen_pass
    traffic_gen_fail
    traffic_gen_timeout
    SignalTap II 合成前に必要に応じてワイルドカードで名前を検索
    Pass-not-fail信号 pnf_per_bit
    pnf_per_bit_persist
    Avalon bus信号 amm_read_0
    amm_readdatavalid_0
    amm_ready_0
    amm_write_0
    amm_address_0
    amm_burstcount_0
    amm_byteenable_0
    amm_readdata_0
    amm_writedata_0
    Signal Tapクロックの場合はSignalTap II: 合成前 emif_user_clk
  13. インテル® Quartus® PrimeDevice Settingsで、Device & Pin Options > Unused PinsAs input tri-stated with weak pullupに設定します。必要に応じてデフォルトのI/O Standardを設定します。
  14. プロジェクトをコンパイルします。
  15. タイミング・アナライザーのReport DDRレポートを確認し、プロジェクトがタイミング要件を満たしていること、およびピン配置が想定していたとおりであることを確認します。

トラフィック・ジェネレーターのステータス信号に関する情報

  • pnf_per_bit信号は、Avalonインターフェイスの各ビットに対して1ビットです。32ビット幅のメモリー・インターフェイスの場合、これはクォーターレート・インターフェイスの256ビットに相当します。
    • pnf_per_bit[x] は、テストが正常に機能している場合はHighになり、誤ったデータが見られた場合に一時的にLowになる信号です。
    • pnf_per_bit_persist[x] はpnf_per_bitと同じですが、一度Lowに設定されるとLowのまま保たれます。
  • pnfビットのマッピングは、メモリーのバス幅とAvalonインターフェイスのバス幅に依存します。標準の DDR4メモリーのアクセスサイクルはバースト長8です。32ビット幅のメモリー・インターフェイスのマッピング例を以下に示します。同様のマッピング手法が、サポートされている他のインターフェイスのメモリーバス幅にも適用されます。
    • pnf[0] は、メモリー・バス・バーストの最初のビートのdq[0] にマッピングします。
    • pnf[1] は、メモリー・バス・バーストの最初のビートのdq[1] にマッピングします。
    • ...
    • pnf[31] は、メモリー・バス・バーストの最初のビートのdq[31] にマッピングします。
    • pnf[32] は、メモリー・バス・バーストの2番目のビートのdq[0] にマッピングします。
    • pnf[64] は、メモリー・バス・バーストの3番目のビートのdq[0] にマッピングします。
    • pnf[96] は、メモリー・バス・バーストの4番目のビートのdq[0] にマッピングします。
    • pnf[128] は、メモリー・バス・バーストの5番目のビートのdq[0] にマッピングします。
    • pnf[160] は、メモリー・バス・バーストの6番目のビートのdq[0] にマッピングします。
    • pnf[192] は、メモリー・バス・バーストの7番目のビートのdq[0] にマッピングします。
    • pnf[224] は、メモリー・バス・バーストの8番目のビートのdq[0] にマッピングします。
    • 他も同様に続けます。
  • ビットエラーがなく、テストが特定のサイクル数ループした場合、traffic_gen_pass信号はHighになります。無制限のテスト期間で動作するようにトラフィック・ジェネレーターをコンフィグレーションした場合、traffic_gen_passがHighになることはありません。
  • テストが行われるループ数に関係なく、pnf信号がLowになるとtraffic_gen_failはHighになります。
  • トラフィック・ジェネレーターの問題によりタイムアウトが発生すると、traffic_gen_timeoutはHighになります。これは、非常にまれなケースです。