Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Start Here4
  • UVM Foundations18
  • UVM Phases & Simulation Lifecycle94
  • Factory & Configuration37
  • Transaction-Level Modeling (TLM)42
    • TLM 1: Ports, Exports and Analysis
    • put/get/transport Hub: Flow-Controlled Point-to-Point TLM
      • Blocking put/get: Back-Pressure by Construction
      • Non-blocking put/get: try_* and can_* Flow Control
      • peek vs get: Observe Without Consume
      • transport(): Combined Request + Response
      • Sequencer-Driver TLM: seq_item_port / export Pull Pattern
      • Producer-Consumer Patterns: Decoupled TLM Pipelines
    • TLM 2.0 Sockets
    • Analysis Ports & Subscribers: Broadcast Observability in UVM
    • TLM FIFOs & Analysis FIFO Usage Hub
    • TLM Debugging Hub: Unconnected Ports, Type Mismatch, and Silent Drops
  • UVM Sequences & Stimulus44
  • UVM Agents & Protocol VIP71
  • Environment & Test Classes55
  • Checking & Coverage in UVM37
  • UVM Register Abstraction Layer (RAL)53
  • Advanced UVM in Practice44
  • Debug & Regression10
  • Coding Practice47
  • Senior Prep: Architecture, Leadership and Interviews92
  • Verification in Industry Practice10
Loading lesson

‹Transaction-Level Modeling (TLM)
  1. Topics
  2. UVM Verification
  3. Transaction-Level Modeling (TLM)
  4. put/get/transport Hub: Flow-Controlled Point-to-Point TLM

Part 4 · TLM & Analysis · Intermediate

put/get/transport Hub: Flow-Controlled Point-to-Point TLM

Hub - blocking and non-blocking put/get semantics, peek behavior, transport request-response coupling, sequencer-driver pull protocol, and producer-consumer decoupling patterns.

  • 6topics
  • 6lessons

Topics in this section

  1. 1Blocking put/get: Back-Pressure by Construction1 lesson
  2. 2Non-blocking put/get: try_* and can_* Flow Control1 lesson
  3. 3peek vs get: Observe Without Consume1 lesson
  4. 4transport(): Combined Request + Response1 lesson
  5. 5Sequencer-Driver TLM: seq_item_port / export Pull Pattern1 lesson
  6. 6Producer-Consumer Patterns: Decoupled TLM Pipelines1 lesson
On this page

    Overview

    UVM point-to-point TLM gives a flow-controlled way to move transactions between exactly one initiator and one target. It models readiness and back-pressure directly, unlike analysis write() broadcast channels that are intentionally non-blocking and one-to-many.

    This topic goes from basic method semantics to production integration: when to block, when to poll, when to inspect without consuming, when to use request-response transport, and how these ideas appear in sequencer-driver plumbing.

    Sub-lessons in this topic

    1. blocking-put-get - blocking_put and blocking_get semantics with natural back-pressure.

    2. nonblocking-put-get - try_put/try_get and can_put/can_get polling patterns.

    3. peek-vs-get - inspecting without consuming, then consuming deterministically.

    4. transport-combined - transport() as one-call request+response abstraction.

    5. sequencer-driver-tlm - seq_item_port/export pull handshake in drivers.

    6. producer-consumer-patterns - decoupled pipeline designs with FIFO-like staging.

    Method family map

    Diagram
    Legend: [UVM] [TLM]
    
    [TLM] point-to-point method families
    
    blocking:
      put(t)            // producer waits until target accepts
      get(t)            // consumer waits until data available
      peek(t)           // waits, but does not consume
      transport(req,rsp)// waits for response
    
    non-blocking:
      try_put(t) -> bit
      can_put() -> bit
      try_get(t) -> bit
      can_get() -> bit
      try_peek(t) -> bit
      can_peek() -> bit
    Diagram
    [UVM][TLM] where this fits
    
    monitor -> analysis_port.write() -> scoreboard/coverage   (broadcast, no flow control)
    producer -> put/get/peek/transport target                 (point-to-point, flow controlled)
    driver <-> sequencer seq_item_port/export                 (specialized pull TLM pattern)
    
    choose based on communication contract:
      "deliver to many listeners quickly"       -> analysis
      "coordinate one producer and one target"  -> put/get/transport

    Key takeaways

    • Point-to-point TLM models readiness and back-pressure explicitly.

    • Blocking methods consume simulation time while waiting; non-blocking methods return immediately.

    • peek() inspects without consume; get() consumes.

    • transport(req,rsp) bundles request and response in one abstraction.

    Common pitfalls

    • Using analysis write() where request-response semantics are required.

    • Ignoring return values of non-blocking methods and silently dropping work.

    • Treating peek() as consume and creating duplicate processing bugs.

    PreviousNext: TLM 2.0 Sockets

    Up next

    Up nextTLM 2.0 Sockets

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • TLM 1: Ports, Exports and Analysis
    • Analysis Ports & Subscribers: Broadcast Observability in UVM
    • TLM FIFOs & Analysis FIFO Usage Hub