After asking the question on the UVM forum, I've found out that there are multiple instances of uvm_phase
for each phase that get created, one being used for scheduling and the other being used as the actual implementation.
Calling uvm_run_phase::get()
will return the implementation node for the run phase, whereas the argument being past to run_phase(...)
is the scheduling node. To get the scheduling node from any other phase, one can use phase.find_by_name("run",0)
.
Here is the link to the original thread in the UVM forum: http://forums.accellera.org/topic/1769-uvm-phase-singletons/