前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈UVM中事务级建模(TLM)的uvm_tlm_fifo

谈谈UVM中事务级建模(TLM)的uvm_tlm_fifo

作者头像
AsicWonder
发布2020-06-28 16:37:35
1.2K0
发布2020-06-28 16:37:35
举报

在前面文章的producer和consumer示例中,只存在一个进程。producer调用put时执行了consumer中的put方法,consumer调用get时执行了producer中的get方法。

在实际验证环境中你会遇到需要将进程1中的producer_1连接到进程2中的consumer_2的情况,因为TLM组件需要在自己的进程中工作(解耦合)

连接producer_1组件和consumer_2组件的一种非常常见的方法是使用uvm_tlm_fifo组件。uvm_tlm_fifo是参数化的FIFO以指定存储在fifo中的对象类型,具有put export和get exports。uvm_tlm_fifo的构造函数具有一个用于指示fifo的最大深度(默认为1)的参数。

代码语言:javascript
复制
class producer_1_consumer_2 extends uvm_component;
 producer_1 producer1_inst;
 consumer_2 consumer2_inst;
 uvm_tlm_fifo#(simple_packet) fifo_inst; // fifo stores simple_packets
 function new(string name, uvm_component parent);
 producer1_inst= new("producer1_inst", this);
 consumer2_inst= new("consumer2_inst", this);
 fifo_inst= new("fifo_inst", this, 16); // set fifo depth to 16
 endfunction

 virtual function void connect();
 producer1_inst.put_port.connect(fifo_inst.put_export);
 consumer2_inst.get_port.connect(fifo_inst.get_export);
 endfunction
 endclass

运行此代码时,producer_1组件中将创建的数据包存储到fifo中,consumer_2组件调用get方法从fifo中取出数据。

由于存在FIFO,producer_1组件进程和consumer_2组件进程之间的同步现在已经解耦。任何一个进程都可以添加任意延迟, fifo和阻塞put/get调用的使用可确保不会丢失任何数据包,这也使得验证平台的搭建更加容易。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字芯片实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档