UVM源码阅读(4.2)——uvm_registery

继续uvm factory机制。

object和component类型使用轻量级的代表

class uvm_component_registery #(type T=uvm_component, string Tname="<unknown>") extends uvm_object_wrapper;

变量:

typedef uvm_component_registery #(T,Tname) this_type;

const ststic string type_name = Tname;

local static this_type me= get();

function/task

uvm_component_registery
virtual function uvm_component create_component(string name, uvm_component parent);
  T obj;
  obj = new(name,parrent);
  return obj;
endfunction
virtual function string get_type_name();

    return type_name;

static function this_type get();
if(me=null) begin
   uvm_factory f=uvm_factory::get();
   me = new();
   f.register(me);
end
return me;

 static function T create(string name,uvm_component parent, string contxt="");

uvm_object obj;
uvm_factory f= uvm_factory::get();
if(context=="" && parent != null)
  contxt = parent.get_full_name(); 
obj = f.create_component_by_type(get(),contxt,name,parent);

cast(create,obj)

static function void set_type_override(uvm_object_wrapper override_type,bit replace=1)

    factory.set_type_override_by_type(get(),override_type,replace);

static function void set_inst_override(uvm_object_wrapper override_type,string inst_path,uvm_component parent = null);

      factory.set_inst_override_by_type(get(),override_type,inst_path);

class uvm_component_registery #(type T=uvm_component, string Tname="<unknown>") extends uvm_object_wrapper;    

与上部分类似

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值