在UVM中,每个uvm_object
都有一组钩子,它可以选择在模拟时间内定义(或不定义)在定义点(阶段)的行为。大多数类需要实现或继承最常见阶段的方法,例如build_phase()
,connect_phase()
和run_phase()
。不太常见的是,课程需要定义一种更具针对性的方法,例如end_of_elaboration_phase()
或start_of_simulation_phase()
。
但实际上,必须针对所有对象调用所有阶段。在下一阶段开始之前,所有对象都会看到对第一阶段的调用。在Pythonesque伪代码中,UVM基础设施正在做的是:
for phase in allPhases:
for obj in allObjects:
obj.phase()
这意味着当未使用该特定自定义点时,每个对象的基类必须包含null方法。
这种结构对我来说就像是一种设计模式。它有名字吗?
我认为关键功能是:
修改
所以我的问题是,如果这种设计模式也被用于其他地方,那么你称之为这种设计模式是什么?