Skip to content
STIMSMITH

Transaction Level Modeling

Concept WIKI v1 · 5/25/2026

Transaction Level Modeling (TLM) is used with SystemC to model communication at a higher level of abstraction than signal-level RTL. In the provided processor-verification evidence, TLM transactions carry commands such as read/write, payload data, and addresses, and are used to provide a unified memory abstraction between an RTL core and an instruction-set simulator in a co-simulation testbench.

Overview

Transaction Level Modeling (TLM) is identified in the evidence as part of a SystemC-based modeling approach for building designs at different levels of abstraction. The cited processor-verification work states that its co-simulation testbench is implemented in SystemC and uses TLM. In that context, communication may be implemented either through signals, commonly used for RTL models, or through TLM transactions, commonly used for high-level algorithmic models.

Transaction structure

A TLM transaction object essentially contains:

  • a command, such as read or write;
  • the data payload to be transmitted; and
  • an address.

The evidence gives an example memory access operation using a TLM transaction object named gp, described as the tlm_generic_payload type. The memory obtains the address, access length, and data pointer from the transaction object, then executes either a data read or write depending on the TLM command.

Use in SystemC-based co-simulation

In the cited RISC-V processor-verification testbench, TLM is used together with SystemC. SystemC is described as a C++ class library with an event-driven simulation kernel, where design structure is described with modules and behavior is modeled in processes triggered by events.

The testbench co-simulates an RTL core under test and an instruction-set simulator reference model. Its memory interfaces translate back and forth between RTL core signals and TLM transactions. The work explicitly states that TLM transactions are leveraged to provide a unified memory abstraction for both the RTL core and the ISS based on a common standard.

Role in memory modeling

The cited co-simulation design uses separate instruction and data memory interfaces for the RTL core, and the ISS also uses two separate memory interfaces to match the RTL core. In the data-memory path, write accesses store data, while read accesses return existing data or generate new random data if the address has not been accessed before. TLM transactions are the abstraction used at the memory-interface boundary to connect these behaviors across modeling levels.

Relationship to co-simulation testbenches

A co-simulation testbench can use Transaction Level Modeling to connect signal-level RTL components with higher-level models through transaction-based memory interfaces. In the cited example, the test controller alternates between letting the RTL core execute one instruction and letting the ISS execute the same instruction, then compares execution states; TLM supports this setup by abstracting memory communication between the two sides.

LINKED ENTITIES

1 links

CITATIONS

8 sources
8 citations
[1] The cited co-simulation testbench is implemented in SystemC and uses TLM. 2020FDL_cross-level-processor-verification-riscv.pdf
[2] SystemC combined with TLM is described as an industry-proven modeling standard for building designs at different abstraction levels. 2020FDL_cross-level-processor-verification-riscv.pdf
[3] Communication can be implemented via signals for RTL models or abstracted using TLM transactions for high-level algorithmic models. 2020FDL_cross-level-processor-verification-riscv.pdf
[4] A TLM transaction object essentially consists of a command, payload data, and an address. 2020FDL_cross-level-processor-verification-riscv.pdf
[5] The example memory interface receives a TLM generic payload, obtains address, access length, and data pointer from it, and performs a read or write based on the TLM command. 2020FDL_cross-level-processor-verification-riscv.pdf
[6] In the cited testbench, memory interfaces translate between RTL core signals and TLM transactions. 2020FDL_cross-level-processor-verification-riscv.pdf
[7] TLM transactions are used to provide a unified memory abstraction for the RTL core and the ISS. 2020FDL_cross-level-processor-verification-riscv.pdf
[8] The co-simulation testbench executes one instruction on the RTL core, executes the same instruction on the ISS, and compares execution states, especially registers. 2020FDL_cross-level-processor-verification-riscv.pdf