UVM Phase jumping: Discrepancy in forward jumps

In reply to chr_sue:

Pardon for the confusion. I have updated the code in my question. Refer to the comments in build and run phase of test. Uncommented the code as required.


        // ***** in build phase
       // Uncomment this to see that domain1 and domain2 are running independently
      // uvm_config_db#(int)::set(this, "m_env1", "delay", 10);
 
      // Uncomment this to see that domain1 also jumps when domain2 jumps to final phase
      uvm_config_db#(int)::set(this, "m_env1", "delay", 100);
 
      uvm_config_db#(int)::set(this, "m_env2", "delay", 100);


       // ***** in run phase;
      // Both domain1 and domain2 jumps to extract phase unexpectedly.
      // Uncomment this for domain2 to jump to extract phase
      domain2.jump(uvm_extract_phase::get());
      
      // Both domain1 and domain2 jumps to repective phases other than extract phase. I would expect only domain2 to jump and wait and domain1 to continue phase execution.
      // domain2 should wait till domain1 completes other phases
      // Uncomment this for domain2 to jump to final phase      
      //domain2.jump(uvm_final_phase::get());

I have tried with all simulators at EDAPlayground and got the same results. I believe that this should be independent of simulator.