在特定条件下如何更改uvm组件的详细程度

时间:2019-02-02 14:52:01

标签: system-verilog uvm

在满足某些条件后,我试图更改模拟的UVM详细程度。不同组件的详细选项通过+ uvm_set_verbosity传递给命令行。一旦满足条件,则应使用命令行+ uvm_set_verbosity选项运行仿真。直到所有组件的仿真都以较低的详细程度运行。

浏览UVM库代码,似乎有一个名为m_set_cl_msg_args()的函数。此函数调用其他三个似乎占用命令行参数的函数,例如:+ uvm_set_verbosity,+ uvm_set_action,+ uvm_set_severity。

所以我要做的是从uvm_coreservice单例中获取uvm_root实例,然后使用uvm_component类中的get_children()函数以递归的方式获取模拟中所有uvm_components的队列。然后在所有组件上调用m_set_cl_msg_args()函数。

我的代码如下:

    begin
     uvm_root r;
     uvm_coreservice_t cs_t;
     uvm_component array_uvm[$];
     cs_t = uvm_coreservice_t::get();
     r = cs_t.get_root();

     r.get_children(array_uvm);
     foreach(array_uvm[i])
       array_uvm[i].m_set_cl_msg_args();
    end

即使此代码可以正确编译,但这也不改变详细程度。任何想法 ? 此外,我能够打印array_uvm中的所有组件。所以我猜 array_uvm [i] .m_set_cl_msg_args(); 这是一个错误的电话。

任何其他人都建议在运行时更改详细程度。

1 个答案:

答案 0 :(得分:1)

切勿使用未在语言参考手册中记录的功能在UVM中使用。他们可以(做)在任何版本的变化。我猜+ uvm_set_verbosity仅通过默认工作在时间0。

已经有function做您想要做的事情

E:\xampp\apache\conf\extra\httpd-vhosts.conf

我建议使用umm_top.set_report_verbosity_level_hier() ,开始测试,然后定义自己的开关用于激活的条件的设置。

如果需要特定的组件,请使用+UVM_VERBOSITY=UVM_LOW(添加component_h.set_report_verbosity_level()来设置其所有子组件)

您可以使用UVM的命令行处理器_hier方法来指定要设置的组件的名称,然后使用umm_top.find()获取该组件的句柄。