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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: isliuhui

[求助] UVM的scb中比对时pop预期数据遇到恰好往预期数据的q里面push下个预期数据会不会造成干扰?

[复制链接]
发表于 2021-5-18 10:10:53 | 显示全部楼层


isliuhui 发表于 2021-5-17 18:33
谢谢回答,我的意见和您一样,在我自己以往的平台都是再用另外的句柄,这个平台接手同事的,他只new了一次,而 ...


可能是因为RM比DUT先出,所以没撞到两边一起访问expect句柄的情况。但是这种情况是可能存在的,一旦碰到,定位起来会十分的麻烦,所以不要共用一个句柄,从源头避免问题的出现。
发表于 2021-5-19 10:17:29 | 显示全部楼层
初学UVM,围观大佬们技术交流,有所收获,感谢
发表于 2021-5-24 00:21:47 | 显示全部楼层
这两段代码肯定是有竞争风险的。可以人为制造一些混乱,用#0强行让仿真器变换固有的执行顺序,可以用来检测这种代码风格的安全性。但是听起来你想要有一个确定的先push再pop或者先pop再push的执行顺序的话,应该加上trigger避免竞争。
 楼主| 发表于 2021-6-1 09:39:29 | 显示全部楼层


corinwjx 发表于 2021-5-24 00:21
这两段代码肯定是有竞争风险的。可以人为制造一些混乱,用#0强行让仿真器变换固有的执行顺序,可以用来检测 ...


感谢回复,请问您,这个#0是加零延时的意思吗?没有使用过这种方法,是怎么样的操作检测竞争风险?
发表于 2021-6-1 21:49:05 | 显示全部楼层
本帖最后由 corinwjx 于 2021-6-1 21:50 编辑


isliuhui 发表于 2021-6-1 09:39
感谢回复,请问您,这个#0是加零延时的意思吗?没有使用过这种方法,是怎么样的操作检测竞争风险? ...


这个我也没有亲自操作过,但是是从外网论坛上看到的一种打破固有执行顺序的方法。众所周知,fork...join中的操作应该是并发的,然而在仿真器中依旧有一先后方式,给那个固定先执行的线程加0时延,可以改变固有的执行顺序。我做了一个测试来验证:
program test;

  initial begin
    fork
      begin
        // #0ns;
        $display("This is thread 1");
      end
      begin
        $display("This is thread 2");
      end
    join

    $finish;
  end

endprogram



把#0注释掉,在我的仿真器中永远都是 先有 thread 1再有 thread 2。但是加了0时延后,就变成了先有 thread 2再有 thread 1.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-14 19:23 , Processed in 0.017099 second(s), 6 queries , Gzip On, Redis On.

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