このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
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
という名前の HDL ファイルが作成されます。ここで、design_name
_wrapper.vdesign_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 バイト単位で増分されます (
0x0
、0x4
、0x8
)。この場合、0x1
は無効なアドレスであり、エラーが発生します。AXI マネージャー IP のデータ幅が 64 ビットの場合、メモリは 8 バイト境界に配置され、アドレスは 8 バイト単位で増分されます (
0x0
、0x8
、0x10
)。この場合、0x1
または0x4
は無効なアドレスであり、エラーが発生します。AXI マネージャー IP データ幅が 32 ビットで、バースト タイプ パラメーターが
Increment
に設定されている場合、アドレスは 4 バイト増加します。AXI マネージャー IP データ幅が 64 ビットで、バースト タイプ パラメーターが
Increment
に設定されている場合、アドレスは 8 バイト増加します。32 ビット レジスタへのアクセスには 64 ビット AXI マネージャーを使用しないでください。