In reply to Sv-hustler:
Using main_phase and run_phase in the same UVM testbench together is a bad coding style and might cause problems.
In parallel to run_phase sub-phases are executed, starting with the pre_reset_phase and finishing with the post_shutdown_phase. run_phase starts with the pre_reset_phase and finishes with the post_shutdown_phase.
See the details here Phasing | Verification Academy