Factory机制:
1、 UVM强烈推荐使用uvm_component_utils或者uvm_object_utils宏来注册。用法:
Class A extends uvm_component
`uvm_component_utils(A);
Endclass
创建一个A的实例如下:
A a;
a=A::type_id::create(“a”,this);
通过该方式,可以使用UVM的众多功能。
2、 override功能:
需要对某些类进行改写时,可用override功能。先从my_driver派生出一个类,定义为:
Class new_driver extends my_driver;
………
`uvm_component_utils(new_driver)
Endclass
之后在case的build_phase中调用override相关的函数:
Class case_x extends base_test;
Function void build_phase(uvm_phase phase);
……..
Set_type_override_by_type(my_driver::get_type(),new_driver::get_type());
Endfunction
Endclass
经过上诉过程后,在跑case_x的时候,系统运行my_driver就是new_driver类型,其行为就是new_driver。有个前提是在agent实例化的时候,要使用factory机制。
Class my_agent;
My_driver drv;
Function void buile_phase