ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TLM通信总结1

2022-09-04 18:00:20  阅读:161  来源: 互联网

标签:总结 事务 调用 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
来源: https://www.cnblogs.com/fuqiangblog/p/16644737.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有