You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多AXI主设备场景:顶层接口实例化与DUT连接方式问询

多AXI主设备场景下的接口连接与验证实现

针对你的问题,直接给出明确结论和实现步骤:

是的,在3个AXI主设备的场景下,你需要在testbench顶层实例化3个独立的AXI Master接口,再通过uvm_config_db分别传递给对应的3个AXI Master Agent实例。具体实现流程如下:

1. 接口实例化与DUT连接

在testbench顶层文件中,为每个AXI主设备声明并实例化独立的AXI Master接口,然后将每个接口直接连接到DUT对应的AXI主端口上,确保物理信号一一对应:

// 声明并实例化3个AXI Master接口
axi_master_if axi_mst_if0();
axi_master_if axi_mst_if1();
axi_master_if axi_mst_if2();

// 连接接口到DUT的对应主端口
dut u_dut (
    .m0_axi(axi_mst_if0),  // 第一个主设备端口
    .m1_axi(axi_mst_if1),  // 第二个主设备端口
    .m2_axi(axi_mst_if2),  // 第三个主设备端口
    // DUT其他端口连接...
);

2. 通过uvm_config_db传递虚拟接口

在顶层的initial块中,将每个物理接口通过uvm_config_db注册到UVM环境中,注意要为每个接口指定唯一的路径标识,确保每个Agent能精准获取到对应的接口:

initial begin
    // 为每个Agent指定专属的接口路径
    uvm_config_db#(virtual axi_master_if)::set(null, "uvm_test_top.env.mst_agent0*", "vif", axi_mst_if0);
    uvm_config_db#(virtual axi_master_if)::set(null, "uvm_test_top.env.mst_agent1*", "vif", axi_mst_if1);
    uvm_config_db#(virtual axi_master_if)::set(null, "uvm_test_top.env.mst_agent2*", "vif", axi_mst_if2);
    run_test();
end

3. Agent侧获取接口

每个AXI Master Agent在build_phase阶段,通过uvm_config_db获取对应路径下的虚拟接口,完成与物理接口的绑定:

virtual function void build_phase(uvm_phase phase);
    super.build_phase(phase);
    // 获取当前Agent对应的虚拟接口
    if(!uvm_config_db#(virtual axi_master_if)::get(this, "", "vif", vif)) begin
        `uvm_fatal("NO_VIF", "Failed to retrieve virtual interface for AXI Master Agent")
    end
endfunction

额外注意事项

  • 必须保证DUT的每个AXI主端口拥有独立的信号组,禁止不同主设备复用同一组信号,否则会导致数据冲突或验证结果错误。
  • 若使用第三方AXI VIP(验证IP),需参考VIP官方文档确认多Agent实例的配置细节,部分VIP可能支持通过配置参数区分实例,但核心逻辑仍是为每个Agent分配独立的物理接口。

内容的提问来源于stack exchange,提问作者Grace90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:36:17