[UVM源代码研究] 聊聊uvm_component与uvm_root(uvm-1.2版)

本文详细探讨了UVM中的uvm_component和uvm_root类,介绍了它们的派生关系、树形结构实现、单例模式以及run_test函数的工作原理,展示了如何通过run_test启动验证环境并管理测试案例的执行过程。

[UVM源代码研究] 聊聊uvm_component与uvm_root(uvm-1.2版)


源代码截图都来自uvm-1.2的版本

uvm_component

uvm_component 的派生关系

uvm_component 派生自 uvm_object,而且并不是直接派生,在两者之间还有一个uvm_report_object。

uvm_component类派生关系图

uvm_object 是一个相对简单的类,它主要提供了两大类的方法接口:

  • 用于field_automation 机制的方法,如print, copy, pack 等;
  • 用于鉴别身份的方法,如 get_name, get_type_name, get_full_name 等。
    其中关于 field_automation 机制的一些代码相对比较复杂。这个留在后面讲述 field_automation 机制时再仔细研究。

uvm_report_object 用于提供了UVM 中信息报告机制的一系列方法接口,如uvm_report_info, uvm_report_error, set_report_verbosity_level等,即我们在基础课程中学习的message机制相关方法都是在这里定义的(具体实现有些是在另外的类中完成的,如uvm_report_handler,这里只是做了一层封装而已),后面会专门介绍这种信息报告机制。

无论是 uvm_object 还是uvm_report_object,更多的只是提供一些方法接口,并不涉及什么高深的UVM处理机制,相对来说,uvm_component 里面的内容才更具有实质性意义的。

对于uvm_component 来说,有两大特点:

  • 它的每个实例都是UVM树形结构的节点,每个节点创建时都需要指定parent
  • 它有 phase 的概念

关于phase的部分将会放在phase 机制中讲述,本章中重点讲述 uvm_component 的树形组织结构。

uvm_component 树形结构的实现

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值