System verilog 在特定条件下如何更改uvm组件的详细性
我试图在满足某些条件后更改模拟的UVM详细程度。不同组件的详细度选项以+uvm\u set\u详细度的形式通过命令行。满足条件后,模拟应使用命令行+uvm_set_verbosity选项运行。在此之前,所有组件的模拟都以低冗余度运行 查看UVM库代码,似乎有一个名为m_set_cl_msg_args()的函数。此函数调用其他三个似乎使用命令行参数的函数,如:+uvm_set_verbosity、+uvm_set_action、+uvm_set_severity 所以我所做的是从uvm_coreservice单例中获取uvm_根实例,然后使用uvm_组件类中的get_children()函数递归地获取模拟中所有uvm_组件的队列。然后在所有组件上调用m_set_cl_msg_args()函数 我的代码如下所示:System verilog 在特定条件下如何更改uvm组件的详细性,system-verilog,uvm,System Verilog,Uvm,我试图在满足某些条件后更改模拟的UVM详细程度。不同组件的详细度选项以+uvm\u set\u详细度的形式通过命令行。满足条件后,模拟应使用命令行+uvm_set_verbosity选项运行。在此之前,所有组件的模拟都以低冗余度运行 查看UVM库代码,似乎有一个名为m_set_cl_msg_args()的函数。此函数调用其他三个似乎使用命令行参数的函数,如:+uvm_set_verbosity、+uvm_set_action、+uvm_set_severity 所以我所做的是从uvm_cores
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
尽管这段代码编译正确,但这并不会改变冗长性。有什么想法吗?
此外,我能够打印阵列中的所有组件。所以我猜
数组_uvm[i].m_set_cl_msg_args();
这是一个错误的电话
任何人都有在运行时更改详细性的任何其他建议。您不应该在UVM中使用语言参考手册中未记录的函数。他们可以(而且确实)在任何修订中进行更改。我猜+uvm_set_冗余在默认情况下仅在时间0时有效 已经有一个方法来做你想做的事
umm_top.set_report_verbosity_level_hier()
我建议使用+UVM\u VERBOSITY=UVM\u LOW
启动测试,然后定义自己的开关以激活条件设置
如果需要特定组件,请使用component\u h.set\u report\u verbosity\u level()
(添加\u hier
以设置其所有子级)
您可以使用UVM的命令行处理器
get_arg_values()
方法指定要设置的组件的名称,然后使用umm_top.find()获取组件的句柄。我尝试过的这个方法。。但这里的问题是,层次结构中的所有组件都将根据我们传递的参数更改其详细程度。对于某些特定组件,是否有任何方法可以做到这一点,也可以通过命令行更新答案,并提供获取特定组件的建议方法。