以层次结构连接UVM分析端口

时间:2016-02-03 20:51:02

标签: system-verilog uvm

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

鉴于我有

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

2 个答案:

答案 0 :(得分:2)

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

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

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

// 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

答案 1 :(得分:0)

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