[UVM源代码研究] uvm中的factory机制(uvm-1.2版)
工厂(factory)机制
工厂机制作为设计模式(design pattern)中的一种并不是uvm独有的,但却作为一个重要的概念被uvm引入实现了。
“工厂”表示一个负责创建其他类型对象的类,工厂决定了我们最终创建的类的类型。
factory机制的实现包含了以下几个步骤:
- 实现factory机制的类必须使用uvm_object/cmponent_utils系列宏进行注册
- 调用set_type_override等override函数对需要创建的类进行覆盖(可选)
- 创建类的时候必须使用::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的第二个参数。

最低0.47元/天 解锁文章
5304

被折叠的 条评论
为什么被折叠?



