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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1532|回复: 4

[求助] 请教一个UVM的环境的实现问题

[复制链接]
发表于 2018-12-23 17:46:13 | 显示全部楼层 |阅读模式

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

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

x
现在项目中继承了之前的UVM 环境,不能大改,想要添加个新功能,发现不知道怎么搞,请大神给个简单的方法。
具体需求是:

DUT中有一个RAM,存放计算的数据
reference model(RM)中也实现了一个数组,表示这个RAM

原来的seqence中每次在启动计算前,会随机地址和数据,并发出加载memory的item,driver向DUT发出接口时序,
然后monitor采到数据,送给RM,并写入RM_RAM。

但是现在希望节省时间,不用真实的接口写RAM,而是通过后门加载RAM。问题就是这种后门加载方式,monitor不
采样,所以RM_RAM不会被写入,会比对错误。

请问有什么好的办法解决??
发表于 2018-12-23 21:51:34 | 显示全部楼层
很多方式都可以实现的,我最熟悉的是用VPI的callback来实现:具体是注册cbValueChange类型的回调函数,当RAM区域任何地址的值发生变更,就调用回调函数将DUT的RAM中的变更值镜像到monitor中。
当然你也可以不使用VPI来实现这种需求,比如预先定义drv和mon都可以访问的公共的memory类型变量,但是这种方式你要保证mon不会修改该公共变量。
殊途同归,看你喜欢怎么实现咯。
 楼主| 发表于 2018-12-23 22:09:38 | 显示全部楼层
回复 2# saipolo

谢谢回复。

“cbValueChange类型的回调函数,当RAM区域任何地址的值发生变更“

请问这个是怎么实现的? 是要在monitor中拉DUT RAM的信号出来监控么?
 楼主| 发表于 2018-12-26 21:10:40 | 显示全部楼层
已经解决了. 我定义了一个class,里面包含ram.然后在env用uvm_config_db::set
然后在用的地方都uvm_config_db::get,这样就实现了共享ram
发表于 2018-12-28 17:18:51 | 显示全部楼层
我提供一个笨办法,在p_sequencer中例化一下scb,然后你sequence每次启动前,也可以通过p_sequencer.scb.ram加载一下数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-25 03:57 , Processed in 0.016572 second(s), 7 queries , Gzip On, Redis On.

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