1、 override的几种方法
set_type_override_by_type(orig_type::get_type(), new_type::get_type());
//把TB中的orig_type都替换为new_type
set_inst_override_by_type("relative_path", orig_type::get_type(), new_type::get_type());
//只有绝对路径下的orig_type替换为new_type
不使用xxx::get_type()的情况下还有一种写法:
set_type_overrid("orig_type", "new_type");
//把TB中的orig_type都替换为new_type
set_inst_override("relative_path", "orig_type", "new_type");
//只有绝对路径下的orig_type替换为new_type
此外还可以通过type_id的方式将orig_type override为new_type,具体代码如下:
orig_type::type_id::set_type_override(new_type::get_type());
//把TB中的orig_type都替换为new_type
orig_type::type_id::set_inst_override(new_type::get_type(), "full_path");
//只有绝对路径下的orig_type替换为new_type
2、 override的必要条件
使用上述代码将orig_type重载为new_type必须满足一下几个条件:
a、orig_type和new_type都必须注册到factory机制中
b、override后必须使用factoty机制的例化方式
c、new_type必须是orig_type的子类
initial begin
orig_type orig_1, orig_2;
orig_type::type_id::set_tpye_override(new_type::get_type());
orig_1 = new ("orig_1");//orig_1 的类型为orig_type
orig_2 = orig_type::type_id::create("orig_2", null);//orig_2 的类型为new_type
end
3、在top中的使用方式
factory.set_type_override_by_type(orig_type::get_type(), new_type::get_type());
factory.set_type_override_by_name("orig_type", "new_type");
orig_type::type_id::set_type_override(new_type::get_type());
版权声明:本文为weixin_45946815原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。