Order of run_phases execution

Do run phases across uvm component extended classes have any order of execution?
How do we control phases across uvcs?

In reply to nnarahari:

No, run_phase() does not have any particular order. run_phase() is used with forked approach, e.g.


fork
driver.run_phase();
monitor.run_phase();
test.run_phase();
//etc.
join_none
  • Here, run_phase of all components starts at the same time.
  • Control of run phase is done by objection mechanism, using phase.raise/drop_objection().
  • Run phase of all components end only when all raised objections are dropped.

In reply to nnarahari:

If you want to take control over the run_phase tasks of all UVM components you will run into trouble. There is no reason to take influence on the execution order of these tasks.