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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2060|回复: 8

[求助] 请教如何在mon中调用drv里的function/task呢。

[复制链接]
发表于 2019-8-4 13:34:31 | 显示全部楼层 |阅读模式

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

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

x
问下我想在mon中调用drv的function,写的是 xxx = top.uvm_test_top.env.iagt.drv.funtion(x); 报错,找不到uvm_test_top这个路径。一般test case例化的名字是什么?这种按照例化结构调用可行吗。只知道在tc中调用drv的task可以。谢谢各位。
发表于 2019-8-5 15:14:25 | 显示全部楼层
因为tc里面例化有env,所以可以看到下面分支的。UVM的架构原本就是让monitor和driver独立,为什么你要考虑前者调用后者的函数呢?如果一定要用,你试试不要写第一个top;如果还是不行,可以查一下书上UVM的最根部是什么。我没像你这么用过,建议不要这么互相调用。
发表于 2019-8-5 16:17:12 | 显示全部楼层
top是verilog的概念,uvm_test_top是uvm树形拓扑结构的根,这相当于在两个编译空间的东东,
 楼主| 发表于 2019-8-6 14:27:24 | 显示全部楼层


gaurson 发表于 2019-8-5 15:14
因为tc里面例化有env,所以可以看到下面分支的。UVM的架构原本就是让monitor和driver独立,为什么你要考虑 ...


承接的别人的tb,我已经把task放在一个公共调用的class里了。但是不明白这里为啥通过这种调用不行呢。查了书,uvm根部的实例是uvm_top。test_case的实例是uvm_test_top.使用xxx = uvm_top.uvm_test_top.env.iagt.drv.funtion(x)或者 xxx = uvm_test_top.env.iagt.drv.funtion(x) 都是报查找不到uvm_test_top这个component。
发表于 2019-8-6 16:58:07 | 显示全部楼层
uvm_top和test_top层不是简单的例化关系,不能直接用这种方法引用。我试了下,可以通过uvm_top.top_levels.pop_front(),得到uvm_test_top的句柄。或者也可以uvm_top.find("uvm_test_top")返回uvm_test_top句柄,当然也可以直接用drv的路径返回drv的句柄。
 楼主| 发表于 2019-8-6 18:15:51 | 显示全部楼层


huaihui 发表于 2019-8-6 16:58
uvm_top和test_top层不是简单的例化关系,不能直接用这种方法引用。我试了下,可以通过uvm_top.top_levels. ...


非常感谢,这些源码的东西还没看过。不过我试了,还是不行,哪里用错了吗?在 mon里 uvm_component tc_handle;
               tc_handle = uvm_top.top_levels.pop_front();
                xxx = uvm_top.tc_handle.env.iagt.drv.funtion(x);
报错:tc_handle is not a class item;


发表于 2019-8-6 19:21:33 | 显示全部楼层


年轻的韭菜 发表于 2019-8-6 18:15
非常感谢,这些源码的东西还没看过。不过我试了,还是不行,哪里用错了吗?在 mon里 uvm_component tc_ ...


pop_front返回的就是 uvm_test_top句柄,不用uvm_top.XXX,另外他返回的类型是uvm_component , 你要用 driver的函数,需要cast转化成driver类型才能用driver函数。
发表于 2019-8-6 19:42:21 | 显示全部楼层
因为工具在编译的时候只会检查当前类中是否有对应的成员,你的mon里根本没有uvm_top之类的成员,所以就报错了。
UVM本身建立了树形结构,所以5楼提供的方法是可行的。但是你定义的tc_handle是uvm_component类型,这里面当然也找不到你的env之类的。你需要做一次cast操作,把指针定义成你自己的component,比如你的case,然后才能使用。
 楼主| 发表于 2019-8-7 11:15:10 | 显示全部楼层


idealm 发表于 2019-8-6 19:42
因为工具在编译的时候只会检查当前类中是否有对应的成员,你的mon里根本没有uvm_top之类的成员,所以就报错 ...


还是不太明白,能发下具体代码实现吗,谢谢、
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-14 17:59 , Processed in 0.021638 second(s), 6 queries , Gzip On, Redis On.

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