System verilog 分层附加UVM分析端口

System verilog 分层附加UVM分析端口,system-verilog,uvm,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);

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

考虑到我有

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_端口作为代理的端口。然后将订阅服务器连接到代理。

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

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

现在,在agent的连接阶段,您可以直接将monitor 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

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

现在,在agent的连接阶段,您可以直接将monitor 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

所以我在上层调用
sub1.analysis\u export.connect(sub\u analysis\u export)
?在上层调用
sub1.analysis\u export.connect(sub\u analysis\u export)