[UVM源代码研究] uvm中的factory机制(uvm-1.2版)

[UVM源代码研究] uvm中的factory机制(uvm-1.2版)

工厂(factory)机制

工厂机制作为设计模式(design pattern)中的一种并不是uvm独有的,但却作为一个重要的概念被uvm引入实现了。

“工厂”表示一个负责创建其他类型对象的类,工厂决定了我们最终创建的类的类型。

factory机制的实现包含了以下几个步骤:

  1. 实现factory机制的类必须使用uvm_object/cmponent_utils系列宏进行注册
  2. 调用set_type_override等override函数对需要创建的类进行覆盖(可选)
  3. 创建类的时候必须使用::type_id::create方法创建(这样才会执行查找override表创建最终的类型)

下面我们分别对以上3个步骤中涉及到的UVM源代码进行解读。

`uvm_object/component_utils系列宏

我们在使用factory机制的时候,必不可少的一个步骤就是相关类在实现的时候必须使用`uvm_object/component_utils宏进行注册,下面以uvm_object为例讲述一系列的相关宏的具体实现。

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

uvm_object/component_utils宏展开,首先都会调用m_uvm_object_registry_internal/param宏,这两个宏中都定义了一个参数化的uvm_object_registry类类型type_id,不同的是`m_uvm_object_registry_internal宏多了个参数S,而在定义type_id类型的时候将参数S按内容直接替换为字符串作为参数化的类uvm_object_registry的第二个参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值