Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

AXI マネージャーシミュレーション

メモ

MATLAB® AXI マスターの名前が AXI マネージャーに変更されました。ソフトウェアとドキュメントでは、「マスター」と「スレーブ」という用語がそれぞれ「マネージャー」と「従属」に置き換えられます。

アルゴリズムを FPGA に展開する前に、アルゴリズムをシミュレートし、ボード上のシミュレートされたメモリまたはメモリマップされたレジスタに対して読み取りおよび書き込み操作を実行できます。提供されている SystemVerilog readmemory および writememory タスクを使用して、ボード上のメモリマップされた場所を読み書きします。シミュレーションは、動作シミュレーションのみを実行できる Vivado® シミュレータでのみ使用できます。

AXI マネージャー IP を設計に統合するには、AXI Manager IPをFPGA設計に統合する を参照してください。AXI マネージャー IP を設計に統合した後、テスト対象の設計 (DUT)、メモリ インターフェイス ジェネレーター (MIG)、AXI マネージャー IP、クロック、およびリセット ロジックを含む SystemVerilog ラッパーを作成します。その後、SystemVerilog テストベンチでラッパーをインスタンス化し、シミュレーションを行うことができます。

HDL ラッパーの作成

FPGA 設計用のラッパーを作成します。ラッパーには、すべてのユーザー ロジックと FPGA ロジックが含まれます。ラッパーへのインターフェースには、クロック ポートとリセット ポート、およびメモリやその他のオンボード周辺機器へのオプションの DDR3 インターフェースが含まれます。Vivado でデザインを作成して構成した後、Vivado のソース ウィンドウに移動します。Sources タブの Design Sources の下で、デザイン名を右クリックし、Create HDL Wrapper を選択します。このアクションにより、design_name/hdl フォルダーに design_name_wrapper.v という名前の HDL ファイルが作成されます。ここで、design_name は Vivado プロジェクトの名前です。

SystemVerilog テストベンチ

HDL Verifier™ は、SystemVerilog シミュレーションで設計と対話するための SystemVerilog タスクを提供します。SystemVerilog ラッパーを作成したら、SystemVerilog テストベンチでラッパーをインスタンス化します。テストベンチには、メモリ モデルなどのオンボード IP モデルも含まれています。DUT にクロックとリセット信号を駆動します。HDL Verifier に固有の定義を含めるには、テスト ベンチ ファイルにこのコードを入力して、hdlverifier パッケージをテスト ベンチにインポートします。

import hdlverifier::*;

メモリ位置にデータを書き込むか、メモリ位置からデータを読み取るには、次の 2 つのセクションで説明するように、それぞれ writememory および readmemory SystemVerilog タスクを使用します。AXI マネージャー シミュレーションを使用する例については、JTAGベースのAXIマネージャを使用してFPGAメモリにアクセスする を参照してください。

writememory(addr,wdata,burst_type) SystemVerilog タスク

シミュレーションで AXI4 メモリマップされた下位にデータを書き込みます。

  • addr – 書き込み操作の開始アドレス

    アドレスは、AXI マネージャーの IP アドレス幅に応じて、32 ビットまたは 64 ビットにゼロ拡張されます。アドレスは、FPGA ボード上の AXI マネージャー IP によって制御される AXI 従属メモリ位置を参照する必要があります。詳細については、メモリマッピングガイドラインを参照してください。

  • wdata – 書き込むデータワード

    デフォルトでは、テストベンチは連続したアドレス ブロックにデータを書き込み、各操作のアドレスを増分します。アドレス増分モードをオフにして各データ値を同じ場所に書き込むには、burst_type パラメータを HDLV_AXI_BURST_TYPE_FIXED に設定します。

  • burst_type – AXI4 バーストタイプ

    増分モードの場合は HDLV_AXI_BURST_TYPE_INCR を、固定バースト モードの場合は HDLV_AXI_BURST_TYPE_FIXED を指定します。

    HDLV_AXI_BURST_TYPE_INCR モードでは、AXI マネージャーは指定されたアドレスから始まる連続したメモリ位置からデータのベクトルを読み取ります。HDLV_AXI_BURST_TYPE_FIXED モードでは、AXI マネージャーは同じアドレスからすべてのデータを読み取ります。

readmemory(addr,length,burst_type) SystemVerilog タスク

シミュレーションで AXI4 メモリマップされた従属オブジェクトからデータを読み取ります。

  • addr – 読み取り操作の開始アドレス

    アドレスは、AXI マネージャーの IP アドレス幅に応じて、32 ビットまたは 64 ビットにゼロ拡張されます。デフォルトでは、アドレス幅は 32 ビットに設定されています。幅を 64 ビットに設定するには、HDL テスト ベンチで parameter AXI_ADDR_WIDTH=64 を指定します。アドレスは、FPGA ボード上の AXI マネージャー IP によって制御される AXI 従属メモリ位置を参照する必要があります。詳細については、メモリマッピングガイドラインを参照してください。

  • length – 読み取る場所の数

    読み取るメモリ位置の数を指定します。デフォルトでは、テストベンチは連続したアドレス ブロックから読み取り、各操作のアドレスを増分します。アドレス増分モードをオフにして同じ場所から繰り返し読み取るには、burst_type パラメータを HDLV_AXI_BURST_TYPE_FIXED に設定します。

  • burst_type – AXI4 バーストタイプ

    増分モードの場合は HDLV_AXI_BURST_TYPE_INCR を、固定バースト モードの場合は HDLV_AXI_BURST_TYPE_FIXED を指定します。

    HDLV_AXI_BURST_TYPE_INCR モードでは、AXI マネージャーは指定されたアドレスから始まる連続したメモリ位置からデータのベクトルを読み取ります。HDLV_AXI_BURST_TYPE_FIXED モードでは、AXI マネージャーは同じアドレスからすべてのデータを読み取ります。

メモリマッピングガイドライン

  • AXI マネージャー IP のデータ幅が 32 ビットの場合、メモリは 4 バイト境界に配置され、アドレスは 4 バイト単位で増分されます (0x00x40x8)。この場合、0x1 は無効なアドレスであり、エラーが発生します。

  • AXI マネージャー IP のデータ幅が 64 ビットの場合、メモリは 8 バイト境界に配置され、アドレスは 8 バイト単位で増分されます (0x00x80x10)。この場合、0x1 または 0x4 は無効なアドレスであり、エラーが発生します。

  • AXI マネージャー IP データ幅が 32 ビットで、バースト タイプ パラメーターが Increment に設定されている場合、アドレスは 4 バイト増加します。

  • AXI マネージャー IP データ幅が 64 ビットで、バースト タイプ パラメーターが Increment に設定されている場合、アドレスは 8 バイト増加します。

  • 32 ビット レジスタへのアクセスには 64 ビット AXI マネージャーを使用しないでください。

関連するトピック