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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5696|回复: 24

[求助] UVM objection

[复制链接]
发表于 2022-1-20 17:40:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 许晴125 于 2022-1-26 14:17 编辑

最近整理了一下UVM phase以及objection对应的源码,我把所有的核心的代码抽象了一下,用伪代码把所有的相关的function/task整理了一下。
UVM源代码的版本是UVM1.2
https://www.edrawmax.cn/online/s ... 1ec8a7585ec8adb0e95
大体的思路,我理解的是raise_objection和drop_objection,会通过递归的方式更新m_total_count[],类似于下图:

image.png

等到m_total_count == 0的时候,m_init_objection函数会被唤醒。进而trigger.all_drop event,然后execute_phase wait_for(all_drop),m_state=[size=13.3333px]UVM_PHASE_READY_TO_END.完成一个phase
image.png

但是,有个地方没有看懂m_raise的函数里面,我就对一个简单的case的通路能整理清楚,但是这里实在不太理解是在做什么?

image.png
image.png

image.png
 楼主| 发表于 2022-1-20 17:44:58 | 显示全部楼层
难道是所有的raise_objection/drop_objection之后,但是set_drain_time之前有再次有raise_objection/drop_objection的操作?
发表于 2022-1-20 19:44:38 | 显示全部楼层
你搞这个干嘛,把objection里的process怎么实现搞明白就行了。
发表于 2022-1-20 22:50:31 来自手机 | 显示全部楼层
没人回答的话等几天我回答,最近有点忙,这个部分我上次看也差不多一年了
 楼主| 发表于 2022-1-21 09:13:13 | 显示全部楼层


年轻的韭菜 发表于 2022-1-20 19:44
你搞这个干嘛,把objection里的process怎么实现搞明白就行了。


我觉得但看UVM其实就那点东西,但要是看细节追原因,还是源码能解开疑惑。源代码能够让人知其所以然。
 楼主| 发表于 2022-1-21 09:15:22 | 显示全部楼层


eaglezhang01 发表于 2022-1-20 22:50
没人回答的话等几天我回答,最近有点忙,这个部分我上次看也差不多一年了 ...


我看了也有小一个月了,有些地方还是理解不了,如果没人点播一下的话,估计会一直卡在这里。希望大佬带我飞~~~~~

发表于 2022-1-21 10:44:21 来自手机 | 显示全部楼层


许晴125 发表于 2022-1-21 09:13
我觉得但看UVM其实就那点东西,但要是看细节追原因,还是源码能解开疑惑。源代码能够让人知其所以然。
...


确实,uvm能用起来其实不难,绝大部分人也只停留在这个会用的阶段,可是也真的是在会用这个阶段,不太会有进一步的创新,目前已有的书上讲了的点会用,可是有的技巧是目前书上没有的讲的,看源码能看到别人是怎么解决一个实际问题的,这个过程一定能学到新的知识
发表于 2022-1-21 10:45:20 来自手机 | 显示全部楼层


许晴125 发表于 2022-1-21 09:15
我看了也有小一个月了,有些地方还是理解不了,如果没人点播一下的话,估计会一直卡在这里。希望大佬带我 ...


这个部分确实难
发表于 2022-1-21 15:39:31 | 显示全部楼层
是的,下面的这一整部分都是在处理outstanding的objection drop, 细分成m_scheduled_list,m_forked_list, m_forked_contexts,如果没有outstanding的objection drop,直接向上更新total count, 如果有outstanding 的objection drop, 要根据outstanding 的 drop objection个数和准备raise 的 objection个数向上更新total count.

Capture.JPG
发表于 2022-1-21 15:46:08 | 显示全部楼层
  `uvm_info(get_name(),"drop 2nd",UVM_LOW)
  phase.drop_objection(this);
  phase.phase_done.display_objections();
  `uvm_info(get_name(),"raise 3rd",UVM_LOW)
  phase.raise_objection(this, "raise 2 objections", 2);
  phase.phase_done.display_objections();

outstanding drop1, 然后raise2, 实际向上更新total count加1

Capture.JPG
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-20 03:23 , Processed in 0.029150 second(s), 7 queries , Gzip On, Redis On.

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