Part 4 · TLM & Analysis · Intermediate
TLM Debugging Hub: Unconnected Ports, Type Mismatch, and Silent Drops
Hub - practical debug workflow for missing transactions: topology checks, type compatibility, analysis-port silent-drop detection, and triage discipline.
Overview
Most TLM failures are wiring and type issues , not algorithm bugs. A transaction often disappears because a port is unconnected, a parameterized type does not match, or an analysis broadcast has zero subscribers.
This hub organizes a repeatable debugging method: verify connectivity first, validate type compatibility second, then inspect runtime flow and report configuration.
Sub-lessons in this topic
unconnected-port-detection - detect and prove broken links with UVM_WARNING patterns and print_connections.
type-mismatch-casts - debug parameterized TLM type mismatches and $cast failures in adapters/subscribers.
silent-drop-scenarios - analysis-port writes that succeed but no subscriber consumes the transaction.
tlm-connection-audit - connect_phase checklist and audit utilities before run starts.
debug-macros-tools - uvm_tlm_if usage, report IDs, and verbosity controls for TLM tracing.
triage-playbook - deterministic, step-by-step workflow for missing transaction root cause.
Failure taxonomy map
Legend: [UVM] [TLM] [MON] [SB]
[UVM][TLM] missing-transaction classification
symptom: expected item absent at scoreboard
│
┌─────────────────┼───────────────────┐
▼ ▼ ▼
[TLM] topology [TLM] type [UVM] runtime
issue issue issue
│ │ │
│ │ ├─ sequence never generated item
├─ unconnected ├─ parameter mismatch
│ port/export │ between endpoints
├─ wrong connect ├─ $cast fails inside
│ direction │ subscriber/adapter
└─ late connect └─ clone/copy drops fields
analysis specific:
write() on unconnected analysis_port -> no error by default -> silent drop[UVM][TLM] recommended debug sequence
1) structural: print topology + print_connections
2) endpoint contracts: verify parameterized types
3) runtime trace: source publish, sink receive
4) escalation: increase UVM_VERBOSITY and focused IDs
5) isolate with single deterministic transactionKey takeaways
TLM debug starts with structure before behavior.
Unconnected analysis paths are common and often silent.
Type compatibility must be explicit for parameterized ports/imps.
A deterministic triage sequence prevents random guessing.
Common pitfalls
Jumping directly to DUT waveforms before verifying TLM topology.
Assuming analysis_port.write() guarantees a subscriber consumed data.
Ignoring $cast return values in generic subscribers and adapters.
Running full regressions before reproducing with one controlled transaction.