Skip to main content

What is Transaction-Level Modeling (TLM) in UVM?

· loading · loading · ·
Kerim Turak
Education UVM Verification UVM Verification SystemVerilog TLM Data Communication
Education UVM Verification
Author
Kerim Turak
Digital IC Design & Verification Engineer
Table of Contents
UVM Series - This article is part of a series.
Part 26: This Article

🚀 What is Transaction-Level Modeling (TLM)?
#

Transaction-Level Modeling (TLM) is an approach used to model high-level data communication in a verification environment. Instead of relying on traditional signal-based connections, TLM represents data as transactions (class-based objects), making the verification environment simpler, more readable, and more scalable.

In UVM (Universal Verification Methodology) testbenches, TLM enables communication between components using port-export-imp structures. This helps build a more flexible and reusable architecture between testbench modules.


🔎 Advantages of Using TLM
#

Provides Abstraction Reduces signal-level complexity and allows transactions to be managed more easily.

Easy Integration Enables independently developed modules to be easily integrated into the testbench environment.

Improved Readability and Faster Development Centralized management of data transfers using ports and exports accelerates test environment development.


🛠️ Fundamental TLM Structures
#

🔹 Port Used by components that want to send data. The port is connected to an export or an imp at the next level to initiate data flow.

🔹 Export Receives data from a port and forwards it to the appropriate imp or another export. Typically used for hierarchical transitions.

🔹 Imp Implemented by the component that finally processes the data. It directs incoming port calls to its own method.


🔗 Blocking vs. Non-blocking Concepts
#

🔸 Blocking: During data transfer, the sender or receiver waits until the operation is completed (e.g., put(), get()).

🔸 Non-blocking: The sender or receiver immediately reports whether the operation was successful or not and can proceed with other tasks (e.g., try_put(), can_put()).


UVM Series - This article is part of a series.
Part 26: This Article

Related

Using Blocking and Non-blocking Put/Get Ports in UVM
· loading · loading
Kerim Turak
Education UVM Verification UVM Verification SystemVerilog Blocking Port Non-Blocking Port TLM
Education UVM Verification
Connecting the UVM RAL Model to the Sequencer and Monitor
· loading · loading
Kerim Turak
Education UVM Verification UVM RAL Sequencer Monitor Predictor Register Verification SystemVerilog Testbench Verification
Education UVM Verification
Creating and Integrating UVM RAL Register Model into the UVM Environment
· loading · loading
Kerim Turak
Education UVM Verification UVM RAL Register Modeling SystemVerilog Adapter Bus Interface Verification
Education UVM Verification
Getting Started with UVM: Setup and Supported Simulators
· loading · loading
Kerim Turak
Education UVM Verification UVM Verification SystemVerilog Simulation
Education UVM Verification
Introduction to UVM
· loading · loading
Kerim Turak
Education UVM Verification UVM Verification SystemVerilog
Education UVM Verification
UVM Agent Usage and Adder Example
· loading · loading
Kerim Turak
Education UVM Verification UVM Verification SystemVerilog Uvm_agent Testbench Structure
Education UVM Verification