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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2487|回复: 6

[原创] 如何在testcase中对某个sequence中的成员和某个组件的成员进行操作?

[复制链接]
发表于 2020-10-14 16:46:50 | 显示全部楼层 |阅读模式

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

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

x
1.如何在testcase中对某个sequence中的成员进行操作?
对于某些较为特殊的场景,如正常传输包的过程中进行复位操作,然后继续发下一笔。
那么此时在sequence中可能会有残余包(如保存的rsp包),这样会影响下一笔包的传输。
当我们定位到由于sequence中某个队列中有残余的包影响下一笔的传输。可以直接在seqence中的
例化层级上进行操作。
如在base_test中进行sequence的创建,可直接对sequence进行操作。

image.png
2.如何在testcase中对某个UVM组件中的成员进行操作?如对driver中的某个队列进行删除。
driver和sequence相比,一个是UVM组件,一个是object;要对其进行操作的话,都得找到他们的
位置即可进行操作。
driver一般在agent中例化,而agent又在env中例化,所以要在testcase这个层级对driver中的成员进行操作,就要找到driver所处的位置,而这个位置就是一层层的实例化名。找对这个名字即可对齐进行操作。如下面所示,在testcase中清空driver的某个队列。

image.png
image.png
image.png
image.png
image.png
发表于 2020-10-14 17:17:21 | 显示全部楼层
uvm貌似有个全局的pool, 可以根据class名找到inst, 然后cast转化下就能调用dirver中的变量了,这也是一种方法。不过这种在tc里控制driver的参数,是否有其他方式可以规避。
发表于 2020-10-14 17:47:14 | 显示全部楼层
组件里面一般都会加动态复位的检测进程
 楼主| 发表于 2020-10-14 17:55:17 | 显示全部楼层
uvm中的pool的话没有用到过,兄台可以说的再仔细些,我可以下去试试。
至于在tc中要控制driver中的参数,是因为测试场景比较特殊,算是一个corner case了。场景:master发送一笔包到slave中,在master收到slave回复之前进行复位,然后发送第二笔。这个场景的目的是测试DUT在随机复位的情况下,对复位之后的包的传输有没有影响。
对于测试平台来讲的话,我第一笔包master没有收到回复,那些在driver或者sequence中都会有一些残包,那么我就只能在tc中对其进行清理了,要不然会阻塞后面的包的。
同时在tc中写的话,对台子没啥影响,成本低。
 楼主| 发表于 2020-10-14 18:04:07 | 显示全部楼层


半机器蔡 发表于 2020-10-14 17:47
组件里面一般都会加动态复位的检测进程


特殊场景,force复位信号
发表于 2020-10-15 10:25:50 | 显示全部楼层


gzy123456789 发表于 2020-10-14 17:55
uvm中的pool的话没有用到过,兄台可以说的再仔细些,我可以下去试试。
至于在tc中要控制driver中的参数 ...


uvm_root这个class里有个find()的method, 根据string找到component 的handle。在tc里可以通过例化结构找到driver的句柄,因为tc是最顶层,如果有更奇葩的使用,在monitor控制driver里的参数,那么就不能简单使用例化结构找句柄了,需要调用uvm_root中的函数。uvm_top也是uvm_root唯一的例化。uvm_root里的函数感觉都挺有用的,比如print_topology(), set_timeout().
发表于 2020-10-15 10:42:16 | 显示全部楼层


gzy123456789 发表于 2020-10-14 18:04
特殊场景,force复位信号


都可以处理,这种机制主要就是用来处理动态复位等场景
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-14 22:23 , Processed in 0.022408 second(s), 7 queries , Gzip On, Redis On.

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