post_main_phase(); pre_shutdown_phase(); shutdown_phase(); post_shutdown_phase(); end join UVM提供了如此多的phase,在一般的应用中,无论是function phase还是task phase都不会将它们全部用上。使用频率最高的 是build_phase、connect_phase和main_phase。这么多phase除了方便验证人员将不同的代码写在不...
post_shutdown_phase(); end join UVM提供了如此多的phase,在一般的应用中,无论是function phase还是task phase都不会将它们全部用上。使用频率最高的是build_phase、connect_phase和main_phase。 这么多phase除了方便验证人员将不同的代码写在不同的phase外,还有利于其他验证方法学向UVM迁移。一般的验证方法学都会...
比如:对于main_phase和post_main_phase来说,A component 的main_phase在0时刻开始执行,100时刻执行完毕;B component 的main_phase在0时刻开始执行,200时刻执行完毕,则整个验证平台main_phase执行完毕的时间为第200时刻,也就是说以时间长的为当前phase最终结束时间。 以上这种不同component的动态运行phase(即12个小phas...
如这12个小phase的名字所示,reset,configure,main,shutdown四个phase是核心,这四个phase通常也是模拟了DUT的正常工作方式,在reset_phase对DUT进行复位,初始化等操作,在configure_phase则进行DUT配置,DUT的运行主要在main_phase完成,shutdown_phase则是做一些与DUT断电相关的操作。通过细分,对DUT实现更加精确的控制。如,...
post_configure_phase(); pre_main_phase(); main_phase(); post_main_phase(); pre_shutdown_phase(); shutdown_phase(); post_shutdown_phase(); end join UVM提供了如此多的phase,在一般的应用中,无论是function phase还是task phase都不会将它们全部用上。使用频率最高的是build_phase、connect_phase...
2)对于单独component 来说,其12 个run-time 的phae 是顺序执行的,但并不是前面一个phase执行完就立刻执行下一个phase,还要看其他component 的这个phae。 3)main_phae 和post_main_phase 为例: A: B: 结果:各个component 的同一phase要互相等待完成,500 时刻结束: ...
一种常见的思维是把raise_objection放在get_next_item之后,这样的话,就可以避免无限循环的问题,确实如此。但是关键问题是如果其他地方没有raise_objection的话,那么如前面所言,UVM不等get_next_item执行完成就已经跳转到了post_main_phase。 在monitor中,scoreboard中,reference model中都有类似的情况,他们都是无限循环...
post_configure_phase(); pre_main_phase(); main_phase(); post_main_phase(); pre_shutdown_phase(); shutdown_phase(); post_shutdown_phase(); end join 稍微解释一下上述代码含义,fork-join 表示两个 begin-end 是同时开始运行的,当 run_phase() 和 pre_reset_phase() 同时存在时,run_phase()...
pre_main, main, post_main, pre_shutdown, shutdown, post_shutdown, 如下图: image.png 3 task phase的同步 一个UVM验证平台有许多component组成,每个component都有自己的run_phase,以及从pre_reset 到post_shuddown的12个小phase。只有所有component的一个小task phase 完成,整个仿真平台才开始下一个小task...
beginpre_reset_phase();reset_phase();post_reset_phase();pre_configure_phase();configure_phase();post_configure_phase();pre_main_phase();main_phase();post_main_phase();pre_shutdown_phase();shutdown_phase();post_shutdown_phase();end ...