关于UVM局部uvm_set_verbosity的疑问
最近需要debug子系统下的某个IP,因此将这个IP的env verbosity设置成了UVM_HIGH(全局默认设置为LOW)。但是最后发现ip env的component对应的uvm high info都能print,但是component下的object只能print low info,
看起来局部的设置对object未起作用。
+uvm_set_verbosity=*ip_module_env*,_ALL_,UVM_HIGH,build,0
component在build phase阶段会new object以及调用object的function做一些设置,主要想看这些配置信息协助debug
各位朋友有遇到过这种情况吗,能否赐教一下,谢谢!
以下的回复 并没有实际验证过,是根据 1800.2-2017上面的描述的 推测的可能,可以自行验证哈;
有可能是他们的 report_handle 不是同一个导致的,一个 testbench 可以由若干个ENV 黏合构成,但是每个env都可以config自己的 verbosity,如果是这样做的 ,那么他们的 report_handle 应该不是同一个;协议中指出可以 使用 set/get_report_handle 来 share report_handle
请问结果如何
感谢回复,我上面提到的component是在一个env里,object是在这个component,这样应该都是在同一个env下,之所以用上面的sim_arg对object不起作用,看起来是object没有hierarchy之说,所以sim_arg的set对其不起作用。
但是全局的UVM_VERBOSITY看起来对comp和object都起作用。暂时还在try其他方法
+uvm_set_verbosity=*ip_module_env*.*...
有试过么?
请问你的意思是说第一个argument换成你说的那样,+uvm_set_verbosity=*ip_module_env*.*...,_ALL_,UVM_HIGH,build,0
了解了,就是*.*,后面还是一样,我去试试估计是一样的效果
还是get不到?你在simv后面再加一个选项 +UVM_CONFIG_DB_TRACE, 把所有set / get动作都打印出来debug吧
这是正解,小编好好读读相关文档吧
文档对 +uvm_set_verbosity难道还有更详细的描述?5楼的朋友让我尝试将comp这项argument由我原先的*env*改成*env*.*
但事实上两种通配符表达方式都是一样的效果,我也已经尝试过。
看起来+uvm_set_verbosity只会对component起作用,看源码应该是遍历comp下的所有层次,但是component里的object是没有层次概念的(没有所谓的top.compA.objectB这样的层次)
不知上述理解是否有误,另外也请教一下是否还有其他方法,谢谢
感谢,最终还是用您的思路解决了,share component和object 的uvm_report_handler 。看起来不仅仅是不同的env在同一个env下的component和objet也存在 report setting不能share的情况!
以前看的,有点忘了,印象中component的report handle与object是不一样的,component的是自身的,而object的用的是uvm_root handle,因此使用hier level进行set对于object是不成功的