相位机制在UVM中是如何工作的



我正在努力理解UVM定相机制,尤其是在connect_phase((中。

UVM_INFO testbench.sv(14) @ 0: e2.c1.gc1 [connect] phase
UVM_INFO testbench.sv(14) @ 0: e2.c1.gc2 [connect] phase
UVM_INFO testbench.sv(39) @ 0: e2.c1 [connect] phase
UVM_INFO testbench.sv(14) @ 0: e2.c2.gc1 [connect] phase
UVM_INFO testbench.sv(14) @ 0: e2.c2.gc2 [connect] phase
UVM_INFO testbench.sv(39) @ 0: e2.c2 [connect] phase
UVM_INFO testbench.sv(62) @ 0: e2 [connect] phase

与构建阶段不同,在connect_phase中,连接阶段是自下而上执行的。有人说这不是build_phase((完成后的问题。但在每一次模拟中,我都能看到自下而上的方式。

我认为这样做有一些特殊或不可避免的原因,你能帮助我理解为什么除了构建和完成阶段之外,UVM中的连接阶段和其他阶段都是自下而上执行的吗?

从技术上讲,build_phase宽度优先排序。build_phase的顺序是由父级的build_phase创建其子级这一事实决定的,因此自然地,父级必须在子级的阶段之前执行其阶段。

您应该只关注阶段之间的排序,而不是同一期间的组件之间的排序。connect_phase只要求首先构建要连接的组件,而不关心连接的顺序。

您可能想阅读这篇关于阶段排序的讨论,并附上一个示例以了解更多详细信息。

最新更新