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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2240|回复: 7

[求助] UVM phase的关系问题

[复制链接]
发表于 2021-12-5 15:12:04 | 显示全部楼层 |阅读模式

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

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

x
最近在学习UVM,其中phase一章有几个疑问
1,run_phase 和 reset config main shutdown那12个phase是并行执行的,其中12个phase是按顺序执行的,run_phase在12个phase执行期间是一直在并行执行吗?

2,run_phase 的作用是啥,就是和这12个phase并行执行,方便控制之类的?

3, reset config main shutdown等12个phase是都需要在各自的phase中进行raise和drop吗?如果不raise就不执行了吗?比如scoreboard中configure_phase raise了,monitor中没有raise,那scoreboard的configure_phase执行结束还会等monitor的configure_phase吗?还是说monitor中的configure_phase没raise就不执行了,不用等了?

4. 各个component中同名的phase是一起执行的,比如说dirver monitor和scoreboard 中main_phase是一起执行的,那么是不是在driver,monitor 和scoreboard的main_phase中都需要raise、drop_objection

请大神们不吝赐教
发表于 2021-12-5 17:50:16 | 显示全部楼层
我就说几点我的理解吧,
1.run_phase和12个run_time  phase是fork—join并行的,12个run_time phase 是顺序执行的,等到run_phase和post_shut_down都结束后才进入下一个phase。
2.不了解,我不太喜欢用run_phase。。习惯在main_phase执行操作。
3.4.这其实是一个问题,你需要再去看看那个objection机制,他是说的某个pahse阶段的所有的raise都drop后这个pahse就会结束了。so,你懂了吗。比如说,你在对于不同组件的main_phase,你分别raise两个,那就需要收到两个drop才会结束这个phase。同理,你要是只raise了一个,就只需要drop一个就结束这个phase。一般的验证平台,把发完sequence作为结束,那么就只需要在sequencer的main_phase中raise和drop就可以。那个default_sequence实际上就是将变量starting_phase指向sequencer的main_phase或者run_phase(取决于你的设置default_sequence时config_db里挂在哪里,uvm1.2没有这个starting_phase这个变量了,但是原理一样)。简单点说,就是你的sequencer的main_phase结束的时候,其他component的main_phse也就是结束了。所有的pahse不raise确实不能运行,default_sequnece是因为经过了封装,迷惑了大家。
 楼主| 发表于 2021-12-6 11:51:55 | 显示全部楼层


易素心 发表于 2021-12-5 17:50
我就说几点我的理解吧,
1.run_phase和12个run_time  phase是fork—join并行的,12个run_time phase 是顺序 ...


谢谢解答
发表于 2021-12-6 13:46:33 | 显示全部楼层
2. run_phase是uvm 引入的,之前的12个phase是vmm中的。所以uvm只是保持了vmm的12个phase,你不用这个12个也没问题。
 楼主| 发表于 2021-12-6 14:30:35 | 显示全部楼层


年轻的韭菜 发表于 2021-12-6 13:46
2. run_phase是uvm 引入的,之前的12个phase是vmm中的。所以uvm只是保持了vmm的12个phase,你不用这个12个 ...


那为什么怎么平时用到的都是VMM的12个phase,run_phase用的倒是比较少
发表于 2021-12-6 15:52:30 | 显示全部楼层


新嘴小王安子 发表于 2021-12-6 14:30
那为什么怎么平时用到的都是VMM的12个phase,run_phase用的倒是比较少


遗留问题啊,现在eda的uvm编码规范是建议只使用run_phase的。
4. 你可以看看uvm源码,dirver和monitor的phase其实是同一个phase,唯一的实例,单例模式创建的。所以objection只需操作一次。
 楼主| 发表于 2021-12-14 15:08:42 | 显示全部楼层
不raise就不执行了,但是不同的component相同的phase,比如scb的main_phase,和monitor、driver的main_phase只要这三个component的其中一个或多个的main_phase中raise了,那么即使其他的component的main_phase没有raise也会执行的
 楼主| 发表于 2021-12-14 15:13:55 | 显示全部楼层

1 对于一个component来说,12个phase都需要raise、drop才能执行,不raise就不执行了
2 对于整体环境来说,只要其他component(比如SCB)的reset、config、main 等phase raise了,那么driver的reset config main phase也会执行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-5-3 13:31 , Processed in 0.028975 second(s), 6 queries , Gzip On, Redis On.

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