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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: 许晴125

[求助] UVM objection

[复制链接]
发表于 2022-1-22 21:46:12 来自手机 | 显示全部楼层
这个应该是当一个drop之后count为0时,会唤醒execute scheduled那个线程,但是有可能在这个线程执行期间又一个raise起来了,这时候uvm的这一系列操作就是删除接下来要进入drain操作的objection信息使得他不会被真正dropp掉,因为这时相当于是reraise了他。意思大概就是这么个意思,不知道表述清楚了没。看过源码的话应该能理解吧…
发表于 2022-1-22 21:49:44 来自手机 | 显示全部楼层
包括diff_count那一块是为了比较这次raise的count和上次drop的count做一个比较,因为有可能上次drop count是10,这次raise count只有1,那么最后还是需要再次进入那个真正的drop线程的
 楼主| 发表于 2022-1-24 09:23:54 | 显示全部楼层


sfc19910705 发表于 2022-1-21 15:46
`uvm_info(get_name(),"drop 2nd",UVM_LOW)
  phase.drop_objection(this);
  phase.phase_done.display_ ...


感谢回复,这个地方我的理解就是正常的objection机制,不就是做了drop raise以及total_count的计数吗?
 楼主| 发表于 2022-1-24 09:25:52 | 显示全部楼层


ryanhunter 发表于 2022-1-22 21:46
这个应该是当一个drop之后count为0时,会唤醒execute scheduled那个线程,但是有可能在这个线程执行期间又 ...


也就是这块是在执行total_count = 0的时候,drop/raise objection的情况?这种情况下是要被忽略掉的?

 楼主| 发表于 2022-1-24 09:27:06 | 显示全部楼层


ryanhunter 发表于 2022-1-22 21:49
包括diff_count那一块是为了比较这次raise的count和上次drop的count做一个比较,因为有可能上次drop count ...


大佬,能再讲清楚一些吗?还会没有太理解
发表于 2022-1-24 12:46:34 来自手机 | 显示全部楼层


许晴125 发表于 2022-1-24 09:27
大佬,能再讲清楚一些吗?还会没有太理解


手机码字可能说的比较混乱……。关于diff count,你可以先看一下通常的drop流程,比如第一次raise带count 10,会记录total_count【obj】和total_count【top】为10,然后接下来drop带count 10,你会发现这个时候total_count【obj】是0,但是total_count【top】是10。那这个时候如果有个re-raise,他就需要做个判断。假设reraise的count是1,也就是说做完reraise,需要total_count【top】变为1,可是当前total_count【top】是10,所以需要调用一个对top的drop,drop的数量是1-10取反,也就是9,如果reraise的count是11,则只需要给top raise一个count 1就够了,这样total_count【top】就会变成11。然后再下次接着做drop就不会有问题了,否则会导致phase那边的退出可能会有问题,因为phase是会去看total_count【top】的
发表于 2022-1-24 12:54:51 来自手机 | 显示全部楼层


许晴125 发表于 2022-1-24 09:25
也就是这块是在执行total_count = 0的时候,drop/raise objection的情况?这种情况下是要被忽略掉的?

...


execute scheduled forks这个线程如果正常执行下去的话会结束当前phase,当这个线程走到一半的时候如果出现一个raise那么就需要让这个线程停止,uvm这里对这块停止功能的实现就是去那些队列里面搜,搜到想要停止的context就把他拿出来并且从队列里面删除,这样scheduled forks就会在一半的时候被关掉了,然后继续等下一次有效drop和total_count为0的时候。所以这个机制主要是为了total_count=0的时候又来一个raise objection的情况,drop objection跟这块没啥关系
发表于 2022-1-24 13:42:22 | 显示全部楼层


许晴125 发表于 2022-1-24 09:23
感谢回复,这个地方我的理解就是正常的objection机制,不就是做了drop raise以及total_count的计数吗?
...


你没有看到我之前发的那个图吧
 楼主| 发表于 2022-1-26 11:54:28 | 显示全部楼层
本帖最后由 许晴125 于 2022-1-26 13:59 编辑


sfc19910705 发表于 2022-1-24 13:42
你没有看到我之前发的那个图吧


图倒是看了,按照我的理解就是在所有的count = 0 的时候,1 drop_objection + 2 raise_objection => total_count +1 这不就是objection的正常的机制吗?麻烦大佬解说一下这张图?
image.png
image.png
image.png
 楼主| 发表于 2022-1-26 14:13:07 | 显示全部楼层


ryanhunter 发表于 2022-1-24 12:46
手机码字可能说的比较混乱……。关于diff count,你可以先看一下通常的drop流程,比如第一次raise带count ...


reraise我看是在uvm1.1d的版本中才会有这个变量,我这个版本是UVM1.2的版本,好像有些不同。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-3-29 22:04 , Processed in 0.029361 second(s), 8 queries , Gzip On, Redis On.

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