问题由来
整个环境已经设置了全局的打印阈值,但是有个别组件的打印级别的比较低,因此打印出很多无用的信息,但是又不想修改全局的打印阈值。那有没有再不修改全局打印阈值的前提下,只修改某个组件的信息打印阈值呢?
举例:如整个top_env的打印阈值是UVM_MEDIUM,但是top_env中例化usb_env中普遍使用的打印级别是UVM_LOW,因此top_env.usb_env中有很多冗余的信息打印,那么如果要单独将usb_subenv组件中的打印阈值调整为UVM_LOW,其他组件打印阈值为UVM_MEDIUM不变
问题解决
其实UVM中给我们提供了两种现成的方案:
- 环境中使用内建函数
set_report_verbosity_level_hier()
top_env.usb_subenv.set_report_verbosity_level_hier(UVM_LOW)
- 格式:
<comp>.set_report_verbosity_level_hier(阈值级别)
- 作用:将某个组件(及其内部所有组件)指定的阈值
- 添加位置:建议connect_phase(build_phase之后 ,run_phase之前)
- build_phase之后:因为build_phase之后,UVM树才能建立起来
- run_phase之前:大多数的打印是在run_phase中执行,因此需要提前设置好