第七段:blocking/noblocking的传播,TLM_fifo的使用

 

 

1)基础用法:

首先我们需要造一个喇叭,也就是create一个uvm_blocking_put_port ;

然后要找来听众,也就是在另外一个component里面create一个uvm_blocking_get_port ,注意这里用的是get_port而不是put_port了。

把听众的位置记录在一个小本本上,也就是在env或者test里面执行analysis_base库的connect函数。要注意的是,由于我们往里面加了FIFO,所以我们需要先造一个FIFO出来,然后把FIFO跟前面两步造的喇叭uvm_blocking_put_port 和听众m_get_port连接起来。

让听众接受到广播之后做出反应。这时候不用再去实现了,直接写通过get拿到pkg之后要干什么就可以了,当然要强行实现一下get我想也是可以的。如果这里变得了使用nonblocking的话,把get改成try_get就好

2)项目升级用法:与上一致;

3)底层原理分析:

常用的连接:port接imp,export接imp,port接port,export接export。

实际使用中用analysis_portàanalysis_imp 还是 portàtlm_analysis_fifoßport 可以根据实际情况自己决定。put和get系列端口与相应imp的通信通常是一对一的(可以一对多,但是本书没有给出一对多的例子

使用uvm_analysis_fifo(uvm_tlm_analysis_fifo), analysis_fifo的本质是一块缓存+两个imp.  用fifo来实现portàfifoßport,fifo上有很多export,但是这些export实际都是imp。

使用fifo还是imp自己来把握。 各有各的好处。

imp可以使用uvm_analysis_imp_decl(_标记)的macro,有时候会很方便。

而analysis_fifo可以用for循环来操作fifo数组,也可以带来代码的简洁。 imp不能在connect和new的时候用for循环。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃辣椒的年糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值