【发布时间】:2019-02-02 14:52:01
【问题描述】:
我正在尝试在满足某些条件后更改模拟的 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(); 这是一个错误的电话。
任何人有任何其他建议可以在运行时更改详细程度。
【问题讨论】:
标签: system-verilog uvm