在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3992|回复: 7

[求助] 关于uvm中的 接口port.get函数的使用 向请教一下

[复制链接]
发表于 2015-5-19 11:55:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近在学习UVM  看资料 在scoreboard中 有如下逻辑
task  my_scb::main_phase(uvm_phase phase);
my_transaction get_expect, get_actual;
bit result;

super.main_phase(phase);
fork
    while(1) begin
        exp_port.get(get_expect);
        expect_queue.push_back(get_expect);
    end
    xxxx


上面的expect_queue在scb 中已经声明过了,是个queue。
我的疑问是 TLM 接口 exp_port调用get函数,传入的transaction 给get_expect ,那么get_expect 不用实例化就直接可以用吗?
另外 expect_queue.push_back(get_expect); 也可以直接使用get_expect?  


求大神解惑 ,谢谢!
发表于 2015-5-19 14:32:17 | 显示全部楼层
引用传递。
发表于 2015-5-19 16:41:44 | 显示全部楼层
这个跟你定义exp_port时的那个#my_transaction是有关的,由uvm底层搞好了
 楼主| 发表于 2015-5-20 11:47:45 | 显示全部楼层
谢谢回复 我已经搞懂了
那个exp_port是个指针,指向了传入的tr,因此没有问题。所有后面的push_back是可以直接写的。
发表于 2015-5-20 13:23:58 | 显示全部楼层
virtual task get(output T t)
Provides a new transaction of type T.
The calling thread is blocked if the requested transaction cannot be provided
immediately.  The new transaction is returned in the provided output argument.
The implementation of get must regard the transaction as consumed.   Subsequent calls
to get must return a different transaction instance.
发表于 2015-5-20 13:27:35 | 显示全部楼层
回复 4# heroruirui


    个人认为这个和get这个task的定义有关,和指针没什么关系
发表于 2015-5-20 14:09:58 | 显示全部楼层
例子中的代码可能会有问题,当你收到不同的transaction的时候,而dut 的get_actual 经过的时间长一些的话,你会发现queue里面数据全部是一样的。
发表于 2015-5-20 19:15:49 | 显示全部楼层
想搞明白这个最好看下uvm的底层代码,看下exp_port中get是如何工作的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 22:11 , Processed in 0.024453 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表