Part 6 · Agents & Protocol IP · Intermediate

Monitor Debug Checklist: Symptom-First Triage

A deterministic monitor-debug workflow for no-sample, bad-decode, and broken publish scenarios.

Debug order

Debug in fixed boundary order: configuration, sampling gate, reconstruction, publish call, subscriber ingest.

diagram
[MON] triage matrix
no monitor traffic       -> vif/config/gating
monitor logs only        -> analysis wiring
wrong transaction fields -> reconstruction/clocking
intermittent corruption  -> race or mutation policy
systemverilog
task monitor_smoke(my_env env);
  run_minimal_sequence();
  if (env.agt.mon.publish_hits == 0)
    `uvm_fatal("MON_SMOKE", "monitor published no transactions")
  if (env.sb.ingest_hits == 0)
    `uvm_fatal("MON_SMOKE", "scoreboard ingested no transactions")
endtask

Key takeaways

  • Counters and stage logs make monitor bugs localizable.

  • Most failures are boundary failures, not random DUT behavior.

  • Smoke-level liveness checks should gate deeper regressions.

Common pitfalls

  • Skipping wiring checks and overfocusing on decode internals.

  • No drop/publish counters, making silent failures opaque.

  • Debugging many seeds before proving single-seed correctness.


Applied Patterns

This appendix consolidates reusable monitor patterns for enterprise-scale UVM environments where multiple teams share protocol VIP.

Use this as a quick implementation checklist before releasing monitor updates into regression branches.

diagram
[MON][UVM][AGT] reusable pattern grid

sampling:
  accepted-handshake gating only

reconstruction:
  key-based accumulator with completion predicate

publishing:
  clone policy + counter instrumentation

debug:
  boundary-first triage with deterministic smoke
systemverilog
function void monitor_health_report();
  `uvm_info("MON_HEALTH",
    $sformatf("sampled=%0d published=%0d dropped=%0d pending=%0d",
      sampled_cnt, published_cnt, dropped_cnt, pending_cnt),
    UVM_LOW)
endfunction
diagram
[MON] review checklist

- passive contract verified
- reset/flush policy documented
- publish ownership policy documented
- consumer fan-out validated
- counters visible in report_phase
  • Design monitor updates as API changes to downstream consumers, not local edits.

  • Keep monitor diagnostics always-on and low overhead for regression reliability.

  • Revalidate sample-to-publish boundary after every protocol extension.