Senior debug is a loop: triage the failure, shrink it to a minimal repro, hypothesize one cause, and run the cheapest experiment that falsifies it. Only the first error matters, the testbench is the prime suspect, and every fix leaves a regression behind.
Legend: [TRIAGE] [WAVE] [TB] [X/RACE]
THE DEBUG LOOP — every failure goes through this cycle
failure report
│
▼
┌─────────────────────┐
│ 1. TRIAGE [TRIAGE] │ first error only · classify signature
│ where to look? │ TB bug? RTL bug? spec ambiguity?
└─────────┬───────────┘
▼
┌─────────────────────┐
│ 2. REPRODUCE │ same seed · same build · minimal test
│ shrink the case │ shorter sim · fewer agents · one txn
└─────────┬───────────┘
▼
┌─────────────────────┐
│ 3. HYPOTHESIZE │ one suspect at a time
│ cheapest test? │ log? assertion? wave? code read?
└─────────┬───────────┘
▼
┌─────────────────────┐
│ 4. EXPERIMENT │ waves [WAVE] · TB instrumentation [TB]
│ falsify it │ X-trace [X/RACE] · directed re-run
└─────────┬───────────┘
▼
hypothesis survives? ──no──► back to 3 with new evidence
│ yes
▼
fix + add a regression test that would have caught itLesson | What it covers | Path |
|---|---|---|
First-error discipline, six signature classes, and the testbench versus RTL verdict. | Required | |
Backward tracing, first-divergence markers, sampler pitfalls, and a monitor case. | Required | |
Activity gates, loud failures, hang triage, and two testbench cases. | Recommended | |
First-X back-propagation, reset audits, race protocol, and a gate-level case. | Recommended |
Path: Required is the core first pass for this topic, Recommended is what most learners should read, and Optional is reference, specialist or revision material you can skip at first.
The first one. Everything after it ran in a corrupted state, so later errors are usually echoes of the original fault.