UVM——TLM2通信

TLM2通信

TLM2.0多用于SystemC,与TLM1.0相比,2.0的优势包括:
- 双向的阻塞或非阻塞接口
- 时间标记
- 统一的数据包
TLM2.0使得接口之间的通信更趋于标准化,更容易为系统构建抽象模型。

接口实现

TLM2的传输是双向的,一次完整的数据传输包含request和response类型,与TLM1 transport端口传输方式类似。TLM2支持blocking和nonblocking两种transport方式:
- blocking传输方式要求在一次传输过程中,完成request和response的传输
- nonblocking传输方式则将request和response的传输分为了两个独立的单向传输,两次传输整体视为完成一次握手传输

//两种传输方式对应的UVM方法
task b_transport(T t, uvm_tlm_time delay);		//blocking传输方式
function uvm_tlm_sync_e nb_transport_fw(T t, ref P p, input uvm_tlm_time delay);		//nonblocking传输方式
function uvm_tlm_sync_e nb_transport_bw(T t, ref P p, input uvm_tlm_time delay);

T代表统一的传输数据类uvm_tlm_generic_payload;P代表在nonblocking传输方式中用来做状态同步的类型。
在定义TLM2的过程中,仍然有initiator和target的概念,也有port、export、imp端口类型。对于port类型,它是用来发起请求并调用target一端的传输方法,export用来传导这一要求,最后由imp端口所在的组件来实现数据传输方法。
TLM2的端口类型称之为socket,有port、export、imp组合而成。一个socket首先是双向传输的,例如TLM1de双向传输端口transport可以用来做单次完成的双向传输,master和slave端口用来完成多次的双向传输。
socket按照blocking和nonblocking的传输方式,组合initiator或target的发起端区别,可以分为以下端口类型:

uvm_tlm_b_initiator_socket
uvm_tlm_b_target_socket
uvm_tlm_nb_initiator_socket
uvm_tlm_nb_target_socket
uvm_tlm_b_passthrough_initiator_socket
uvm_tlm_b_passthrough_target_socket
uvm_tlm_nb_passthrough_initiator_socket
uvm_tlm_nb_passthrough_target_socket

socket类型都继承于uvm_port_base,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值