【问题标题】:How to change uvm verbosity for an object in component如何更改组件中对象的 uvm 详细程度
【发布时间】:2017-11-27 08:07:19
【问题描述】:

在为组件中的对象设置详细程度时遇到问题。 我想将特定组件(uvm_test_top.env.subenv_a)的详细程度设置为UVM_HIGH,命令行参数如下:

1.+UVM_VERBOSITY=UVM_LOW

2.+uvm_set_verbosity=*subenv_a*,_ALL_,UVM_HIGH,build,0 

对象(object_a)会在组件构建阶段做一些配置:subenv_a.

我没有看到 object_a 中的 UVM_HIGH 信息被打印出来,组件 subenv_a 中所有组件的 UVM_HIGH 信息都将被打印出来。

似乎命令“+uvm_set_verbosity”只对组件生效,而不是组件中的对象。

那么我应该怎么做才能打印组件中对象的 UVM_HIGH 信息。

谢谢 肯

【问题讨论】:

    标签: system-verilog uvm


    【解决方案1】:

    只有派生自uvm_component 的类才知道它们的出身。 知识 我的意思是uvm_component 被设置为将父母与孩子联系起来,作为可以通过命名层次结构遍历的数据库。你可以:

    • uvm_report_object 而不是uvm_object 派生您的object_a。然后从您的组件中执行object_a_h.set_report_handler(get_report_handler);。现在来自object_a 的所有消息都显示为好像来自您的组件并共享相同的报告设置。
    • this 作为上下文传递给object_a,并使用uvm_info_context() 宏而不是uvm_info。这与上面的效果相同。
    • object_a 中使用唯一的消息 ID,并为该 ID 添加一个额外的 +uvm_set_verbosity 开关。
    • uvm_component 而不是uvm_object 派生您的object_a,并使您的组件成为其父组件。这可能是最简单的解决方案,但如果这些对象很多,则开销最大。

    【讨论】:

    • 谢谢戴夫,我用的是第一种方法。
    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 2017-07-29
    • 2016-07-09
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多