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

时间:2014-01-30 16:51:04

标签: system-verilog uvm

我们的UVM模拟通常会失败并带有签名,我们最终会调试到未连接的分析端口。

有没有办法检查分析端口是否在run_phase

之前连接

3 个答案:

答案 0 :(得分:5)

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

对于这些情况,我建议在end_of_elaboration_phase

期间检查分析导入连接
`CHECK_PORT_CONNECTION(my_analysis_imp)

上面的宏定义如下:

`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

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

答案 1 :(得分:1)

感谢Victor的榜样。我不知道你给出的逻辑。 在Victor给出的例子中有一个小问题,w.r.t uvm_analysis_imp声明。多个分析实现应该使用uvm_analysis_imp_decl宏。 有关更正后的示例,请参阅以下链接。 http://www.edaplayground.com/x/3qx

注意:由于我无法评论,因此发布了答案:(

答案 2 :(得分:1)

我认为这应该是不必要的,因为此检查已经在uvm_port_base :: resolve_bindings中。但是,我相信那里有一个错误。问题是,对于imp size(),不会报告绑定到imp的端口数。因此,如果3个端口绑定到imp,则即使端口列表的大小正确为3,大小也会报告1。

相关问题