【System Verilog and UVM基础入门13】消息的打印及过滤

【消息打印,可以帮助工程师DEBUG问题!】

UVM使用冗余值来过滤消息

UVM_DEBUG 战斗力500
UVM_FULL 战斗力400

UVM_HIGH

战斗力300
UVM_MEDIUM 战斗力200
UVM_LOW 战斗力100
UVM_NONE 战斗力0

如何理解呢?UVM_NONE没有战斗力,所以带有UVM_NONE级别的消息始终打印,而具有其他级别(战斗力)的消息,如果需要打印,则需要更高的阈值!

为了进一步的了理解,请看下面的代码!

//          ID    _______________________MESSAGE_________  VERBOSITY_LEVEL
`uvm_info( "ID1", "Show information different UVM_DEBUG"  , UVM_DEBUG  ) 
`uvm_info( "ID1", "Show information different UVM_FULL"   , UVM_FU
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UVM 中,我们可以通过设置消息处理器(Message Handler)来控制 UVM 最后打印消息格式。具体来说,我们可以在构建阶段(`build_phase`)中设置消息处理器的格式,例如: ```verilog class my_env extends uvm_env; // ... function void build_phase(uvm_phase phase); super.build_phase(phase); //获取默认消息处理器 uvm_default_handler default_h = uvm_default_factory.get_default_handler(); //设置默认消息处理器的格式 default_h.set_format_string("%m @ %t: %s"); endfunction // ... endclass ``` 在上述例子中,我们获取了默认的消息处理器,并设置了其格式为`"%m @ %t: %s"`。其中,`%m`表示消息类型,`%t`表示时间戳,`%s`表示消息内容。 除了设置默认消息处理器的格式外,我们还可以创建自定义消息处理器,并根据需要设置其格式。例如: ```verilog class my_msg_handler extends uvm_msg_handler; // ... function void report_phase(uvm_phase phase); super.report_phase(phase); //设置消息处理器的格式 set_format_string("%m @ %t: %s"); endfunction // ... endclass ``` 在上述例子中,我们创建了一个自定义消息处理器,并在报告阶段(`report_phase`)中设置了其格式为`"%m @ %t: %s"`。 最后,我们需要在测试用例或顶层中设置消息处理器,例如: ```verilog class my_test extends uvm_test; // ... function void build_phase(uvm_phase phase); super.build_phase(phase); //设置消息处理器 my_msg_handler msg_h = new(); uvm_report_info.set_msg_handler(msg_h); endfunction // ... endclass ``` 在上述例子中,我们创建了一个自定义消息处理器`msg_h`,并将其设置为消息处理器。 通过以上步骤,我们可以控制 UVM 最后打印消息格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值