Another one which has just run_phase() [no splitting of run_phase further]
Question:- Does UVM consider run_phase as “main_phase” by default?, i.e. does UVM guarantee that reset_phase happens first (wherever it is defined), and then only moves to run_phase (implemented in parallel somewhere else).
No. The run_phase() is not considered the same as the main_phase().
Refer to this chapter in the UVM Cookbook which shows how phasing is executed. Originally, there was only the run_phase(). An additional phase sequence including as the configure_phase(), main_phase(), etc. were all added in parallel. The result is that the run_phase() will be executing at the same time as the other phases.
The result is that if you mix VIPs where one uses only the run_phase(), and others use the configure_phase(), main_phase(), etc., you will have compatibility issues.
It is due to these compatibility issues that we recommend that you only use the run_phase() and utilize individual sequences to do the reset, configuration, stimulus, etc.