# UVM:: new task basd phases:: excution order

**URL:** <https://verificationacademy.com/forums/t/uvm-new-task-basd-phases-excution-order/27769>\
**Category:** UVM\
**Tags:** UVM\
**Created:** [February 15, 2012, 8:09pm UTC](https://verificationacademy.com/forums/t/uvm-new-task-basd-phases-excution-order/27769 "2012-02-15T20:09:51Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![VE1](https://verificationacademy.com/forums/letter_avatar_proxy/v4/letter/v/54ee81/32.png) [@VE1](https://verificationacademy.com/forums/u/VE1)\
**Post date:** [February 15, 2012, 8:09pm UTC](https://verificationacademy.com/forums/t/uvm-new-task-basd-phases-excution-order/27769/1 "2012-02-15T20:09:51Z")

</div>

Hi.  
In the early version of UVM, The excution order is new(),build(),connect()…run()…  
and the RUN phase is bottom-up. In UVM1.1, there are some new task based phases are added : pre\_reset, reset, post-reset … pre\_main, main, post\_main …  
I would like to confirm :  
1. can i assume those new phases are some sub phases of run phase?  
2. excution order is: build, connect, end\_of\_elaboration, start\_of\_simulation, pre\_reset, reset, post\_reset, pre\_conf, conf, post\_conf, pre\_main, main, post\_main… ?  
3. in the component hierachy, the same phase are also excuted bottom-up.

I have tried to set\_config a enviroment variable in the body of a seq, and the seq is started from run\_phase in my uvm\_test. By putting get\_config in post\_main phase of my uvm\_env, it works :

UVM\_INFO /p/com/eda/synopsys/vcsmx/E-2011.03-SP1-2-B-1/etc/uvm-1.1/base/uvm\_resource\_db.svh(130) @ 0: reporter [CFGDB/SET] Configuration ‘\*.vari’ (type int) set by = (int) 3  
UVM\_INFO test.sv(24) @ 0: env\_ [env\_] i am env post\_main\_phase  
UVM\_INFO /p/com/eda/synopsys/vcsmx/E-2011.03-SP1-2-B-1/etc/uvm-1.1/base/uvm\_resource\_db.svh(130) @ 0: reporter [CFGDB/GET] Configuration ‘env\_.vari’ (type int) read by env\_ = (int) 3

but if changing post\_main\_phase() in my env to run\_phase(), it wont work. is it correct behavir?  
thanks  
andrew

---

<div class="post-metadata">

**Author:** ![mperyer](https://verificationacademy.com/forums/letter_avatar_proxy/v4/letter/m/5f8ce5/32.png) [@mperyer](https://verificationacademy.com/forums/u/mperyer)\
**Post date:** [February 15, 2012, 10:31pm UTC](https://verificationacademy.com/forums/t/uvm-new-task-basd-phases-excution-order/27769/2 "2012-02-15T22:31:15Z")

</div>

The new UVM run time phases (pre-reset, reset etc) execute in parallel to the run phase in order to provide compatability with the OVM. They are not sub-phases of the run phase.

The execution order you have listed looks correct.

You should now see why your set/get configs are not working. Provided the set occurs before the get, things should work, regardless of the phasing system. What you need to do is organise the execution flow so that set occurs before get.

See [http://verificationacademy.com/uvm-ovm/Phasing/Overview](http://verificationacademy.com/uvm-ovm/Phasing/Overview) for more details.
