Parallel Execution of run_phase / main_phase

Hi,

Let’s say I have 2 parallel objects running:-

  1. One which has reset_phase, main_phase etc.
  2. 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).

Thanks!

In reply to SV_baby:

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.