Hardware interview practice
How UVM Phase Objections Work
What is the primary effect of a component raising an objection on run_phase?
Answer choices
- A. It serializes every component's run_phase
- B. It forces all sequences to use that component as their parent
- C. It pauses simulation time until the objection is dropped
- D. It prevents that task phase from ending while the objection remains raised
Concise answer
The answer and the key reason
Deeper explanation
Work through the implementation and tradeoffs
UVM tracks objections as a distributed count associated with a phase. Raising one announces that meaningful phase work is still outstanding. When all participating tasks return, the phase cannot advance while the propagated objection total remains nonzero. A matching drop indicates that the owner’s protected work has finished.
An objection is therefore a lifetime-control mechanism, not a lock or delay statement. It neither freezes time nor forces other components to run serially. Tests commonly centralize the main objection policy around stimulus and checking completion, because scattered raises and forgotten drops can produce premature termination or a phase that never ends.
What to remember
- Keeps the phase alive
- Does not stop time
- Every raise needs a drop
Practice the complete prompt
