UVM TLM1.0 Interface归纳总结
--- 图解UVM TLM1.0 Interface
Transaction-Level Modeling (TLM) 用户模块之间的通信. 是实现基于事务的方法的概念,这些方法可用于模块之间的通信。
The UVM库提供了事务级接口、端口、导出、imp端口和分析端口。所有这些TLM元素都需要用来发送事务、接收事务以及从一个组件到另一个组件的传输。每个人都扮演着自己独特的角色。
- TLM Interfaces由发送和接收事务的方法组成
- 所有不同类型的TLM端口都像管道一样用于组件之间的连接
UVM TLM库提供了:
- TLM1 – TLM1端口提供阻塞和非阻塞的按值传递事务级接口
- TLM2 – The TLM2 sockets 提供具有定义良好的完成语义的阻塞和非阻塞事务级接口
- 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
一、UVM TLM Interface Summary
Type | Communication |
Blocking | Port -> Imp Port |
Port -> Imp Port Blocking Port Behaviour | |
NonBlocking | Port -> Imp Port NonBlocking |
Port -> Imp Port can_put method NonBlocking | |
Blocking | Port -> Export -> Imp_port |
Port -> Port -> Imp_port | |
Port -> Port -> Export -> Imp_port | |
Port -> Port -> Export -> Export -> Imp_port | |
Get Port -> imp_port | |
TLM FIFO | TLM FIFO |
TLM FIFO NonBlocking | |
TLM Analysis Port Analysis Imp Port and Analysis FIFO | TLM Analysis Port Analysis Imp port |
TLM Analysis Port with multi analysis imp port | |
TLM Analysis Port Multi Subscribers Analysis imp port | |
TLM Analysis Port Multi Subscribers with multi Analysis imp port | |
TLM Analysis FIFO |
二、图解UVM TLM1.0通信过程
2.1、Blocking TLM Port and Blocking Imp Port
- 在Component B中写一个put task,其原型为:virtual task put(T t)
2.2、Nonblocking TLM port and Imp Port
- 在Component B中写一个function,其原型为:virtual function bit try_put(T t)
2.3、Nonblocking can_put method
- 在Component B中写一个function,其原型为:virtual function bit can_put(T t)
2.4、Connecting TLM Port export imp port
- 在Component B中写一个put task,其原型为:virtual task put(T t)
2.5、Connecting TLM Port Port Imp port
- 在Component B中写一个put task,其原型为:virtual task put(T t)
2.6、Connecting TLM Port Port Export Imp port
- 在Component B中写一个put task,其原型为:virtual task put(T t)
2.7、Connecting TLM Port Port Export Export Imp port
- 在Component B_aa(传输终点imp所在的Component)中写一个put task,其原型为:virtual task put(T t)
2.8、Connecting TLM Get port imp port
- 在Component B中写一个get task,其原型为:virtual task get(T t)
2.9、Nonblocking TLM port and Imp Port
- 在Component B中写一个try_get function,其原型为:virtual function bit try_get(T t)
2.10、Nonblocking can_get method
- 在Component B中写一个can_get function,其原型为:virtual function bit can_get(T t)
2.11、TLM FIFO
2.12、TLM FIFO with NonBlocking ports
- 在Component B中写一个try_get function,其原型为:virtual function bit try_get(T t)
2.13、Connecting Analysis port and Analysis imp port
- 在Component B中写一个write function,其原型为:virtual function write(T t)
2.14、Connecting multiple ports to a single analysis port
- 在Component B中写一个write function,其原型为:virtual function write(T t)
- 通过`uvm_analysis_imp_decl()扩展为多个write function
2.16、Multi Subscribers with a single port
- 在Component B中写一个write function,其原型为:virtual function write(T t)
- 在Component C中写一个write function,其原型为:virtual function write(T t)
2.17、Multi Subscribers with Multiports
2.18、TLM Analysis FIFO
- 在Component B中写一个get function,其原型为:virtual function get(T t)