Tutorials
Learn More
TLM 1.0
- It provides pass by value transaction-level interface.
- It consists of ports, interface, and FIFOs
- Ports: To communicate between each component (producer and consumer) should have
a. port: A port must provide implementation direct to imp or through export.
b. Interface: helps to transmit transactions based on request or timely broadcasting way.
c. FIFO: one component can store transactions in FIFO, while another component will consume it.
Ports in TLM 1.0
All TLM connections are checked before the test runs.
- Port: It operates to control transaction flow. It can either send or demand transactions.
- Imp: Based on connected port/ export, it can send or receive transactions.
- Export: It forwards transactions from one component to another or from one layer to another.
- Valid Connections:
a. port to port
b. port to export
c. port to imp
d. export to export
e. export to imp - Export to port connection is not allowed
Symbols:
Interface class method types in TLM 1.0
- Put
- Get
- Peek
- Get peek
- Analysis interface
put, get, peek ports
Put |
Get |
Peek |
uvm_put_port |
uvm_get_port |
uvm_peek_port |
uvm_blocking_put_port |
uvm_blocking_get_port |
uvm_blocking_peek_port |
uvm_nonblocking_put_port |
uvm_nonblocking_get_port |
uvm_nonblocking_peek_port |
uvm_put_imp |
uvm_get_imp |
uvm_peek_imp |
uvm_blocking_put_imp |
uvm_blocking_get_imp |
uvm_blocking_peek_imp |
uvm_nonblocking_put_imp |
uvm_nonblocking_get_imp |
uvm_nonblocking_peek_imp |
uvm_put_export |
uvm_get_export |
uvm_peek_export |
uvm_blocking_put_export |
uvm_blocking_get_export |
uvm_blocking_peek_export |
uvm_nonblocking_put_export |
uvm_nonblocking_get_export |
uvm_nonblocking_peek_export |
put, get, peek port methods
All communication methods are provided by TLM interface class.
Methods -> |
put port |
get port |
Peek port |
Blocking Port |
Put |
get |
peek |
Nonblocking Port |
|
|
|
Methods |
Description |
put |
|
try_put |
|
can_put |
|
get |
|
try_get |
|
can_get |
|
peek |
|
try_peek |
|
can_peek |
|
Analysis: write |
|
Key Notes:
UVM TLM |
Classes |
constructor method |
TLM Port |
uvm_*_port #(T) //unidirectional |
function new (string name, uvm_component parent, int min_size=1, int max_size=1); |
TLM export |
uvm_*_export #(T) //unidirectional |
function new (string name, uvm_component parent, int min_size=1, int max_size=1); |
TLM Imp Port |
uvm_*_imp #(T,IMP) //unidirectional |
function new(string name, IMP imp) |
Where parameters are described as:
T – Type of transaction
REQ – Type of request transaction
RSP – Type of response transaction
IMP – Type of the component implementing the interface.
For master and slave imp (Default to imp):
REQ_IMP – The component type that implements the request side of the interface.
RSP_IMP – The component type that implements the response side of the interface.
TLM Tutorials