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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5067|回复: 14

[讨论] 请教UVM问题,sequence切换问题

[复制链接]
发表于 2016-3-13 03:52:03 | 显示全部楼层 |阅读模式

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

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

x
遇到一个uvm验证问题,DUT开始时使用一个sequence, 当DUT产生一个结束信号后,UVM希望立即知道,也就是说没有任何延迟,不能用monitor检测,因为那样会有延迟,如何设计呢?
发表于 2016-3-15 19:06:15 | 显示全部楼层
建立寄存器模型映射关系,通过backdoor访问该寄存器,不会消耗仿真时间
发表于 2016-3-19 17:18:31 | 显示全部楼层
是否可以在环境中直接应用DUT的信号?
发表于 2016-3-21 16:07:54 | 显示全部楼层
回复 2# AnswerLJ
如果backdoor没有等到信号变化,你什么时候读下一次?如果立刻读,这就是一个dead loop。monitor采样数据,和有没有延迟没关系。
发表于 2016-3-21 16:42:32 | 显示全部楼层
backdoor访问跟monitor有关系吗;
而且楼主描述的场景就是以sequence 为颗粒的模型吧,我以此寄存器的值为选择条件把这个sequencer做成死循环也是可行的啊;
不想用backdoor访问的方式,也可以直接在DUT里插 断言触发event 送出事件来控制,跟backdoor访问 我没有发现有什么区别;
发表于 2016-3-21 17:04:34 | 显示全部楼层
不消耗时间的死循环,会导致仿真无法继续下去。
典型的等待寄存器状态的代码:
while (status == 0) begin
    reg_read(addr, status);
end
对于frontdoor没有任何问题,如果变成backdoor,如果第一次读到的状态是0,那么仿真器会永远执行这三条语句。
根据uvm方法学,sequence是可能被复用到top dv的,所以sequence里面不应该出现绝对路径。虽然这么写不会报错,但是这种是verilog风格的testbench。
发表于 2016-3-21 17:18:27 | 显示全部楼层
这根本就不是UVM问题啊,so easy,直接把dut的信号拉出来。
例如@(posedge tb.dut.a.b.c)这样就可以了
发表于 2016-3-21 17:42:18 | 显示全部楼层
回复 7# luyaker

一般只有verilog的testbench才会这么做。另外,要指出的是很多设计并不适合用UVM来验证,有时候用verilog完全可以,而且效率更高。
发表于 2016-3-21 19:50:56 | 显示全部楼层
你在sequence layer中的死循环是这样写的吗?

while(1){
reg_read(addr,value,UVM_BACKDOOR);
if(status == 1)
     `uvm_do(...)
else
     `uvm_do(...)
}

这本身下激励就是整体的颗粒为基础单元的,难道你能在发一个sequence过程中强制 拉断换下一个?这不是扯淡吗
发表于 2016-3-22 08:11:24 | 显示全部楼层
本帖最后由 hover99 于 2016-3-22 08:16 编辑

你先看清lz的要求,他要求无延迟等待dut的结束信号,你自己看看你的代码,从read到下一次while(1)有延迟吗?你还不如luyaker的方法靠谱。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-24 00:32 , Processed in 0.029739 second(s), 9 queries , Gzip On, Redis On.

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