The cook book tells following and in another thread, the moderator also suggested against using the sub phases of run.
However in one of my projects, I do find the need for using them (and infact we had an internal implemention of something similar in our previous OVM version).
Are there any thing happening on this front? Is there a risk in using the sub phases if some of that changes in a future version?
"The Accellera UVM committee is still developing the use models and APIs for new UVM phasing as it relates to sequences and transactors. In the mean time, our recommendation is to wait until that work is done and the API is stable. There are a number of future articles in this section which will be available here at that time, and which will describe our recommendations for using this technology. These include:
How to make your testbench phase aware [Not yet available]
How to manage sequences in the context of phasing [Not yet available]
How to design reusable transactors that work in the context of phasing [Not yet available] "
The biggest argument against using run time phases has to do with compatibility of UVCs across the UVM ecosystem. Since different developers envision different uses for each phase, when you bring together these different components, the result is an incompatible environment which can be difficult to debug.
If you code strictly to the run_phase and use sequences do manage phasing, you increase the universal compatibility of your components and environment.
In the Cookbook UVM Guidelines page, the list of Do’s contains:
“Use the reset/configure/main/shutdown phases in tests”
but this is contradicted by 5.2 Guideline:
“Avoid the usage of reset_phase(), configure_phase(), main_phase(), shutdown_phase() and the pre_/post_ versions of those phases.”
Is it really true that “The reset_phase(), configure_phase(), main_phase() or shutdown_phase() phases will be removed in a future version of UVM.” as stated under guidline 5.2?
In my understanding the run-time phasing is still under construction and not part of the UVM standard.
What cgales is pointing out is another very important topic. If you use the run-time phasing when developing a VIP you are forcing the buyer of your VIP also to use this.