UVM中基于SOCKET通信的TLM2.0介绍

电子说

1.3w人已加入

描述

TLM2.0在2009年成为OSCI标准,主要用于构造总线系统的SystemC模型。尽管如此,当TLM2.0被引入到SV,它在构造testbench这件事情上也有所建树,为连接testbench与SystemC模型提供了便利。

本文在介绍TLM2.0时将主要覆盖其三大特征:interface,socket和generic payload。

01

Interface

TLM2.0跟TLM-1类似,有port、export和imp这些接口概念。在传输类型上,可以分为阻塞和非阻塞。其中非阻塞传输通过包含两个不同方向的传输路径来实现双向传输(bi-directional),这两个传输路径分别是前向传输路径(forward transport path)和反向传输路径(backward transport path)。这么一结合,就有了以下TLM2.0接口的九种基本类型。

TCPIP协议

接下来是传输函数。相比于TLM-1中传输函数put和get,TLM2.0使用的传输函数从SystemC原原本本地迁移了过来,主要由下面三种传输函数。这些传输函数的原型定义在uvm_tlm_if类中,该类也是上面九种接口类的父类的父类的父类。

TCPIP协议

结合起来看,TLM2.0接口的基本类型中,会提供对应的传输函数供调用(比如:支持阻塞传输的三个接口类中,都会调用宏去实现传输函数b_transport),以及connect函数供建立连接关系(connect函数的主要目的是实现接口句柄的传递)。好在这一部分作为TLM2.0的底层实现,用户应用中可以不去关心。

02

Socket

TLM2.0最主要的贡献是提出了socket的概念。Socket在UVM TLM2.0中,实现上是对port、export和imp的又一层封装,以提供更加统一和简洁的连接。下面首先扩展一下知识面,说说socket。

Socket,直译过来叫“插座”,后来由于功能相似被引入到软件领域,并被翻译成了“套接字”,首先广泛用于计算机网络领域。Socket在计算机网络模型中,作为应用层和传输层之间的一个抽象层,这就意味着,socket为下游的传输层(TCP/IP)做了接口封装,并为上游应用层(用户进程)提供网络通信服务(service)。

TCPIP协议

从整个通信链路角度看,socket就像是某种规格的插座,服务端和客户端通过规格(域、套接字类型、协议)匹配的“线缆”插上两端(通过IP地址和端口名),即可实现端到端的通信,通信的过程不再需要去关心中间的通信协议和实现细节。

当Socket的概念被引入到TLM建模,它依然保留着它原本的特点:端到端,协议统一,双向通信。当然,TLM Sockets也有自己的特点,比如可用于流量控制的延时参数等等。 TLM2.0这套机制本身可以说是围绕socket接口展开的。Socket涉及到的类有8个,都是一对一对的,使用的时候非常方便和干净。

TCPIP协议

根据阻塞性和在通信链路中的位置,socket类型可以按照下表分类。

TCPIP协议

其中IS-A表示面向对象的继承关系,可以理解为“它本质是xxxx接口”;HAS-A表示对象之间的关联关系,可以理解为“它还有一个xxxx接口”,举个例子:用于非阻塞传输的initiator的socket(uvm_tlm_nb_initiator_socket),它本质是一个支持前向传输的port接口,同时它还有一个支持后向传输的imp接口。

03

Generic Payload

统一的通信事务(payload)可能是TLM2.0理想的用法,从UVM源码中可以看到在接口和socket涉及到transaction类型的地方,都用了默认类型uvm_tlm_generic_payload. Generic payload的基类是uvm_sequence_item,本质上跟之前接触到的transaction没有什么两样,它可以被看做是TLM2.0为我们定义好的可以直接用于总线系统建模的事务模板。

因为是面向总线系统建模而创建的transaction,所以generic payload包含的域基本也都跟总线相关,比如地址(m_address)、数据(data[])、读/写(m_command)、突发长度(m_stream_width)、字节掩码(m_byte_enable[])、响应类型(m_response_status)等。如果还有更多的字段,比如memory属性、安全属性、ID号等其他sideband信号,可以通过扩展m_extensions数据结构来进行添加。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分