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 Foundations14
  • UVM Phases & Simulation Lifecycle26
  • Factory & Configuration15
  • Transaction-Level Modeling (TLM)13
    • TLM 1: Ports, Exports and Analysis
    • TLM 2.0 Sockets
  • UVM Sequences & Stimulus21
  • UVM Agents & Protocol VIP21
  • Environment & Test Classes11
  • Checking & Coverage in UVM21
  • UVM Register Abstraction Layer (RAL)22
  • Advanced UVM in Practice13
  • Debug & Regression10
  • Coding Practice47
  • Verification in Industry Practice10
  • Senior Prep: Architecture, Leadership and Interviews32
Loading lesson

‹UVM Verification
  1. Topics
  2. UVM Verification
  3. Transaction-Level Modeling (TLM)

Part 4 · TLM & Analysis · Intermediate

Transaction-Level Modeling (TLM)

How UVM components exchange transactions: TLM 1 ports, exports and imps, analysis broadcast, FIFOs and channels, and TLM 2.0 sockets with the generic payload, taught on the DMA bench.

  • 2topics
  • 13lessons
On this page

    Components in a UVM bench never call each other directly. The DMA bench's monitors do not know the scoreboard exists; its drivers do not hold a handle to a sequencer. Every one of those links goes through a TLM connection, joined in connect_phase and checked by the library before time zero. Get TLM right and components become swappable parts. Get it wrong and you meet the two failure modes this part keeps returning to: a run that dies at time zero with a Connection Error, and the worse one, a link that is legal, silent and delivers nothing.

    What you will be able to do

    • Wire any link in a bench, in the right direction, and explain each port, export and imp by who calls and who implements.

    • State exactly what an analysis write() promises: zero time, fan-out and fan-in, and a subscriber order you must not rely on.

    • Predict which unconnected connectors fail elaboration, and use the library's FIFOs and channels.

    • Choose between imp_decl callbacks and analysis FIFOs for a scoreboard, and triage a transaction that went missing.

    • Drive a TLM 2.0 model through sockets: blocking and non-blocking transport, timing annotation, response status and extensions.

    How the two topics fit

    Two groups: TLM 1 lessons from roles and connect rules through analysis, put/get, FIFOs and triage; then TLM 2.0 lessons on sockets, the generic payload, and transport styles.
    TLM 1 is the everyday plumbing of every UVM bench. TLM 2.0 is what you meet when the bench talks to a SystemC or virtual-platform model. Read TLM 1 first.

    The two topics

    Topic

    Lessons

    What it covers

    TLM 1: Ports, Exports and Analysis

    7

    Roles, connect rules and pass-through, put/get/peek/transport, analysis broadcast and imp_decl, channels and port cardinality, imp_decl versus analysis FIFOs, connection triage and FIFO sizing.

    TLM 2.0 Sockets

    5

    Initiator, target and passthrough sockets, blocking transport and uvm_tlm_time, non-blocking phases, temporal decoupling, and the generic payload with status codes and extensions.

    Four rules have their single home in this part, and other lessons link here for them: the connect direction rules in connect() rules and pass-through; the subscriber order and fan-out rules in Analysis broadcast; and the unconnected-port rule in TLM1 channels and port cardinality.

    Run the lessons' tests yourself

    Every log in this part comes from tlm_tb.sv in the course bench. It includes dma_tb.sv and adds the TLM tests: tlm_deaf_test, tlm_fifo_test, tlm_channel_test, tlm_cardinality_test and tlm_export_port_test for TLM-1, dma_fifo_sb_test, dma_fifo_slow_test and dma_fifo_drain_test for the FIFO scoreboard, and tlm2_gp_test for TLM 2.0; the full source lists them with what each shows. On EDA Playground, paste dma_dut.sv as the design, add dma_tb.sv (all three parts of the bench source) and tlm_tb.sv as testbench files, compile tlm_tb.sv, and pick a test with +UVM_TESTNAME=. Locally: scripts/tools/uvm-bench/run.sh scripts/data/uvm-course/bench/tlm_tb.sv +UVM_TESTNAME=tlm2_gp_test.

    Tip

    A mistyped connection fails to compile, a wrongly directed one is refused at connect(), and an unconnected put, get or transport port stops the run at the end of elaboration. Only an analysis port may stay unconnected, and then its writes reach nobody, so every checker should fail a test in which it compared nothing.

    Interview

    Typical questions from this part: port versus export versus imp; which way a port-to-port connect goes; what happens to an unconnected port; the order in which subscribers receive write(); how one scoreboard takes three streams; imp_decl versus analysis FIFOs; the default depth of uvm_tlm_fifo; early completion in nb_transport; and how to carry sideband in a generic payload.

    Related topics

    • Up: UVM course hub

    • Previous: Factory & Configuration

    • Next: UVM Sequences & Stimulus

    PreviousNext: TLM 1: Ports, Exports and Analysis

    Up next

    Up nextTLM 1: Ports, Exports and Analysis

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Start Here
    • UVM Foundations
    • UVM Phases & Simulation Lifecycle