Part 2 · Phases & Lifecycle · Intermediate

reset_phase & Phase Jump Hub

Hub — coordinated reset via reset_phase, phase.jump() for mid-simulation re-entry, soft-reset flows, integration patterns, and debug.

Overview

The reset_phase runtime sub-phase is the standard place for coordinated reset across all agents. phase.jump() rewinds the runtime schedule to an earlier phase — enabling soft-reset, recovery, and multi-reset scenarios without restarting the simulation.

Together they form the advanced reset story in UVM: first master the single-pass reset flow, then add jump only when the DUT requires mid-test re-initialization.

Sub-lessons in this topic

  1. reset-phase-behavior — coordinated idle, reset assert/deassert, objections.

  2. phase-jump-mechanism — jump API, schedule rewind, participation rules.

  3. mid-sim-reset-flow — soft-reset test scenario end to end.

  4. jump-vs-normal-reset — when jump helps vs when a new test is better.

  5. reset-integration-patterns — env/test templates for multi-reset.

  6. reset-jump-debug — hangs, corrupted state, and jump-safe checklists.

Reset and jump timeline

diagram
[PHASE][UVM] runtime reset sub-phases

pre_reset_phase   wait clocks/power-good
reset_phase       assert reset, drive idle, deassert
post_reset_phase  settle after reset release

phase.jump(uvm_reset_phase::get()):
  rewinds schedule  all components re-enter from reset_phase
systemverilog
task reset_phase(uvm_phase phase);
  phase.raise_objection(this, "applying reset");
  vif.rst_n <= 0;
  drive_idle();
  repeat (5) @(posedge vif.clk);
  vif.rst_n <= 1;
  @(posedge vif.clk);
  phase.drop_objection(this, "reset complete");
endtask

Key takeaways

  • reset_phase gives objection-gated, cross-agent coordinated reset.

  • phase.jump() re-enters an earlier runtime phase mid-simulation.

  • Make sequences jump-safe: idempotent setup, drain in-flight transactions.

  • Master single-pass reset before adding jump complexity.

Common pitfalls

  • Ad-hoc reset in run_phase instead of reset_phase — loses coordination.

  • Jumping with outstanding objections or in-flight transactions.

  • Non-idempotent configure sequences that break on second pass.


Prerequisites

Before using phase jump, confirm the basic 12-phase schedule works: reset_phase completes on all agents, configure_phase programs registers, main_phase runs traffic to completion. Jump builds on that foundation.

diagram
[PHASE][UVM] readiness gate

□ single-pass reset/configure/main passes
□ all agents use reset_phase (not run_phase reset)
□ objections balanced in every runtime phase
□ only then add jump for soft-reset tests