factory所有的操作都是通过`uvm_object_utils或`uvm_component_utils这两个宏来完成;
1.`uvm_object_utils
2. `m_uvm_object_registry_internal
(1) factory机制的注册是在typedef uvm_object_registry#(T,`”S`”) type_id中实现的;
(2) typedef语句声明了一个参数化的类,类的名字为uvm_object_registry,参数有两个,一个是输入的类型T,一个是字符串S;
3. class uvm_object_registry
(1) uvm_object_registry派生于uvm_object_wrapper(uvm_object_wrapper是一个纯虚类);
(2) uvm_object_registry类内部有一个私有的静态成员变量me,通过调用get函数,创建一个me的实例,然后通过factory的register函数注册到factory中;
(3) typedef uvm_object_registry#(T1,”S1”) type1和typedef uvm_object_registry#(T2,”S2”) type2在编译时,编译器会认为是两个类;
(4) 所谓的把一个object或者component注册到factory中,其实注册的不是这个object或者component,而是uvm_object_registry#(T,”S”)或uvm_component_registry#(T,”S”)的一个实例;