tlm通信概述

  • tlm通信的步骤:1.分辨出initiator和target,producer和consumer。
    2.在target中实现tlm通信方法。
    3.在俩个对象中创建tlm端口。
    4.在更高层次中将俩个对象进行连接。

-端口类型有三种:1.port,一般是initiator的发起端。
2.export,作为initiator和target的中间端口。
3.imp,只能作为target接受request的末端。
4.多个port可以连接同一个export或imp,但是单个port或export不能连接多个imp。

  • 端口的连接:通过connect函数进行连接,例如A(initiator)Y与B进行连接,可以使用A.port.connect(B.export)
  • uvm_*_imp#(T,IMP);IMP定义中第一个参数T是这个IMP传输的数据类型,第二个参数IMP是实现这个接口所在的component。

uvm的多向通信

  • uvm的analysis端口有俩种:analysis_port和analysis_export,他们与put,get系列端口类似。他们的主要区别是:1.默认情况下,analysis_port与imp之间的通信是一对多的通信。相当于广播的模式。而put,get与imp的通信是一对一的。
    2.put和get有阻塞和非阻塞之分,而analysis没有阻塞和非阻塞的概念。
    3.对于put系列的端口,有try_put,can_put等操作,get系列的端口也有try_get,can_get等操作,而analysis只有一种操作:write。

-当需要接受俩种及以上的数据,实现不用的imp端口时,uvm采用宏uvm_analysis_imp_decl来声明。例如:sb接收monitor和model的数据,可以使用下面的方法:uvm_analysis_imp_decl(_monitor);
`uvm_analysis_imp_decl(_model);
通过宏声明这俩个后缀之后,uvm会自动根据他来定义俩个新的imp类,并分别例化他们。

  • 此外,我们还可以使用tlm fifo 才实现这个功能。FIFO的本质就是一块缓存加上俩个IMP。
  • uvm_tlm_fifo包含多个tlm端口,常用的端口如下:put_export:可以通过这个端口调用put,try_put,can_put;
  • put_ap:调用put方法写入数据的同时,也通过该端口的write函数送出。
  •      get_peek_export:调用get,try_get,peek,try_peek等
    
  • get_ap:调用get ,peek方法写入数据的同时,也通过该端口的write函数送出
    uvm_tlm_analysis_fifo提拱了uvm_analysis_port端口,uvm_analysis_imp端口和write函数。不需要自己实现write函数。需要注意的是这些export类型本质上都是imp

uvm基础(2)TLM通信,看这一篇就够了相关推荐

  1. 基础 | 零散的MySql基础记不住,看这一篇就够啦

    ❝ 这是小小本周的第二篇,本篇将会着重的讲解关于MySql基础的内容,MySql基础看这一篇就够啦. ❞ 送书反馈与继续送书 之情小微信公众号第一次送书,Java深度调试技术,书已经被中奖者麦洛签收, ...

  2. Linux基础知识汇总,看这一篇就够了(2022最新整理)

    前言 想入门Llinux,新手不知道Linux怎么入门?有这一篇就够了 提示:以下是本篇文章正文内容,下面案例可供参考 一.Linux入门概述 概述 Linux全称GNU/Linux,是一种免费使用和 ...

  3. docker 镜像修改的配置文件自动还原_Docker 基础与实战,看这一篇就够了

    作者 |  单一色调责编 | ElleDocker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,names ...

  4. Docker 基础与实战,看这一篇就够了

    作者 |  单一色调 责编 | Elle Docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  5. python 入门基础-零基础入门Python,看这一篇就够了!

    前言 Python语言,诞生于20世纪90年代初的一个圣诞节,始于创始人吉多·范罗苏姆 "打发无聊",至此已成功运行30年.其名Python(蟒蛇)取自于英国的电视喜剧<蒙提 ...

  6. 【网络安全工程师】从零基础到进阶,看这一篇就够了

    学前感言 1.这是一条需要坚持的道路,如果你只有三分钟的热情那么可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会,最好看完教程自己独立完成技术方面的开发. 3.有问题多google,baid ...

  7. 2023零基础入门网络安全,看这一篇就够了

    网络安全不难,网络安全入门更简单!可不要被它神秘的外衣给唬住了. 只要你接下来认真听完我的讲解,虽然保证不了你能成为大神,但就算你学习能力再差那也能达到入门级别. 开篇建议: 1.这是一条坚持的道路, ...

  8. 零基础入门网络安全,看这一篇就够了!

    前景 很多零基础朋友开始将网络安全作为发展的大方向,的确,现如今网络安全已经成为了一个新的就业风口,不仅大学里开设相关学科,连市场上也开始大量招人. 那么网络安全到底前景如何?大致从市场规模.政策扶持 ...

  9. 【Linux】Docker 基础与实战,看这一篇就够了

    Docker 基础 什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Uni ...

  10. mysql left a 10_MySQL基础总结,认真看完这篇就够了!!!

    MySQL基础 服务的启动和停止 停止数据库服务,在DOS下以管理员身份运行 net stop mysql 开启数据库服务,在DOS下以管理员身份运行 net start mysql 数据库的相关操作 ...

最新文章

  1. javascript迭代_探索JavaScript迭代
  2. 现有exe转为服务_方式01
  3. python基础/编程语言,解释器和pycharm的安装
  4. 我的log4j与logback简易配置
  5. 类欧几里得(模板题推导)
  6. js清除添加的下拉框html,Html下拉框的定义以及JS、Jquary取值、添加和移除
  7. 精通init ramfs构建
  8. vue 赋值不改变_【报Bug】超大BUG,Nvue页面引入组件以后,该页面data里的值不能再赋值改变...
  9. ViewPager——PagerTitleStrip和PagerTabStrip
  10. 推荐两个不错的公众号
  11. DevExpress之TreeList绑定复杂数据类型
  12. 【爬虫】手把手教你写网络爬虫(1)
  13. oracle 同义词public,oracle中private同义词跟public同义词
  14. ThinkPHP5和ThinkPHP6的区别
  15. Linux的PS1美化
  16. 电脑控制手机,无需Root、无线连接,免费开源跨平台的scrcpy比其他收费软件还好用!
  17. 重装系统进入PE的快捷键大全
  18. 三小时学会css(菜鸟教程精华版)【上】
  19. VisionPro二次开发——C#计算旋转中心
  20. 如何在三天内使用Thinkphp搭建商城系统(一)

热门文章

  1. 常见html的MIME类型
  2. 嵌入式软件工程师都在开发什么?
  3. Android小窗口模式,picture-in-picture(PIP画中画)的使用
  4. socket服务器区分各个客户端信息,socket服务器如何区分哪个客户端
  5. 【资料分享】《建筑工程抗震设防分类标准》(GB50223-2008)
  6. RHCE(逻辑卷LVM,NFS服务)
  7. myeclipse中生成web service时出现异常Unable to create JAXBContext
  8. 商业智能中的决策, 数据和数据处理方法
  9. 计算机总是提示网络电缆没有插,网络电缆没有插好原因与解决方法【图文教程】...
  10. Alphabetical list of part-of-speech tags used in the Penn Treebank Project: