UVM Phase customization

I got a requirement, where I need to execute sequences on different intervals in run phase. (Example: Reset sequence, configuration sequence, link training sequence)

run_phase ----> Reset phase ----> sequence 1
----> Config phase ----> sequence 2
----> LTSSM phase ----> sequence 3

Going through UVM papers got to know that it can be implemented through UVM phase scheduler and custom phasing.

I am very new to this, it will be great if someone point me to papers on UVM phase customization and some example code for reference.

Thanks in Advance.

In reply to deepak_infy:

It looks like you are mixing two different things, reset_phase and reset_sequence.If you have a reset_sequence and a configuration_sequence you can run them in the run_phase in a serial order:
In run_phase you are executing:
(1) reset_sequence
sequence1
(2) configuration_sequence
sequence2
(3) link training sequence
sequence3

In this case you do not need the reset_phase and the configuration_phase.

In reply to deepak_infy:

Hi Deepak,

In UVM run time phase is divided into multiple internal phases reset, configure, main, shutdown.

Seems like your intention is to call each sequence in the corresponding phase. To know more about those phases, refer this verificationacademy link

But as chr_sue mentioned, you could rather use run_phase by calling the reset, configure, ltssm sequences sequentially. Both will essentially be the same as reset, configure, main, shutdown will run sequentially but in parallel to the run() phase (to be backward compatible with OVM).

Note that the Accellera committee has identified that this phasing mechanism may be changed in future releases, so better to avoid using the internal phases of run() unless required; like in the case of reset-testing (where internal run phase jumping is required). It is outlined in this SNUG paper.

Thanks,

Thanks chr_sue & Rajkumar for your valuable inputs.

Regards,
Deepak