Jump to content
mehtad

phase jumping happens for all active phases separately even if they belong to same domain.

Recommended Posts

In our  testbench , we have added a new schedule which runs in parallel with uvm_main_phase. This schedule consists of four phase lets say phase a , b , c and d.

These phases are added into uvm domain(m_uvm_domain) itself.

  

So the flow looks as shown below:

 

pre_reset_phase

|

|

<Other run time phase >

|

|

Main_phase    |    phase_a

|                           |

|                           |

|                         phase_b

|                           |

|                           |

|                          phase_c

|                           |

|                           | 

|                          phase_d

|                         /

|                      /

|                   /

|                /      

|             /

|          /

|       /

|     /

|  /

|/

Post_main_phase

I want to issue a phase jump from phase_b to pre_reset_phase. So I use uvm_domain::jump. With this, I see that pre_reset_phase is entering twice while it should have entered only once.

Phase_b and uvm_main_phase share the same domain i.e m_uvm_domain. Even though there are two active phases in this domain , when a jump is requested jump should happen once. But currently it seems it happens for all the active phases. So we see pre_reset_phase entering twice. Is this expected behavior?

Share this post


Link to post
Share on other sites
Hi Mastrick,
 
Thanks for showing interest in this topic.
 
When I say pre-reset phase is entering twice, I mean that phase jumping happens twice to pre-reset phase. First time phase jump happens from uvm_main_phase and second time it happens from phase_b( which is a user defined phase). 
But ideally phase jump should have happened only once , as both these phases belong to same domain i.e uvm domain. Even though they are from separate schedules.
 
Below is my log snippet:
 
========================
 
Phase jump from main phase:
[38775.8ns] uvm_phase.svh(1314): reporter [PH_JUMP] phase main (schedule uvm_sched, domain uvm) is jumping to phase pre_reset
[38775.8ns] uvm_phase.svh(1321): reporter [PH_END] Phase 'uvm.uvm_sched.main' (id=284) JUMPING OUT OF PHASE
[38775.8ns] uvm_phase.svh(1124): reporter [PH/TRC/STRT] Phase 'uvm.uvm_sched.pre_reset' (id=200) Starting phase
[38775.8ns] uvm_phase.svh(1203): reporter [PH/TRC/SKIP] Phase 'uvm.uvm_sched.pre_reset' (id=200) No objections raised, skipping phase
 
Phase jump from phase_b
[38775.8ns] uvm_phase.svh(1314): reporter [PH_JUMP] phase phase_b (schedule pcie_main_schedule, domain uvm) is jumping to phase pre_reset
[38775.8ns] uvm_phase.svh(1321): reporter [PH_END] Phase 'uvm.pcie_main_schedule.phase_b' (id=479) JUMPING OUT OF PHASE
[38775.8ns] uvm_phase.svh(1124): reporter [PH/TRC/STRT] Phase 'uvm.uvm_sched.pre_reset' (id=200) Starting phase
38775.8ns] uvm_phase.svh(1203): reporter [PH/TRC/SKIP] Phase 'uvm.uvm_sched.pre_reset' (id=200) No objections raised, skipping phase
 

My requirement is to enter into pre-reset phase only once. If it enters twice, my pre-reset phase sequence gets started two times.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×