如何检查UVM分析端口是否已连接?

Vic*_*sky 4 system-verilog uvm

通常情况下,我们的UVM模拟会因签名而失败,我们最终会调试到未连接的分析端口.

有没有办法检查前面的分析端口是否连接run_phase

Vic*_*sky 6

分析端口连接不是UVM要求.但是,当分析端口未连接时,某些UVM组件将无法正常工作.

对于这些情况,我建议在以下期间检查分析导入连接end_of_elaboration_phase:

`CHECK_PORT_CONNECTION(my_analysis_imp)
Run Code Online (Sandbox Code Playgroud)

上面的宏定义如下:

`define CHECK_PORT_CONNECTION(PORT) \
  begin \
    uvm_port_list list; \
    PORT.get_provided_to(list); \
    if (!list.size()) begin \
      `uvm_fatal("AP_CONNECT", \
        $sformatf("Analysis port %s not connected.", PORT.get_full_name())); \
    end \
  end
Run Code Online (Sandbox Code Playgroud)

完整的工作示例,其中一个连接端口和一个未连接的端口:http://www.edaplayground.com/x/2YG