1.set_type_override_by_type 实现两种不同类型之间的重载。原型: 2.有时不希望把平台中的A 全部替换成B,只是替换部分,用set_inst_override_by_type,原型: 1)第一个是相对路径。 3.示例: 1)运行到main_phase是,会输出: 4.上面两个的参数都是uvm_object_wrapper 型的参数,通过xxx::get_type()获得。U...
function void uvm_set_type_override_by_type (string original_type_name, string override_type_name) ``` 该函数的作用是将原始类型名称`original_type_name`设置为使用`override_type_name`进行覆盖。 示例用法: ```systemverilog uvm_set_type_override_by_type("my_original_type", "my_override_type"...
set_type_override_by_type 总结 工厂(factory)机制 工厂机制作为设计模式(design pattern)中的一种并不是uvm独有的,但却作为一个重要的概念被uvm引入实现了。 “工厂”表示一个负责创建其他类型对象的类,工厂决定了我们最终创建的类的类型。 factory机制的实现包含了以下几个步骤: 实现factory机制的类必须使用uvm_...
2. 跟这个队列相关的task有两个set_type_override_by_type/set_type_override_by_name 3. 首先分析set_type_override_by_type,可以设定一个override让一个wrapper取代另外一个wrapper,然后将该override压入数组,如果一个wrapper没有注册,函数中就将其注册。 4.set_type_override_by_name() 让original_type_name...
uvm_object_wrapper original_type, //第二个参数是被重载的类型,父类 uvm_object_wrapper override_type); 无论是set_type_override_by_type还是set_inst_override_by_type,它们的参数都是一个uvm_object_wrapper型的类型参数,这种参数通过xxx::get_type()的形式获得。
② set_inst_override_by_type (uvm_component.svh) 有时候可能并不希望把验证平台中的所有类型全部进行替换,而只是替换其中的某一部分,这种情况就要用到set_inst_override_by_type函数。 // set_inst_override_by_type// ---functionvoiduvm_component::set_inst_override_by_type(stringrelative_inst_path,uvm...
1)set_type_override; 2)set_inst_override; uvm_factory,主要是对内部的几个queue进行变量的搜索以及更新,调用registry的create_xx进行object的new; 变量var:m_types,m_type_names,分别是对registry后的对象的name和object的保存queue; m_type_override,保存通过方法set_type_override_by_type/name添加的信息; ...
Run custom file Custom File Compile Options Run Options Run Time: Use run.do Tcl file Compile Options Run Options Run Time: Compile Options Run Options Run Time: Use run.do Tcl file Use run.bash shell script Run custom file Custom File Compile Options Run Options Run Time...
base_obj::type_id::set_type_override(child_obj::get_type()); 43 obj_b=base_obj::type_id::create("obj_b"); 44 factory.print(); 45 endfunction 46 47 functionvoidend_of_elaboration_phase(uvm_phasephase); 48 super.end_of_elaboration_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的行为。不过这有一个前提,那就是my_driver在他的agent中实例化的时候,要使用factory的方式实例化。