本ブログは英語版のAXI-Basics Blogを翻訳したものです。
概要
ブログ記事 AXI 基礎 2 では、ザイリンクス Verification IP (AXI VIP) を AXI プロトコル チェッカーとして使用可能であると紹介しました。このブログ記事では、AXI4 (Full) マスター インターフェイスで AXI VIP を使用して検証とエラー検出を実行する方法を紹介します。
AXI VIP を AXI4 プロトコル チェッカーとして使用 (チュートリアル)
これで AXI VIP をカスタム IP のマスター インターフェイスに接続してインターフェイスを検証できます。
get_ips *vip*
完全名は、デフォルトで design_1_axi_vip_0_0 のはずです。
//Import two required packages: axi_vip_pkg and <component_name>_pkg.
import axi_vip_pkg::*;
import design_1_axi_vip_0_0_pkg::*;
次に、VIP のエージェント タイプにスレーブを宣言します。
// Declare the agent
design_1_axi_vip_0_0_slv_mem_t slv_agent;
次にスレーブ エージェントを作成する必要があります。
//Create an agent
slv_agent = new("master vip agent",UUT.design_1_i.axi_vip_0.inst.IF);
// set print out verbosity level
slv_agent.set_verbosity(400);
//Start the agent
slv_agent.start_slave();
Fatal: AXI4_ERRM_AWADDR_BOUNDARY: A burst must not cross a 4kbyte boundary. Spec: section A3.4.1.
このエラーは、A3.4.1 セクションを見ると理解できます。エラー メッセージにも含まれているように、AMBA® AXI™ および ACE™ プロトコル仕様は、Arm ウェブサイト (リンク) から入手可能です。
この仕様には、次の文が含まれています。
“A burst must not cross a 4KB address boundary.” (バースト モードは 4 KB アドレスの境界をまたがないようにする必要があります。)
アドレス 0x44A00FC8 で開始する 16 個の 32 ビット ワードがバースト送信される設定になっていることがわかります。この場合、書き込みバーストがアドレス 0x44A00FC8 で開始してアドレス 0x44A01004 で終了します。4 KB の境界はアドレス 0x44A01000 (4K = 4*1024 = 4096 = 0x1000) のため、バーストがこの境界をまたいでしまうため、エラーが発生します。
Fatal: AXI4_ERRM_WDATA_STABLE: WDATA must remain stable when WVALID is asserted and WREADY low. Spec: section A3.2.1.
/* Write Data Generator
Data pattern is only a simple incrementing count from 0 for each burst */
always @(posedge M_AXI_ACLK)
begin
if (M_AXI_ARESETN == 0 || init_txn_pulse == 1'b1)
axi_wdata <= 'b1;
//else if (wnext && axi_wlast)
// axi_wdata <= 'b0;
else if (wnext)
axi_wdata <= axi_wdata + 1;
else
axi_wdata <= axi_wdata;
end
シミュレーションでエラーは発生しないはずです。波形ウィンドウを確認しても、16 個の書き込みバースト トランザクションと 16 個の読み込みバースト トランザクションが正しく発生していることが確認できます。これは、2 つ目の問題が修正されたことを意味します。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.