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

  1. unconnected-port-detection - detect and prove broken links with UVM_WARNING patterns and print_connections.

  2. type-mismatch-casts - debug parameterized TLM type mismatches and $cast failures in adapters/subscribers.

  3. silent-drop-scenarios - analysis-port writes that succeed but no subscriber consumes the transaction.

  4. tlm-connection-audit - connect_phase checklist and audit utilities before run starts.

  5. debug-macros-tools - uvm_tlm_if usage, report IDs, and verbosity controls for TLM tracing.

  6. triage-playbook - deterministic, step-by-step workflow for missing transaction root cause.

Failure taxonomy map

diagram
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
diagram
[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 transaction

Key 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.