Transaction-Level Modeling (TLM) is used for communication among modules. TLM is the concept in which transaction based methods are implemented, these methods can be used for communication between the modules.
The UVM provides TLM library with transaction-level interfaces, ports, exports, imp ports, and analysis ports. all these TLM elements are required to send a transaction, receive transaction, and transport from one component to another. where each one plays its unique role.
- TLM Interfaces consists of methods for sending and receiving the transaction
- All different types of TLM Ports are used like PIPES to connect between the components
The UVM TLM library provides,
- TLM1 – The TLM1 ports provide blocking and non-blocking pass-by-value transaction-level interfaces.
- TLM2 – The TLM2 sockets provide blocking and non-blocking transaction-level interfaces with well-defined completion semantics.
- Sequencer Port – A push or pull port, with well-defined completion semantics.
- Analysis – The analysis interface is used to perform non-blocking broadcasts of transactions to connected components
Summary of UVM TLM
UVM TLM provides unidirectional and bidirectional,
- TLM interfaces
- imp ports
- analysis portss
Each TLM interface is either blocking, non-blocking, or a combination of these two.
- Blocking – Blocking TLM methods call will not return until the transaction has been successfully sent or retrieved
- Non-blocking – Non-Blocking TLM methods call attempts to convey a transaction without consuming simulation time
- Combination – A combination interface contains both the blocking and nonblocking variants.