【问题标题】:How to check whether a UVM analysis port is connected?如何检查是否连接了UVM分析端口?
【发布时间】:2014-02-23 02:41:56
【问题描述】:

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

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

【问题讨论】:

    标签: system-verilog uvm


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,你说得对,应该使用uvm_analysis_impl_decl :) 我最初有它们,但后来为了使示例更简单而删除了它们。我会重新添加它们。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-19
        • 2015-02-19
        相关资源
        最近更新 更多