uvm TLM

477 阅读3分钟

TLM相关misc

0. 三种mode:put/get/fifo

在这里插入图片描述

  • put_port/ap/fifo是需要new来构造,和factory无关;
  • export是中间层过渡;
    在这里插入图片描述

get_export 需要new
在这里插入图片描述

  • fifo可以定义深度
  • new的时候第三个参数size就是深度;默认是1
  • 除了需要缓存数据的时候用fifo,一般都用ap
    在这里插入图片描述
  • ap也需要new
    在这里插入图片描述

1. TLM通信只能在component之间进行,需要component和sequence,sequence之间通信可以使用uvm_event;

2. 同步不仅限于同一个组件的不同线程之间;还包括不同组件之间的同步

3. initiator/target/producer/consumer

  • initiator object: 谁首先发起通信的要求,谁就属于initiator,
  • target object:谁作为发起通信的响应方,谁就属于target
  • 通信发起方并不代表了transaction的流向起点,即不一定数据是从initiator流向target,也可能是从target流向了initiator。
  • 按照transaction的流向,我们又可以将两个对象分为producer和consumer。
  • producer: 数据从哪里产生,它就属于producer

4. 端口类型(三种)

  • port:经常作为initiator的发起端,也凭借port,initiator才可以访问target中实现的TLM通信方法。
  • export:作为initiator和target中间层次的端口。
  • imp:只能是作为target接收request的末端,它无法作为中间层次的端口,所以imp的连接无法再次延伸。

imp在一个传输中只能有一个

5. TLM2.0不用

6. 这些port的父类不是component,但是他们和component一样在整个仿真过程中是始终存在的;

7. 多个analysis_imp

在这里插入图片描述
在这里插入图片描述

8.同步的机制 eventbarrier/pool等(了解)

uvm event/barrier/pool

12、什么是TLM ports和exports?

在事务级别建模中,不同的组件或模块使用事务对象进行通信。TLM port定义了用于连接的一组方法(API),而这些方法的具体实现称为TLM exports。

TLM port和export之间的连接建立了两个组件之间的通信机制。producer可以创建事务并将其“put”到TLM端口,而“put”方法实现(也称为TLM export)将在consumer中读取producer创建的事务,从而建立通信渠道。

14、TLM上的get()和peek()操作之间有什么区别?

get()操作将从TLM FIFO返回一个事务(如果存在的话),并且还会从FIFO中删除该事务。如果FIFO中没有可用的事务,它将阻塞并等待,直到FIFO至少有一个事务。
peek()操作将从TLM FIFO返回事务(如果存在的话),而无需从FIFO中删除该事务。这也是一个阻塞调用,如果FIFO没有可用事务,它将等待。

16、analysisports和TLM ports之间有什么区别?analysisFIFOs和TLM FIFO有什么区别?analysis ports/ FIFO在哪里使用?

TLM ports/ FIFO用于两个组件之间的事务级别通信,这两个组件具有使用put/get方法建立的通信通道。Analysis ports/FIFOs是另一种事务通信通道,用于组件将事务广播到多个组件。
TLM ports / FIFO用于driver和sequencer之间的连接,而analysis ports/FIFOs用于monitor将接收的事务广播到scoreboard或reference model


待整理内容

uvm设计分析——tlm
在这里插入图片描述

在这里插入图片描述
UVM通信篇之六:同步通信元件(上)
在这里插入图片描述
在这里插入图片描述