关于UVM factory机制的疑惑
时间:10-02
整理:3721RD
点击:
大家好,本人最近在学习UVM,看到factory机制有如下疑问:
有
`define m_uvm_object_registry_internal(T,S) \
typedef uvm_object_registry #(T,'"S'") type_di; \
如果一个类A注册进了factory就可以通过
A::type_id::created() 函数来例化类,有现在的问题是 我的类A是从uvm_object中派生而来,但是我并没有在uvm_object中找到一个变量是uvm_object_registry的变量啊,既然是通过::来调用,uvm_object 中应该有uvm_object_registry的变量或函数啊?
不知我的理解那里有错,想了很久都没想通。
还望各位多多赐教啊
有
`define m_uvm_object_registry_internal(T,S) \
typedef uvm_object_registry #(T,'"S'") type_di; \
如果一个类A注册进了factory就可以通过
A::type_id::created() 函数来例化类,有现在的问题是 我的类A是从uvm_object中派生而来,但是我并没有在uvm_object中找到一个变量是uvm_object_registry的变量啊,既然是通过::来调用,uvm_object 中应该有uvm_object_registry的变量或函数啊?
不知我的理解那里有错,想了很久都没想通。
还望各位多多赐教啊
uvm_object_registry是一个wrapper,不是一个变量!是由uvm_object_wrapper扩展而来的!
多谢这位仁兄,我觉得uvm_object_registry 应该和uvm_object 应该有一定关系啊,不然它怎么能够去调用uvm_object_registry的方法啊,但是这个关系我现在还找不到啊,不知道他们是怎么联系起来的。
你知不知道什么是wrapper,我建议你先看一下Mark glasser的OVM cookbook,论坛上面有,这本书中有一节讲factory的,可以看一下!wrapper中有一个creat_object函数就是返回那个object的!
以前没学过OVM,看了OVM的cookbook,已经明白了,原来是typedef wrapper#( ) type_id来创建的,以前一直以为typedef只有申明的作用,想不到还有创建的作用。多谢anychao。