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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6685|回复: 16

[求助] 求助:如何在UVM验证环境中增加某个时刻对DUT内部存储的读写?

[复制链接]
发表于 2012-11-16 14:28:38 | 显示全部楼层 |阅读模式

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

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

x
各位:
      接着折腾.
      已经有一个简单的UVM验证环境,为DUT产生驱动,并监控输出。然后,我们觉得只对输入输出port的数据进行监控还不大够,需要在适当的时候把DUT内部存储数据取出来进行一番比对。由于是刚接触UVM,好多还不懂的,所以上来问问大家该怎么弄。
     取出DUT内部的存储数据这个我倒是知道可以通过regmodel实现,但是问题是什么时候去取数。比如说DUT内部有A、B、C三个子模块,这三个模块都往内部存储中读写数据,而且是A处理完DUT输入数据之后送到memory中,然后B就可以开始取,做完处理之后还存到memory中,然后C接着取B处理完的数据,这样。所以,我需要A有个控制信号告诉我,什么时候我处理完了,然后我再去取regmodel的数据。
      那我目前还没想明白:
      1. 我怎么获取A中的这个控制信号,同事告诉我,各个模块中的控制信号有reg型的,也有wire型的。
      2. 使用regmodel的话,是放到sequence中用regmodel.ram.peek(Aaddr)来读取数据呢,还是写一个monitor,直接监控,但是用monitor的话,难道要把这些内部的信号都拉到port口么?
       不知道有哪位高人能帮帮忙呀?
发表于 2012-11-17 23:25:42 | 显示全部楼层
回复 1# oscillator_cn1


    尝试在测试顶层将带有层次化路径控制信号赋值给接口中一信号,然后在sequence中检测该接口控制信号时序关系应该可以实现的。
 楼主| 发表于 2012-11-19 14:19:03 | 显示全部楼层
回复 2# baddy2323


    也就是说,把内部信号连到顶层能访问的port口上,方便使用?
发表于 2012-11-20 22:04:58 | 显示全部楼层
本帖最后由 baddy2323 于 2012-11-20 22:17 编辑

回复 3# oscillator_cn1
   
  
         
     UVM中,基于class的动态ENV和基于module的DUT之间需要虚接口处理,通过在tb顶层将层次化路径信号,赋值到接口内部某个信号(按需求定义),一般虚接口都会在tb顶层通过uvm_config_db添加到global config resource database(或叫全局配置表)里面,然后在sequence里get该接口,通过检测接口信号发生变化来控制sequence进一步操作,这样应该是可以完成的。
     在其它如verilog或vhdl(通过Buffer)、可以通过层次化路径方式检测信号边沿的跳变或者其它情况,而执行相应的操作。   specman E由于没有虚接口概念都通过层次化路径方式检测信号边沿的跳变,触发相应事件,来控制sequence的执行顺序。
     我也是在学习当中,希望大牛赐教。
发表于 2014-6-3 18:05:41 | 显示全部楼层
回复 1# oscillator_cn1


    我的方法一直都是和2楼的一样,通过vertual interface把内部信号接出来,但是感觉好麻烦,如此做 感觉UVM还不如verilog直接层次化assign进去,希望哪位高手有更好的方法。。。期待中
发表于 2014-6-3 18:13:26 | 显示全部楼层
可重用是手段,但不是目的。
发表于 2014-6-3 18:48:49 | 显示全部楼层
如果需要reference DUT的信号比较少的话,直接在sequence里面可以使用层次化的方式拿到dut的signal,
例如按照你给的例子,那就是wait到dut的A的action done信号,就是wait(testbench.dut.A.done == 1'b1)这样。关于regmodel一般是frontdoor和backdoor两种方法,如果你需要verify 从dut interface到memory的data path的话就用前者,否者就用backdoor的方式,只需要简单的设置下memory的hdl path 就可以用了,很简单。
发表于 2014-9-10 14:04:04 | 显示全部楼层
在driver中,put_response(rsp)给sequence,
在sequence中get_response(rsp)根据rsp的value来判断发送不同的sequence。

不过要在driver中注册一下rsp的信息
发表于 2014-9-14 22:58:16 | 显示全部楼层
回复 7# hbhbts

直接在sequence里hierarchy到dut的信号会报错
发表于 2014-9-14 23:22:35 | 显示全部楼层
受益匪浅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-12-21 01:44 , Processed in 0.020922 second(s), 7 queries , Gzip On, Redis On.

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