网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-06-25 09:58

人气:

作者:admin

标签: UVM  TCPIP协议  TLM 

导读:TLM2.0在2009年成为OSCI标准,主要用于构造总线系统的SystemC模型。...

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接口的九种基本类型。

4c9b445c-11d5-11ee-962d-dac502259ad0.png

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

4cc704de-11d5-11ee-962d-dac502259ad0.png

结合起来看,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)。

4ceed8c4-11d5-11ee-962d-dac502259ad0.png

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

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

4d0d3ec2-11d5-11ee-962d-dac502259ad0.png

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

4d432398-11d5-11ee-962d-dac502259ad0.png

其中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数据结构来进行添加。





审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信