微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > raise_objection drop_objection UVM 求助

raise_objection drop_objection UVM 求助

时间:10-02 整理:3721RD 点击:
看到一段代码,在case的run_phase里,
fork
phase.raise_objection(this);
begin
......
end
begin
........
end
phase.drop_objection(this)
join

在这段代码里用的是fork join,那不是应该raise和drop还有那些begin end块并行吗,这段代码为什么可以等begin end块都执行完成才drop?
按照我的理解,raise和drop不应该放在fork里

?、、、

raise objection和drop objection应该是串行的吧,写在fork join里有点问题

虽然你用了fork join 但是这个两个objection函数真正执行的时候是有先后的,虽然同时启动了 但是drop objection没执行,run_phase里面其他进程运行完了 才运行这个drop objection

为什么呢?是不是放在fork外面会更好

是的,放在外面看着会更好。没有raise_objection begin end不会被执行,等所以的begin end都结束了 才会调用drop_objection 这是phase的运行机制啊

1.没有raise,begin块不会执行吗?2.既然是fork join,那raise和drop同时启动,drop在没有raise之前是不能drop,但是等到raise之后,不是drop就执行完了吗,drop也要等到begin块执行完才可以运行吗?

你的意思是没有如果在mainphase,都没有raise,就不会执行了吧,直接到下一个phase

raise 和 drop只是phase下的phase_down函数的两个子函数,内部是有联系的,不只是两个单纯的独立的两个函数

一般来说 raise objection drop objection和uvm_do是绑定的,在sequence里。


你这边drop肯定是第一时间就执行过的,至于begin end会执行完应该是存在其他的raise drop~具体你可以通过UVM自带的phase调试查看执行情况

谢谢你的回答!
你说的phse调试指的是什么,初学这个,不是很懂

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top