🔍 Introduction#
In the Universal Verification Methodology (UVM), the execution of a testbench is organized into well-defined phases. Each phase represents a specific part of the testbench lifecycle, from initial construction to simulation and eventual cleanup. Understanding these phases is key to writing modular and reusable verification environments.
🚦 UVM Phase Overview#
🚀 Phase Execution Order#
UVM phases are executed in order, with the framework ensuring proper sequencing. This means you should always perform construction tasks in the build phase, connections in the connect phase, and time-consuming test stimulus in the run phase.
💡 Tip: UVM allows you to override phase methods in your classes by implementing:
function void build_phase(uvm_phase phase); function void connect_phase(uvm_phase phase); task run_phase(uvm_phase phase);
Each of these methods can be customized for your verification needs.
🧩 Phase Jumping and Phase Control#
- UVM supports phase jumping (e.g., skipping some phases or jumping to a later phase).
- The
uvm_phase
object allows querying phase status and controlling phase execution (e.g.,phase.raise_objection(this);
).
📌 Conclusion#
UVM Phases provide a structured way to build, connect, and simulate a testbench, ensuring that each stage has a clearly defined purpose. Mastering these phases is essential for effective UVM testbench development.