4

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

有没有办法预先检查分析端口是否在之前连接run_phase

4

3 回答 3

6

连接分析端口不是 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

于 2014-01-30T16:51:04.303 回答
1

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

于 2014-11-18T21:11:31.447 回答
1

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

注意:发布为答案,因为我无法发表评论:(

于 2014-01-31T15:26:32.233 回答