AXI VIP のテストベンチをコーディングする際は、次の要件を満たしている必要があります。これらを満たさない場合、AXI VIP は動作しません。これらの要件はすべての VIP に当てはまります。
1. 一般的な SystemVerilog テストベンチ同様、モジュール テストベンチを作成します。
module testbench();
…
endmodule
2. 2 つの必須パッケージ axi_vip_pkg と <component_name>_pkg をインポートします。 <component_name>_pkg には、AXI VIP 用のエージェント クラスとそのサブクラスが含まれます。各 VIP インスタンスにはコンポーネント パッケージがあり、これは出力の生成時に自動的に生成されます。このコンポーネント パッケージには、パラメーターで指定されるエージェントの typedef クラスが含まれます。VIP をリコンフィギュレーションしてもテストベンチには影響しないため、このパッケージをインポートすることを推奨します。 この図 に、スタンドアロン AXI VIP から <component_name>_pkg を取得する方法を示します。
この図 に、IP インテグレーター デザインから <component_name>_pkg を取得する方法を示します。まず VIP をクリックし、 [Block Properties] ウィンドウで [Properties] をクリックします。このビューの [CONFIG] 欄にある [Component_Name] を確認します。
3. エージェントを宣言します。1 つの AXI VIP につき、1 つのエージェントを宣言する必要があります。エージェントを宣言する際は、AXI VIP インターフェイス モードに応じた種類の typedef クラスを呼び出す必要があります。
名称 |
説明 |
---|---|
<component_name>_mst_t |
マスター VIP |
<component_name>_slv_t |
スレーブ VIP (メモリ モデルなし) |
<component_name>_slv_mem_t |
スレーブ VIP (メモリ モデルあり) |
<component_name>_passthrough_t |
パススルー VIP (メモリ モデルなし) |
<component_name>_passthrough_mem_t |
パススルー VIP (メモリ モデルあり) |
4. エージェントに対して new を作成し、この new 関数に IF の正しい階層パスを渡します。エージェントを new に設定する前に、空のテストベンチを使用してシミュレーションを実行し、AXI VIP インスタンスの階層パスを確認します。次のようなメッセージが表示されたら、このパスを new 関数に渡します ( この図 参照)。
agent = new("my VIP agent", <hierarchy_path>.IF);