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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4366|回复: 3

[求助] uvm中,tb_top如何和VIP沟通?

[复制链接]
发表于 2018-4-26 21:12:14 | 显示全部楼层 |阅读模式

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

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

x
uvm的Testbench, tb_top要等vip.agent的state machine 进入一个状态,怎么做比较好?

如果是sv的bench,会用wait(tb.vip.agent.shared_status == state_A); 但在uvm testbench中,好像tb_top不可以访问env,否则就用wait(tb.top_env.vip.agent.shared_status == state_A)了。

本来想把state映射到interface中,但state是vip自己用enum定义的一个类型。

大家有好的办法吗?
发表于 2018-4-29 22:10:07 | 显示全部楼层
不知道你的tb_top是指的什么?是指的dut和interface例化的那个模块吗?如果是这样的话,好像这个tb_top是看不道env的层次;
你说的将state引入道interface当中的确是可行的;不管它是什么类型的;你在interface中定义一个wait_state_a_ok信号;然后在monitor/driver中加一个
fork
while(1) begin
wait state== state_a;
harness.wait_state_a_ok = 1;
end
join_none

以上就好了;


不过话说回来,你为啥非要在tb_top里面去作这些事儿,而不是你的用例里面或者env中?

一般来说,tb_top里面只作三件事儿,例化连接dut/interface/clk_gen/
 楼主| 发表于 2018-4-30 14:00:48 | 显示全部楼层
哈哈,UVM我不是很熟,才用了一年左右。

tb_top is the top level, dut and instance will be instantiated inside.

So the absolute hierarchy path is tb_top.dut.xxx, and tb_top.dut.xxx_iinterface, ...

这样做是因为SOC一边用C写的测试,外面接了一个买来的VIP,但我们的firmware还没好,只能自己写一些简单的测试C程序。C程序需要知道外面vip的status。我想到的是在interface中把VIP的state映射过来。

还有一种想法是C程序通知testcase, testcase再做state的等待。

觉得第二种合理一些。
发表于 2018-4-30 22:02:58 | 显示全部楼层
其实只要调用合适,tb也是可以直接访问VIP中的东西的。不过应该不会有什么教程会建议你这么使用。
如果你使用的是正常的seq作为测试用例的话,可能有几种方式可以实现你的需求;
1、seq中直接find到对应的agent,最简单,但是一般不推荐
2、通过config_db共享cfg比较容易实现
3、interface,其实可以考虑一下interface class这个玩意
4、各种sv或者UVM的同步机制

C程序的话,由于不清楚你们C是如何调度的。如果C是编译成bin给CPU直接执行的话,那么可能有点麻烦,需要多折腾一下;如果是在sv中直接执行C语言的话,我觉得应是可以通过export和import的方法实现一些状态查询的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-9-22 05:20 , Processed in 0.015516 second(s), 6 queries , Gzip On, Redis On.

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