分层附加 UVM 分析端口

Attaching UVM Analysis Ports Hierarchically

我有一个包含两个订户的组件。我希望能够在不使用分层引用的情况下实例化该组件并连接其订阅者。

鉴于我有

my_comp.sub1.analysis_export
my_comp.sub2.analysis_export

如何在不进入组件的情况下与组件内的订阅者建立连接?

我希望能够做到

function void connect_phase(uvm_phase phase);
    monitor.ap1.connect(my_comp.sub_1_analysis_export);
    monitor.ap2.connect(my_comp.sub_2_analysis_export);
endfunction

您始终可以在组件层次结构的较高级别创建端口或导出,并将它们连接到较低级别的端口和导出。然后连接更高级别的组件。通常,监视器是代理的一部分,您将监视器的 analysys_port 设为代理的端口。然后将订阅者连接到代理。

您可以在更高层次结构 (my_comp class) 中创建分析导出端口,并在连接阶段将其连接到 sub_1.analysis 导出端口。

现在在代理的连接阶段,您可以直接将监控分析端口连接到新的分析导出端口。 (我相信,你在你的代码中写了代理class的connect阶段,这通常是monitor的正常位置)

您修改后的代码可能如下所示:

// In my_comp Class
uvm_analysis_export #([Your Port Transaction Data Type]) new_export_1;
uvm_analysis_export #([Your Port Transaction Data Type]) new_export_2;

function void connect_phase();
  new_export_1.connect(sub1.analysis_export);
  new_export_2.connect(sub2.analysis_export);
endfunction

// In agent Class
function void connect_phase();
  monitor.ap1.connect(my_comp.new_export_1);
  monitor.ap2.connect(my_comp.new_export_2);
endfunction