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()获得。UVM 还有另外一种写法:字符串。
1)与set_type_override_by_type 相对的是set_type_override,原型:
用parrot 替换bird,如下:
2)与set_inst_override_by_type相对的是 set_inst_override,原型:
用new_monitor 重载my_monitor 如下:
5.上述都是在uvm_component 的函数,但是在top_tb 的initial里,无法使用。UVM 提供另外4个函数来替换上述4个函数,原型是:
1)都位于uvm_factory中。
6.应用。系统存在一个uvm_factory 类型的全局变量factory。
1)可以在initial 里使用:
2)在component也可以直接调用factory 机制的重载函数:
其实uvm_component 的四个重载函数直接调用了factory 相应函数,上面截图可以看到。
7.还可以命令行。实例重载和类型重载分别:
<sim command> +uvm_set_inst_override=<req_type>,<override_type>,<full_inst_path>
<sim command> +uvm_set_type_override=<req_type>,<override_type>{,<replace>}
分别对应set_inst_override_by_name 和 set_type_override_by_name。
1)实例重载:
2)类型重载: