首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UVM端口: put、get、导出、分析

UVM端口: put、get、导出、分析
EN

Stack Overflow用户
提问于 2016-01-22 01:48:19
回答 1查看 3.5K关注 0票数 0

我试图掌握UVM,并在UVM端口中完全丢失。请帮助更好地理解港口。

因此,据我所知,有三种主要类型的端口

  1. Put-> get :生产者、put数据和消费者获取数据。这是阻塞语句。
  2. 放->出口->进口
  3. 分析->订阅者:生产者传输数据,其他订户获得数据.这是非阻塞语句。

还有TLM_FIFOs,它允许缓冲事务以供以后使用。它有两种类型:uvm_tlm_fifouvm_tlm_analysis_fifo

我的问题是:

  1. 我的理解对吗?
  2. 出口和出口有什么区别?
  3. uvm_tlm_fifouvm_tlm_analysis_fifo有什么区别?

谢谢

哈克

EN

回答 1

Stack Overflow用户

发布于 2016-01-22 05:06:07

TLM接口的使用将每个组件与整个环境中其他组件的更改隔离开来。

为了理解端口,有两个常见的术语:ProducerConsumer。而不是生产者和消费者,考虑从启动器目标组件之间的通信。

启动器总是有一个端口连接到它。就像驱动程序有seq_item_port. 目标总是有一个导出。就像测序器有seq_item_export.一样

对于Put/Get端口:

代码语言:javascript
复制
Initiator/Producer:
port.put(tr);

Target/Consumer: (Note the Input in task)
task pet(input simple_trans t);
//...
endtask

put端口中,启动器producer,它为使用者E 232放置事务。启动器/生产者阻止,直到目标/使用者解除了put任务的阻塞。

代码语言:javascript
复制
Initiator/Consumer:
port.get(tr);

Target/Producer:(Note the Output in task)
task get(output simple_trans t);
//...
endtask

在get端口中,发起者是使用者。使用者请求/请求事务,而生产者提供它。Initiator/Consumer阻塞,直到get任务被目标/生产者解除阻塞为止。

put/get端口通常用于具有系统的操作行为。这些端口用于一对一通信.

分析端口通常用于广播事务。写方法始终是非阻塞。可能存在用于分析端口的零连接或多个连接。同样,发起者和目标的规则保持不变。

代码语言:javascript
复制
Initiator:
port.write(tr);

Target:(Note the function, not task)
function void write(simple_trans tr);
//...
endfunction

所有端口都需要在用户类中实现方法。uvm_*_imp用于相同的目的。而缓冲数据的可以通过FIFO来完成。

对于分析端口,使用uvm_analysis_fifo,因为这些FIFO必须具有进一步广播事务的能力。分析FIFO的默认大小是无界。

当使用put/get端口时使用uvm_tlm_fifo,即一对一通信。分析FIFO的默认大小是1,可以更改为无界。

同样,FIFO总是在从组件请求时将/获取数据,从此以后,两端都有导出类型的连接。

有关更多信息,请参见UVM用户指南

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34937677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档