How uvm_phases work?

In reply to debashis_paul:
It is possible to add user-defined phases that need may be synchronized to an existing phase, and used in multiple domains. The umm_phase argument is a handle to the actual phase after coordination among all the other domains. But even if you do not use any user-defined phases, you can thing of the phase argument as a singleton that represents the current phase state (or the this state)that is shared by all the other umm_components.