Part 6 · Agents & Protocol IP · Intermediate
Passive Sampling: Observe Without Side Effects
How monitors remain strictly passive while collecting high-fidelity samples across reset and unknown signal windows.
Passivity contract
Passivity means zero DUT signal driving and zero active control. The monitor only samples and emits observations.
[MON] legal actions
- sample pins
- decode protocol states
- publish analysis transactions
illegal:
- drive or force signals
- control sequencer/driver flowfunction bit can_sample();
if (!vif.rst_n) return 0;
if ((^{vif.addr, vif.valid, vif.ready}) === 1'bx) return 0;
return 1;
endfunctionGate sampling during reset and X/Z conditions.
Track drop reasons for auditability.
Keep passivity checkable in code review.
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.
[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 smokefunction 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[MON] review checklist
- passive contract verified
- reset/flush policy documented
- publish ownership policy documented
- consumer fan-out validated
- counters visible in report_phaseDesign 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.