The common phases are the set of function and task phases that all uvm_components execute together. All uvm_components are always synchronized with respect to the common phases.
The common phases are executed in the sequence they are specified below.
UVM Common Phases | The common phases are the set of function and task phases that all uvm_components execute together. |
uvm_build_phase | Create and configure of testbench structure |
uvm_connect_phase | Establish cross-component connections. |
uvm_end_of_elaboration_phase | Fine-tune the testbench. |
uvm_start_of_simulation_phase | Get ready for DUT to be simulated. |
uvm_run_phase | Stimulate the DUT. |
uvm_extract_phase | Extract data from different points of the verficiation environment. |
uvm_check_phase | Check for any unexpected conditions in the verification environment. |
uvm_report_phase | Report results of the test. |
uvm_final_phase | Tie up loose ends. |
Create and configure of testbench structure
uvm_topdown_phase that calls the uvm_component::build_phase method.
uvm_build_phase | ||||||
Create and configure of testbench structure | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Establish cross-component connections.
uvm_bottomup_phase that calls the uvm_component::connect_phase method.
uvm_connect_phase | ||||||
Establish cross-component connections. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Fine-tune the testbench.
uvm_bottomup_phase that calls the uvm_component::end_of_elaboration_phase method.
uvm_end_of_elaboration_phase | ||||||
Fine-tune the testbench. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Get ready for DUT to be simulated.
uvm_bottomup_phase that calls the uvm_component::start_of_simulation_phase method.
uvm_start_of_simulation_phase | ||||||
Get ready for DUT to be simulated. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Stimulate the DUT.
This uvm_task_phase calls the uvm_component::run_phase virtual method. This phase runs in parallel to the runtime phases, uvm_pre_reset_phase through uvm_post_shutdown_phase. All components in the testbench are synchronized with respect to the run phase regardles of the phase domain they belong to.
The run phase terminates in one of two ways.
When all objections on the run_phase objection have been dropped, the phase ends and all of its threads are killed. If no component raises a run_phase objection immediately upon entering the phase, the phase ends immediately.
The phase ends if the timeout expires before all objections are dropped. By default, the timeout is set to 9200 seconds. You may override this via uvm_root::set_timeout.
If a timeout occurs in your simulation, or if simulation never ends despite completion of your test stimulus, then it usually indicates that a component continues to object to the end of a phase.
uvm_run_phase | ||||||
Stimulate the DUT. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Extract data from different points of the verficiation environment.
uvm_bottomup_phase that calls the uvm_component::extract_phase method.
uvm_extract_phase | ||||||
Extract data from different points of the verficiation environment. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Check for any unexpected conditions in the verification environment.
uvm_bottomup_phase that calls the uvm_component::check_phase method.
uvm_check_phase | ||||||
Check for any unexpected conditions in the verification environment. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Report results of the test.
uvm_bottomup_phase that calls the uvm_component::report_phase method.
uvm_report_phase | ||||||
Report results of the test. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
Tie up loose ends.
uvm_topdown_phase that calls the uvm_component::final_phase method.
uvm_final_phase | ||||||
Tie up loose ends. | ||||||
Class Hierarchy | ||||||
| ||||||
Class Declaration | ||||||
|
The uvm_component class is the root base class for UVM components.
virtual class uvm_component extends uvm_report_object
Create and configure of testbench structure
class uvm_build_phase extends uvm_topdown_phase
Establish cross-component connections.
class uvm_connect_phase extends uvm_bottomup_phase
Fine-tune the testbench.
class uvm_end_of_elaboration_phase extends uvm_bottomup_phase
Get ready for DUT to be simulated.
class uvm_start_of_simulation_phase extends uvm_bottomup_phase
Stimulate the DUT.
class uvm_run_phase extends uvm_task_phase
Extract data from different points of the verficiation environment.
class uvm_extract_phase extends uvm_bottomup_phase
Check for any unexpected conditions in the verification environment.
class uvm_check_phase extends uvm_bottomup_phase
Report results of the test.
class uvm_report_phase extends uvm_bottomup_phase
Tie up loose ends.
class uvm_final_phase extends uvm_topdown_phase
The uvm_object class is the base class for all UVM data and hierarchical classes.
virtual class uvm_object extends uvm_void
This base class defines everything about a phase: behavior, state, and context.
class uvm_phase extends uvm_object
Virtual base class for function phases that operate top-down.
virtual class uvm_topdown_phase extends uvm_phase
The uvm_build_phase phase implementation method.
virtual function void build_phase( uvm_phase phase )
Virtual base class for function phases that operate bottom-up.
virtual class uvm_bottomup_phase extends uvm_phase
The uvm_connect_phase phase implementation method.
virtual function void connect_phase( uvm_phase phase )
The uvm_end_of_elaboration_phase phase implementation method.
virtual function void end_of_elaboration_phase( uvm_phase phase )
The uvm_start_of_simulation_phase phase implementation method.
virtual function void start_of_simulation_phase( uvm_phase phase )
Base class for all task phases.
virtual class uvm_task_phase extends uvm_phase
The uvm_run_phase phase implementation method.
virtual task run_phase( uvm_phase phase )
Before reset is asserted.
class uvm_pre_reset_phase extends uvm_task_phase
After things have settled down.
class uvm_post_shutdown_phase extends uvm_task_phase
Specifies the timeout for the simulation.
function void set_timeout( time timeout, bit overridable = 1 )
The uvm_extract_phase phase implementation method.
virtual function void extract_phase( uvm_phase phase )
The uvm_check_phase phase implementation method.
virtual function void check_phase( uvm_phase phase )
The uvm_report_phase phase implementation method.
virtual function void report_phase( uvm_phase phase )
The uvm_final_phase phase implementation method.
virtual function void final_phase( uvm_phase phase )