1.factory 的重载和之前的重载都不一样。
2.以8.1.1 为例,稍有不同:
结果:
1)传递的类型为bird,但都指向parrot 的指针。
3.factory机制的重载功能,原理:
1)例化时,UVM 会通过factory 机制在内部的表格中查看是否有相关的重载记录。
2)set_type_override_by_type相当于在factory 的机制中加入了一条记录。,当查到有重载是,会用新的代替旧的。
4.使用前提:
1)无论重载的类(parrot)还是被重载的类(bird),定义时都要注册到factory中。
2)被重载的类在例化时,使用factory 机制例化,而不能用new:
上述不会生效,得到结果和8.1.1一样。
3)重载类和被重载类有派生关系。重载类必须派生自被重载类,被重载类必须是重载类的父类。
4)components 和object 不能互相重载。因为关系太远。
5.如果没有派生关系:
错误提示:
6.重载与被重载顺序颠倒:
1)上图红色。
2)报错: