Transaction Level Modeling (TLM)
TLM establishes a connection between producer and consumer components through which transactions are sent. A transaction is nothing but a class object containing specific information.
- unidirectional, bidirectional, or broadcasting manner communication between components
- Broadcasting of information promptly.
- One component to multiple components connection.
- The mechanism uses task and function methods to establish a connection.
- FIFO can hold transactions and get them based on the requirement.
- A higher level of abstraction.
- Connection to systemC.
Advantages of TLM
- Reusable in different verification environments.
- Available with plug and play connections
- Easy to implement with fewer details.
- Due to high-level abstraction, unnecessary details like internal connections are hidden.
- Ports can be replaced easily by changing port declaration and methods.
History of TLM
TLM 1.0 – April 2005
TLM 2.0 (draft-1) – Dec 2006
TLM 2.0 (draft-2) – Nov 2007
TLM 2.0 – Jun 2008
TLM 2.0.1 – July 2009
TLM was created for SystemC and later added to UVM. But there are some feature differences between SystemC and UVM.
Get, put and transport req-rsp interface
TLM 2.0 (draft-1)
TLM 2.0 (draft-2)
New payload and extension
Unified interfaces and sockets
LRM and Minor additions
Ports in TLM
- Set of methods
- Generic payload class
- uvm_tlm_time class
- Analysis ports
- Imp ports