You are on page 1of 2

UVM component versus UVM object :

uvm_component:

Quasi Static Entity (after build phase it is available throughout the simulation)
Always tied to a given hardware(DUT Interface) Or a TLM port
Having phasing mechanism for control the behavior of simulation
Configuration Component Topology

uvm_object:

Dynamic Entity (create when needed, transfer from one component to other & then
dereference)
Not tied to a given hardware or any TLM port
Not phasing mechanism

UVM Phases Mechanism :


All testbench components are derived from “uvm_component” and are aware of the
“phase” concept. Each component goes through a pre-defined set of phases, and it cannot
proceed to the next phase until all components finish their execution in the current phase.
So UVM phases act as a “synchronizing mechanism” in the life cycle of a simulation.

Phases are represented by callback methods, A set of predefined phases and corresponding


callbacks are provided in uvm_component. The Method can be either a function or task.

Any class deriving from uvm_component may implement any or all of these callbacks, which
are executed in a particular order.

The Phases in UVM are grouped as :

 Build Phases : Where the Testbench is constructed, connected and c


 onfigured.
 Run-time Phases : Stimulus generation & time consuming simulation takes place
here.
 Clean up Phases : Here the Test results are collected and reported.

Dynamic Array Vs Associative Array :

Dynamic
Associative Array

What is the objection?

The objection mechanism in UVM is to allow hierarchical status communication among


components which is helpful in deciding the end of the test.

There is a built-in objection for each in-built phase, which provides a way for components
and objects to synchronize their testing activity and indicate when it is safe to end the phase
and, ultimately, the test end.

The component or sequence will raise a phase objection at the beginning of an activity that
must be completed before the phase stops, so the objection will be dropped at the end of
that activity. Once all of the raised objections are dropped, the phase terminates.

Raising an objection: phase.raise_objection(this);


Dropping an objection: phase.drop_objection(this);

Difference between module & class based TB?

1- A module is a static object present always during of the simulation.


2- A Class is a dynamic object because they can come and go during the life time of
simulation

You might also like