UVM中的TLM通信

1、TLM简介

TLM:Transaction Level Modeling(事务级建模),它是一个独立于语言的一个标准,常用于系统建模,加速软硬件协同开发。在芯片开发中,常配合system C使用来进行系统设计。最新的标准是OCSI TLM 2.0。

2、UVM TLM概念

2.1、TLM通信的步骤

  1. 分辨出initiator和target,producer和consumer;
  2. 在target中实现TLM通信方法;
  3. 在两个对象中创建TLM端口;
  4. 在更高层次将两个对像都端口连接;

2.2、单向通信

1、put操作

Port A是put动作发起者,Export B是动作接收者,数据流A->B. 实现A主动向B发送数据。

2、get操作

Port A是get动作发起者,Export B是动作接收者,数据流B->A. 实现A主动向B索取数据,且数据被消耗。

3、peek操作

Port A是get动作发起者,Export B是动作接收者,数据流B->A. 实现A主动向B索取数据,但数据被保留。

2.3 、双向通信

1 transport操作

Port A是transport动作发起者,Export B是动作接收者。transprot操作相当于一次put加一次get。A先发起put操作,相当于提交一个request,数据从A->B, 后通过get返回response,数据从B->A.

2.4、多向通信

指的是,如果initiator和target之间的相同TLM端口数目超过一个时的处理解决办法。UVM通过端口宏声明方式来解决这一问题。

定义方法如下:

`uvm_blocking_put_imp_decl(参数名)
`uvm_blocking_get_imp_decl(参数名)

3、TLM通信中三种端口

1、port/export/imp端口

1、优先级高连接优先级底的:Port > Export > IMP

2、Port 始终是传输动作的发起者,Export和IMP只能作为动作的接受者。

3、 三种端口均是uvm_component的子类,但应该使用new()函数在build_phase中创建。(注意:不能用create创建,端口不属于UVM树的一部分,uvm_object才能用creat创建)。

4、在同时有Port,Export,IMP端口中,只有且必须以IMP作为终点。

5、 IMP 在声明时相较于Port/Export多了一个类型参数’IMP’ ,uvm_blocking_put_imp#(T, IMP); // 第一个参数T是这个IMP传输的数据类型。 第二个参数IMP为包含该IMP的component类型。

2、三种端口的方法实现

initiator的动作实现,最终是在终点imp所在的commponent中实现,所以要在imp所在的commponent中定义put/get/transport的任务或函数,完成数据参数。在blocking端口可以把put/get/transport定义成function或task,在nonblocking端口只能把put/get/transport定义成function。

4、通信管道

4.1 Analysis port(一对多连接)

除了端对端的传输,还有一端到多端的需求。这是一个initiator端到多个target端的方式,analysis port采取的是“push”模式,即从initiator端调用多个target端的write()函数实现数据传输

4.2 TLM FIFO

1、uvm_tlm_fifo的功能类似于mailbox,不同在于uvm_tlm_fifo提供各种端口供用户使用。比如put、get、peek端口,
2、uvm_tlm_fifo中的许多export虽然表面的名字是export,但实际的类型是IMP,UVM掩饰类IMP的存在。
3、uvm_tlm_fifo的好处是不用手动再写write(),put(),get()这些component中要声明的同名函数

4.3 Analysis TLM FIFO

uvm_tlm_analysis_fifo类继承于uvm_tlm_fifo,表明它本身具有面向单一TLM端口的数据缓存属性,同时该类又有uvm_analysis_imp、analysis_export端口并且实现write()函数。

  1. 将initiator的analysis port连接到tlm_ananlysis_fifo的get_export端口,这样数据就能从initiator发起,写入各个tlm_analysis_fifo的缓存中;
  2. 将多个target的get_port连接到tlm_analysis_fifo的get_export端口,注意保持端口类型匹配,这样从target一侧只需要调用get()方法就可以得到先前存储在各个tlm_analysis_fifo的缓存中的数据;

UVM中的TLM通信相关推荐

  1. UVM中的TLM机制

    一.TLM中的几种术语 transport = put + get: peek 与get 类似,其数据流.控制流都相似,唯一的区别在于当get任务被调用时,FIFO内存缓存中的会少一个transact ...

  2. UVM学习笔记--TLM通信

    Table of Contents 1.TLM简介 2.UVM TLM基本概念 2.1 TLM 通信常用的的三种传输:Put/Get/Transport 2.2 TLM 通信中的三种端口:Port,E ...

  3. uvm基础(2)TLM通信,看这一篇就够了

    tlm通信概述 tlm通信的步骤:1.分辨出initiator和target,producer和consumer. 2.在target中实现tlm通信方法. 3.在俩个对象中创建tlm端口. 4.在更 ...

  4. TLM通信 — UVM

    文章目录 简介 1.端口的使用 2.单向通信 3.双向通信 4.多向通信 5.通信管道 1. TLM_FIFO 2. Analysis Port 3. Analysis TLM FIFO 4. req ...

  5. UVM通信篇之一:TLM通信概论

    本文转自:http://www.eetop.cn/blog/html/28/1561828-5940098.html 在目前SoC设计的几大挑战当中,最令人关注的莫过于: 爆炸性增长的复杂度(然而被互 ...

  6. UVM基础-TLM通信机制(一)

    目录 基本概念 TLM通信分类 单向通信 单向通信举例 单向通信代码 双向通信 多向通信 多向通信总结 通信管道 TLM FIFO Analysis Port Analysis TLM FIFO 芯片 ...

  7. UVM——TLM通信

    UVM--TLM通信 1. 概述 2. 基本概念 3. 分类 4. 端口的使用 1. 概述 在芯片开发流程中,系统原型和芯片验证对项目的助推起到了关键作用 系统原型,一般是通过硬件功能描述文档来模拟硬 ...

  8. TLM通信(transaction level modle)

    一.概述 在芯片开发流程中,系统原型和芯片验证对项目的助推起到了关键作用. 系统原型一般是通过硬件功能描述文档来模拟硬件行为,而行为要求不同于RTL模型.系统原型可以提供一个准确到硬件比特级别.按照地 ...

  9. UVM_6:事务级建模TLM通信

    文章目录 前言 一.简单例子:driver-sequencer组件之间的通信 二.TLM通信 三.TLM通信步骤 四.TLM通信的分类 五.端口的使用 六.单向通信 七.双向通信 八.多向通信 1. ...

最新文章

  1. 1-3团队冲刺第九天
  2. pyspark DataFrame 转RDD
  3. Java GUI:将JPanel添加进JScrollPane
  4. .NET WebBrowser不与IE或其他进程共享cookie(WebBrowser独立cookie方法)
  5. ALV打印不显示打印界面的问题
  6. bootstrap tab 模拟点击_【第七课】Bootstrap的魅力
  7. 【设计模式 03】装饰模式——俄罗斯套娃?
  8. 让人耳目一新的四款高质量软件,简约又实用,每一款都值得收藏
  9. win10系统不能多开服务器,win10游戏不能双开如何处理_win10电脑游戏双开同时运行操作方法...
  10. javascript 动态画心加文字
  11. 分享图片或链接到抖音
  12. Elaine的python初学习
  13. Java 视频转码(转为MPEG-4格式)
  14. python怎么筛选并列关系数据_一文带你学会如何用Python生成带误差棒的并列和堆积柱状图...
  15. java 数字大小写转换_阿拉伯数字大小写转换java工具
  16. 您对超人搜索有什么建议?
  17. 与计算机内存容量密切相关的,与计算机内存容量密切相关的是( )。
  18. 安装Tomcat详细步骤
  19. Java调用Google Analytics API实现网站统计
  20. Ubuntu 10.04下fcitx输入法中去掉多余的输入方式

热门文章

  1. 杭州卫星地图 百度卫星地图(含道路、标签信息叠加)
  2. ESP8266固件下载及烧录(收录AT固件下载地址+固件烧录注意事项)
  3. 类的封装(概念,如何封装)
  4. SPA项目之登录注册
  5. php实现踢下线,浅谈踢人下线的设计思路!(附代码实现方案)
  6. 0 Day:操作系统的一些问题
  7. ‘SHIT’上最全有限状态机设计研究(一)-状态机介绍
  8. 如何用计算机编程算题,计算机二级Web程序设计章节练习题
  9. PCIe板卡结构尺寸
  10. 代码补全漫谈(1) - 从TabNine说起