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」ウィンドウに移動します。「Sources」タブの「Design Sources」の下のデザイン名を右クリックし、 「Create HDL Wrapper」を選択します。このアクション、 design_name_wrapper.v design_name/hdl という名前の 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 Manager を使用した 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 ビットで、Burst typeパラメーターがIncrementに設定されている場合、アドレスは 4 バイトずつ増加します。

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

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

関連するトピック