Jump to content

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?

Link to comment
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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...