[UVM源代码研究] UVM report机制分析(uvm-1.2版)

本文详细探讨了UVM1.2版本中如何通过uvm_info宏定制打印格式,涉及uvm_report_enabled、uvm_report_object、uvm_report_handler和uvm_report_server等关键组件,以及如何通过自定义report_server类和compose_report_message函数实现个性化打印。

[UVM源代码研究] UVM report机制分析(uvm-1.2版)

引子:如何定制一款个性化的打印格式

如果使用默认的打印格式,我们执行以下代码:

`uvm_info语句
在这里插入图片描述

实际打印结果格式如下:

`uvm_info打印结果

在这里插入图片描述

打印内容包含了下面几个方面:

  • severity信息(UVM_INFO)
  • 打印位置(文件…/env/my_case0.sv的第43行)
  • 打印仿真时间 (0ns)
  • 打印信息所在组件在树形结构中的位置 (uvm_test_top)
  • ID信息 (BUILD_PHASE)
  • 打印message实体(case0 on going)

也就是说UVM源代码已经帮我们做了处理,将我们执行的uvm_info内的内容输出固定的打印格式到终端上,如果我们想调整打印的内容格式,那就需要对UVM中的report机制有个比较深入系统的了解,下面我们就以uvm_info为例看下UVM源代码具体是怎么样一个执行过程。

`uvm_info宏的定义

src/macros/uvm_message_defines.svh中的源代码

在这里插入图片描述

src/macros/uvm_message_defines.svh中的源代码

在这里插入图片描述

113-115行这个行我们没有定义,这里就不讨论应用场景了。

这个宏封装的主体执行的代码就是117-118这两行代码。

uvm_report_enabled

src/base/uvm_report_object.svh中的源代码

在这里插入图片描述

src/base/uvm_globals.svh中的源代码

在这里插入图片描述

函数定义位置:对于这个uvm_report_enabled函数我们搜索UVM源代码文件发现有两个文件中有定义,分别如右图所示。对于uvm_globals.svh中的定义,我们分析其代码实现通过之前学习的知识发现其本质调用的是uvm_root单例中的uvm_report_enabled函数,而uvm_root的继承关系又是从uvm_component extends uvm_report_object继承而来,这样一来,uvm_report_enabled函数的实现根源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值