首页 > 其他分享 >TLM通信总结1

TLM通信总结1

时间:2022-09-04 18:00:29浏览次数:63  
标签:总结 事务 调用 get 通信 阻塞 组件 TLM

事务级建模 (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 调用是非阻塞调用

总结:

 

标签:总结,事务,调用,get,通信,阻塞,组件,TLM
From: https://www.cnblogs.com/fuqiangblog/p/16644737.html

相关文章

  • 数据结构与算法【Java】05---排序算法总结
    前言数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就......
  • 开学第一周周总结
    本周周三开学,学习内容也不太清楚学习了什么,上课记了一些笔记,然后课后有去研究明白。其次是要求总结的内容:之前总计发表博客:137日常学习的内容:110冲刺的内容一共:6杂七......
  • 第七章-与微服务通信
    使用HttpClient类首先创建一个新的BlazorWASM项目(启用托管),就像您在第一章中创建的一样(称为Blazor.Communication)。您将使用此项目来检查为您创建的模板。您将从查......
  • 第九周总结
    开始上课 还没搞定hadoop1、集群规划安装VMware,使用三台Ubuntu18.04虚拟机进行集群搭建,下面是每台虚拟机的规划:主机名 IP 用户 HDFS YARNhadoopWyc 待定 wyc NameNod......
  • SVN使用教程总结
    SVN简介:为什么要使用SVN?程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。Subversion......
  • 2022-2023-1 20221306《计算机基础与程序设计》第一周学习总结
    班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业链接:https://www.cnblogs.com/zhanquanchen/p/16654783.html作业目标:快速浏览教材作业正文:https://www.cn......
  • 总结90条写Python程序的建议
    首先建议1、理解Pythonic概念—-详见Python中的《Python之禅》建议2、编写Pythonic代码(1)避免不规范代码,比如只用大小写区分变量、使用容易混淆的变量名、害怕过......
  • 2022-2023-1 20221311《计算机基础与程序设计》第一周学习总结
     作业信息班级:https//edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https.//www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标:快速浏览教材作业正文:http......
  • 2022-2023-1 20221313《计算机基础与程序设计》第一周学习总结
    2022-2023-120221313《计算机基础与程序设计》第一周学习总结作业信息班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业链接:https://www.cnblogs.com/zh......
  • 2022-2023-1 20221319《计算机基础与程序设计》第一周学习总结
    作业信息班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标:快速浏览教材作业正文:http......