systemverilog中类的存在为实现callback奠定了技术。
或者说virtual的存在是callback的基础,类的方法的override就是基于task或者function的virtual特性。
callback的原理实现:
1. 需要创建一个base_cb的虚基类,次类包括了virtual的task或者function.
2.在用到回调的类中,以base_cb声明一个handle(一定不要实例化),在使用回调类的方法中的合适的地方调用base_cb的方法。
3.在test中,扩张base_cb,并在扩展类中对base_cb的virtual的方法进行实现,实现内容为想要在调用回调类中完成的任务目标;此后将扩展类进行实例化。
4.在test中,实例化的扩展类赋值给使用回调类的base_cb的句柄。
在UVM方法学中也有callback其本质上就是上面的含义,在宏和类的扩展中隐藏了一些细节。