TLM通信总结1

news/2024/5/16 10:30:37/文章来源:https://www.cnblogs.com/fuqiangblog/p/16644737.html

事务级建模 (TLM) 用于模块之间的通信。 TLM 是实现基于事务的方法的概念,这些方法可用于模块之间的通信。

UVM TLM

UVM 为 TLM 库提供事务级接口,ports,exports,imp ports,and analysis ports。所有这些 TLM 元素都需要发送事务、接收事务以及从一个组件传输到另一个组件。

TLM 接口由发送和接收事务的方法组成。

所有不同类型的 TLM 端口都像 管道 一样用于在组件之间进行连接。

UVM TLM 库提供:

TLM1 – TLM1 端口提供阻塞和非阻塞按值传递事务级接口。

TLM2 – TLM2 套接字提供具有明确完成语义的阻塞和非阻塞事务级接口。

Sequencer port——一个 推 (put) 或拉(pull)端口,具有明确定义的完成语义。

Analysis——Analysis 接口用于对连接的组件执行非阻塞的事物级广播。

TLM1

UVM TLM 提供单向和双向端口

  • TLM interfaces
  • ports
  • exports
  • imp ports
  • analysis portss
  • FIFOs

每个 TLM 接口可以是阻塞的,也可以是非阻塞的,或者是这两者的组合。

Blocking — Blocking TLM 方法调用在事务成功发送或取回之前不会返回

non-Blocking — 非阻塞 TLM 方法调用尝试在不消耗仿真时间的情况下传达事务

组合 – 组合接口包含阻塞和非阻塞变体。

 

UVM TLM Methods

TLM 接口类声明了完成通信所需的所有方法:

put

  • put 方法用于将事务发送到另一个组件
  • 调用 <port>.put(trans) 将事务发送到其他组件
  • put() 方法调用是阻塞调用。在事物成功发送之前不会返回

get

  • get 方法用于从另一个组件取回事务
  • 调用 <port>.get(trans) 从其他组件取回事务
  • get() 方法调用是阻塞调用。在成功取回事务之前不会返回
  • get() 方法调用消耗事务。即像FIFO get方法从FIFO中取出事物
  • 对 get 的后续调用必须返回不同的事务实例。意味着之前的get会取出trans,期望得到新的trans

peek

  • peek 方法获取事务而不消耗事物
  • 它调用 <port>.peek(trans) 从其他组件复制一个事务
  • peek() 方法调用是阻塞调用。
  • 返回的事务没有被消耗。随后的 peek 或 get 将返回相同的事务

try_put

try_put 方法用于在不阻塞执行的情况下将事务发送到另一个组件

如果可能,调用 <port>.try_put(trans) 将事务发送到另一个组件

try_put 方法返回 1 如果成功发送事务,否则返回 0

can_put

  • 如果组件准备好接受事务,can_put() 方法调用返回 1,否则返回 0
  • can_put 不能传入任何参数,该方法用于查看其他组件是否准备好接受 trans

try_get

try_get 方法用于在不阻塞执行的情况下从另一个组件取回事务

如果可能,调用 <port>.try_get(trans) 从另一个组件取回事务

如果事务可用,try_get 方法返回 1,否则返回 0

can_get

  • can_get() 方法调用,如果组件可以立即获取事务则返回 1,否则返回 0
  • 无需向 can_get 传递任何参数,该方法用于查看是否有任何事务可以获取

transport

  • 调用 <port>.transport(req,resp) 方法执行给定的请求,并在给定的输出参数中返回响应
  • 传输方法 transport 调用是阻塞的,它可能阻塞直到操作完成

nb_transport

如果可能,调用 <port>.nb_transport(req,resp) 方法执行给定的请求,并在给定的输出参数中返回响应

如果由于某种原因无法立即执行操作,则必须返回 0,否则返回 1

Analysis:

Write

调用 <port>.write(trans) 方法将向任意数量的listener广播事务。

写方法 write 调用是非阻塞调用

总结:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5536.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32物联网项目-程序框架思想

程序框架思想 一、程序框架的构想 1、STM32cubeMX生成的代码与添加的应用代码分离; 2、利用STM32cubeMX重新生成代码&#xff0c;不影响应用代码; 3、应用代码的添加&#xff0c;移除与修改&#xff0c;不影响cube生成的代码; 4、代码架构方便阅读&#xff0c;编辑&#x…

领域最全!多传感器融合方法综述!(Camera/Lidar/Radar等多源异构数据)

点击进入→自动驾驶之心技术交流群 后台回复【ECCV2022】获取ECCV2022所有自动驾驶方向论文! 自动驾驶中的多传感器融合 原文:Multi-Sensor Fusion in Automated Driving: A Survey 自动驾驶正成为影响未来行业的关键技术,传感器是自动驾驶系统中感知外部世界的关键,其协作…

Java 开发中的 Lombok 是什么?

一. 血案 今天有个学生告诉我&#xff0c;他在项目中使用Mybatis框架查询时报错&#xff0c;提示无法创建对象。但自己仔细地检查了代码都没有发现错误&#xff0c;于是他就半夜拼命地给我发消息求救。 我起床拿手机&#xff0c;还差点摔倒闪了我的老腰&#xff0c;我老婆看我…

猿创征文|工作中遇到技术盲区后的自我成长

猿创征文&#xff5c;工作中遇到技术盲区后的自我成长 1、立场 我是一名python后端开发程序员&#xff0c;在一家创业公司中兢兢业业工作快两年了&#xff0c;从软件架构、开发、测试、部署、运维一手经办&#xff0c;到开发文档、API接口、开发周期、设备交付、安装完成全程…

面向对象编程原则(03)——单一职责原则

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 参考资料 《大话设计模式》 作者&#xff1a;程杰《Java设计模式》 作者&#xff1a;刘伟《图解设计模式》 作者&#xff1a;结城浩《重学Java设计模式》 作者&#xff1a;…

[论文阅读] HairGAN: Spatial-Aware Palette GAN for Hair Color Transfer

[论文地址] [代码] [ICME 22] Abstract 头发颜色转移的目的是将头发颜色从参考图像转移到原始图像&#xff0c;同时保持原始图像的头发结构。然而&#xff0c;由于复杂的头发结构以及原始图像和参考图像之间头发区域的错位&#xff0c;现有的方法不能很好地完成这一任务。为了…

CTFshow_MISC入门_图片篇(基础操作信息附加)wp

文章目录前言Tipsmisc1misc2misc3misc4misc5misc6misc7misc8misc9misc10misc11后记前言 挺长时间没有打CTF了&#xff0c;感觉技术从之前就一直没有提升多少&#xff0c;摸了段时间的渗透&护网&#xff0c;感觉CTF的基础还是比较重要&#xff0c;温故而知新&#xff0c;就…

03.thymeleaf在业务系统中的应用

thymeleaf是Java方向开源的服务端模板引擎&#xff0c;支持多种格式的格式渲染。在存前端项目盛行的年代&#xff0c;webUI纯服务端渲染已经不再适合&#xff0c;但并不影响服务端模板的继续应用。 在企业集成业务系统中&#xff0c;由于低代码平台的业务标准化/组件化/所见及…

[ Linux长征路第三篇 ] 权限理解

目录 1.root用户和普通用户相互切换 2.文件类型和访问权限(事物属性) 2.1 文件类型 2.2 基本权限 2.3 文件权限值得表示方法 1&#xff09;字符表示法 2&#xff09;8进制数值表示法 2.4 文件访问权限的相关设置方法 1) chomd 2&#xff09;三位8进制数字 3) cho…

解决找回密码不在右边的问题

问题如下: 在10.5中,按照书中代码写法为float-right,则出现上述的问题,找回密码不能和书中的结果一样呈现在右边,而出现在了左边 解决问题:把float-right改为float-end即可。其实这也不是什么大问题,不过可能会有的同学可能找不到解决方法,所以在这里写一下。因为淋过…

2022java-web一条龙工具安装

@目录java安装java-jdk安装java环境变量配置java-eclipse工具安装Java-idea工具安装MySQL安装navicat安装tomcat安装maven安装配置本地仓库配置镜像配置jdk 备忘~安装常见的一些我需要的集成工具以及jdk java安装 java-jdk安装 1,去官网进行安装下载jdk2,找到下载jdk的文件位…

json/xml/schema

JSON JSON是JavaScript Object Notation的缩写&#xff0c;是一种轻量级的数据交换格式&#xff0c;是理想的接口数据交换语言。官网&#xff1a;https://www.json.org/json-en.html 工作json请求体&#xff1a; json字符串 hashmap对象 jackson库 json响应结果断言 语法…

堆优化dijkstra的两种写法

例题: https://www.acwing.com/problem/content/description/1131/ 1、仅用dis数组记录,出队时记录最小距离#include<bits/stdc++.h>#define fore(x,y,z) for(LL x=(y);x<=(z);x++) #define forn(x,y,z) for(LL x=(y);x<(z);x++) #define rofe(x,y,z) for(LL x=(…

瑞吉外卖git

文章目录&#x1f492; Git&#x1f68f; 1、Git 概述&#x1f680; Git 简介&#x1f684; 下载与安装&#x1f68f; 2、Git 代码托管服务&#x1f680; 常用的 Git 代码托管服务&#x1f684; 使用码云代码托管服务&#x1f6ac; 使用码云的操作流程如下&#xff1a;&#x1…

程序人生 | 编程的上帝视角应该怎么去找

前言 &#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于Linux内核/汇编/HotSpot/C/Java/源码/架构/算法 就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计&#x1f4eb; &#x1f3c6; CSDN专家博主/Java优质…

SpringBoot基于guava集成令牌桶算法

SpringBoot基于guava集成令牌桶算法一、什么是令牌桶1、令牌桶2、功能图二、Guava1、简单介绍2、pom引入3、限速器4、浅析重载方法三、系统应用1、单个接口应用2、多个接口应用一、什么是令牌桶 1、令牌桶 有一个固定大小的水桶&#xff0c;在水桶的水满之前&#xff0c;水龙…

无意中发现腾讯Java开发手册

RPC&#xff08;Remote Procedure Call&#xff09;—远程过程调用&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在&#xff0c;如TCP或UDP&#xff0c;为通信程序之间携带信息数据。在OSI…

【SpringCloud-Seata分布式事物】

简介 1、是什么 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 http://seata.io/zh-cn/ 2、 能干什么 3、处理过程 TM向TC申请开启一个全局事务&#xff0c;全局事务创建成功并生成一个全局唯一的XID&#xf…

Spark写入支持更新【源码二次开发】

在大数据开发过程中&#xff0c;遇到很多Spark写入mysql得场景&#xff0c;目前由于Spark仅支持以下几种 SaveMode: Append、Overwirte、ErrorIfExists、Ignore、ReplaceInto 由于在写入mysql时&#xff0c;需要数据根据主键进行更新&#xff0c;而不覆盖或追加&#xff0c;次…

交换机的工作原理

1 交换机的工作原理假设主机A要和主机B通信,交换机转发数据帧的过程如下: (1)MAC地址的学习和记录 A主机发送数据帧(源MAC地址为00-00-00-11-11-11,目标MAC地址为00-00-00-22-22-22)到交换机的1号接口,交换机首先查询MAC地址表中1号接口对应的源MAC地址条目。如果查询不…