Part 7 · Environment & Tests · Intermediate
Analysis Port Fan-In: Merging Streams into Checkers
Designing fan-in from multiple monitor analysis ports into deterministic checker ingress paths.
Fan-in architecture
Fan-in joins several observed streams into one checking domain. Keep stream identity metadata so comparisons remain explainable.
[ENV][UVM][CHECK] fan-in architecture
ctrl_mon.ap --> sb.ctrl_imp
req_mon.ap --> sb.req_imp
rsp_mon.ap --> sb.rsp_imp
err_mon.ap --> sb.err_imp
sb ingress stage:
stamp source_id
stamp observed_time
enqueue by streamfunction void write_req(req_txn t);
req_txn c = t.clone();
c.source_id = "req_mon";
req_q.push_back(c);
req_hits++;
endfunctionUse one write_* method per stream for debuggable ingestion.
Attach source metadata immediately on ingress.
Avoid flattening streams too early in the pipeline.
Key takeaways
Structured fan-in preserves context needed for high-quality diagnostics.
Separate ingress queues simplify latency and ordering analysis.
Common pitfalls
Using one generic queue and losing stream provenance.
Mutating ingress objects after queue insertion.
Applied Patterns
Track per-stream counters and backlog depth to detect fan-in imbalances before compare quality degrades.
[CHECK] fan-in telemetry
stream counters:
ctrl_hits
req_hits
rsp_hits
err_hits
queue depth alarms:
req_q depth > threshold
rsp_q depth > threshold
action:
print stream lag diagnostics
gate regression on sustained lagfunction void check_backlog();
if (req_q.size() > max_q_depth)
`uvm_warning("FANIN", $sformatf("req_q depth=%0d", req_q.size()))
if (rsp_q.size() > max_q_depth)
`uvm_warning("FANIN", $sformatf("rsp_q depth=%0d", rsp_q.size()))
endfunctionQueue depth telemetry exposes correlation bottlenecks early.
Per-stream alarms are more useful than one aggregate metric.
Lag diagnostics should include source identifiers.
Integration Drilldown
Stress one stream while idling others to validate fan-in resilience and alert thresholds.
[CHECK] burst imbalance test
phase 1: req burst only
phase 2: rsp catch-up
phase 3: steady dual stream
verify:
no dropped samples
lag alarms only when threshold crossedKey takeaways
Imbalance tests validate fan-in behavior under realistic burst patterns.
Common pitfalls
Calibrating thresholds only on uniform synthetic traffic.