完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
UVM Report机制概述
相信大家对于UVM的report的使用都非常熟悉,`uvm_info, `uvm_warning, `uvm_error, `uvm_fatal等,其实UVM还提供了非常丰富的report用法,这里先介绍一下当我们调用这些宏时,究竟发生了什么?以及我们在一个object里面和component调用uvm_info等report宏时,是否走的同样的流程呢? report macros 首先解析一下这几个宏定义,其原理都非常简单,先调用uvm_report_enabled是否可以被report,然后分别调用相关的report函数:uvm_report_info,uvm_report_warning,uvm_report_error,uvm_report_fatal。也就是说,不管我们在哪里用这些宏,都是直接调用的uvm_report_*这些函数。 uvm_component中的report 这些函数在两个地方有定义,首先uvm_component以及其子类,都是继承自uvm_report_object这个类,而这个类中定义了report相关的函数,因此在uvm_component及其子类中调用`uvm_info,实际上是调用了它父类的report函数。而像uvm_object及其子类(这里不包括uvm_component这些,严格意义上讲uvm_component也是uvm_object的子类),在调用`uvm_info的时候,调用的是uvm_globals中定义的一个全局report函数。 uvm_globals中的report 在uvm_globals中的report又是怎么来的呢,简单来讲,UVM定义了一个uvm_root类,然后调用report时会去找一个静态的uvm_root类型的对象,我们暂时称之为top,该top在整个UVM仿真过程中存在且唯一,所以在除了component之外的任何地方调用report函数,其实就是调用了这个唯一uvm_root类中的report函数。而这个uvm_root又是从uvm_component继承过来的,因此它自然也继承了相应的report函数。这个概念在后续的一些特别例子中会有区别。 report classes 本节先简单介绍一下跟report相关的一些类,及其大致的作用。首先事uvm_report_object,所有调用report函数的入口都是在uvm_report_object中,该类也是uvm_component的父类,即uvm_component不是直接从uvm_object继承过来的,而是从uvm_report_object继承,而uvm_report_object才是直接继承自uvm_object。所以我们调用的report函数其入口都是定义于uvm_report_object中,该类就相当于是给用户提供了一个API,可以直接进行report相关操作。uvm_report_handler,该类定义于uvm_report_object中,且要注意的是每个不同的uvm_report_object,对应的这个handler是不一样的,所以在一些特殊配置操作的时候我们需要区分一下具体是对哪个component及其子类进行了配置。uvm_report_handler是report调用流程里面的中间层,在这里定义了一些特殊信息,例如对于某些特定的ID,在调用同样的report函数时可以采取一些不同的额外操作等等。 uvm_report_catcher,这个类相当于callback,可供用户定义一些额外的行为,都可以在report过程中被调用。 uvm_report_server,核心的report类,也是最终整理输出的类。 基于上述的report机制,用户可以实现各种各样的report功能,例如对某些特定ID的信息记录到一个文件中,某些指定ID的信息不打印,甚至完全修改report信息的格式,或者修改预定义的summary信息等等。这些都将在后续通过例子的形式慢慢介绍。 |
|
|
|
只有小组成员才能发言,加入小组>>
771 浏览 0 评论
1146 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1054浏览 3评论
188浏览 2评论
453浏览 2评论
364浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
449浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:20 , Processed in 1.173388 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号