A red test tells you that something is wrong, never what. Senior engineers are fast at debug not because they guess better, but because they classify the failure in the first minute and then follow a playbook for that class: a hang is chased differently from a mismatch, and a green run that checked nothing needs a different kind of suspicion altogether. This topic gives you the instruments UVM already ships and one playbook per failure class, each built on a deliberately broken version of the course's DMA bench, with the real log it prints.
Pick the right UVM instrument for a symptom (topology, factory, config, objections, phases, verbosity, recording) and switch it on from the command line or from code.
End a hung test quickly, find who holds the run phase open, and walk the usual suspects in order.
Classify a scoreboard mismatch with the XOR of expected and actual, shrink it to a minimal reproduction, and decide between a DUT bug, a model bug and a timing bug.
Prove that a passing test really checked something, and build the defences that make false passes impossible to miss.
Tell a test that ended early from one that passed fast, and fix the end of test properly.
# | Lesson | The question it answers |
|---|---|---|
1 | Which built-in instrument answers which question, and which of them still run when plusargs do not? | |
2 | The test never ends. Who is waiting for what? | |
3 | Expected one value, got another. Whose bug is it? | |
4 | The verdict says PASS. How do you know it checked anything? | |
5 | The test finished in 155 ns. Did it pass fast, or end early? |