Phases: end_of_elobration

I referred couple of documents; cookbook, uvm 1.2 user guide, to know why end_of_elobration is required.

However, i could not find answers for ‘why it is required’ and more specifically ‘Is it really required?’

Please feel free to give your inputs

In reply to prashant.kaushik:

As far as I know, end_of_elaboration phase is not mandatory. In that case, all code can be put in single phase. But its just to have abstraction. end_of_elaboration phase is mainly to ensure that your connections are made proper and hierarchial paths are correct after connect_phase.

In reply to Anudeep J:

The end_of_elaboration_phase follows after the connect_phase. There is the whole dynamic testbench environment created and connected. In the end_of_elaboration_phase the environment is checked. The user can use this phase to make certain settings or extract information which require the existence of the dynamic part of the testbench completed. Personally I use this phase to print the topology of my class-based environment and to assign the reporting verbosity.

In reply to Anudeep J:

All phases in the UVM are mandatory, i.e. the simulator goes through all phases and you cannot cut-out some of them. But you do not have to implement all phases. Nore, there are additional phases like the start_of_simulation_phase which follows on the end_of _elaboration_phase.
The UVM phasing is a good means to provide a high flexibilty for your testbench construction, execution and reporting.