vmm 的callback调用的是基类,而不是扩展类。这样做的目的,就是不修改原程序结构的基础上来增加或者替换内容,大大的提高了重用性。修改的内容在扩展类中增添。
这种思想应该来源于SV中的虚方法,虚方法可以重写其所有基类中的方法,然普通的重写只能在本身及其扩展类中有效。这样就可以调用基类的时候,访问到扩展类中对基类中虚函数的重写。
由虚函数发展到虚类,虚类是一个定义抽象概念的类模板,不可以实例化,只能被扩展,在扩展类中必须对所有的虚函数再重写并具体化。
虚类
virtual class uart_manger_callbacks;
.....................
endclass
纯虚 加pure ok;
vmm的factory 只是一个概念问题,在testcase中来替换自己不想要的内容,而不更改曾经的环境。