码迷,mamicode.com
首页 > 其他好文 > 详细

factory源码分析——component_registry和object_registry

时间:2017-10-26 21:02:32      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:wrap   相同   接口   registry   技术   actor   extends   es2017   dcl   

registry类主要是为object和component提供一个轻量级的代理(lightweight proxy)来方便factory实现;

registry class从uvm_object_wrapper继承而来

 

uvm_object_wrapper是一个virtual class,内部包含三个virtual function,为create_object,create_component

                          get_type_name,留下接口;

      不包含任何成员变量;也不从其他class继承而来;

      技术分享

 

uvm_component_registry:包含两个参数,type和string,在宏调用的时候,一般是相同的;

内部两个static的成员变量:type_name = Tname;

             this_type = me; this_type是针对某个参数registry的具体的typedef;

      实现function,get_type_name;

        static function, get;同时registry到factory中,所以factory中注册的其实都是class对应的static类型的registry class

      技术分享

      技术分享

 

实现create的两个function:

1)create_component,factory最终调用的create函数,被调用;

      技术分享

2)create函数,得到factory的唯一实例,调用create_component_by_type,contxt可以是parent的path,

      static的function

      技术分享

两个override的static的function:

      由于registry中,有component的type,所以都是type类型的override;

      技术分享

      技术分享

 

uvm_object_registry类似;

      两个static类型的变量,两个create的function,两个overide的function。

 

除了调用uvm提供的宏,也可以自定义type_id的typedef,来完成factory的注册等操作。

      class mycomp extends uvm_component;

        typedef uvm_omponent_registry #(mycomp, "mycomp") type_id;

      endclass

这样的操作,缺少get_type,get_object_type的function。

factory源码分析——component_registry和object_registry

标签:wrap   相同   接口   registry   技术   actor   extends   es2017   dcl   

原文地址:http://www.cnblogs.com/-9-8/p/7561690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!