敲代码过程中,发现自己不是很理解这个参数列表,部分人建议直接记住就好.但是其实《UVM实战卷I》有过相关讲解(在5.2.2参数phase的必要性,需要结合5.2.1来看).但是当时看完之后没感觉,也觉得不难理解,但是事实证明还是忘了.坑就是这样必须自己踩,才会学到东西.
回归主题,《UVM实战卷I》作者通过5.2.1铺垫objection机制,引出phase这个句柄的必要性,即你要用objection,就要phase.raise/drop_objection,所以没这个句柄phase不行.一个很简单直接的解释说明.
但是如果深层次再理解一下呢?其实张强在5.2.1那个植物杀僵尸的例子可以再好好看看.UVM中有众多uvm_component,每个component中都有诸多phase,从第一个phase开始,每个component都在该phase中运行,直到每个component都运行完该phase,才会走向下一个phase(这句话大意和张强那栋植物僵尸楼一样).这便是phase机制在诸多component中的意义所在,因此想使用phase机制,就要传递uvm_phase的句柄phase(希望有机会从源代码理解一下).