run_phase(); end begin pre_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 join UVM提供了...
1)创建UVM默认的所有phases,即我们熟知的build phase、connect phase、run phase、main phase等等,并将其组织成我们前面会提到的有向无环图结构;实现这一步主要是靠调用uvm_domain中的get_common_domain 2)开始运行(1)创建组织好的phases,当然如果有用户自定义的phase,也会在规定的点运行起来;实现这一步主要是靠...
实际上run_phase任务和上面细分的12个phase是并行的,即在start_of_simulation_phase任务执行以后,run_phase和 reset_phase开始执行,而在 shutdown_phase执行完成之后, 需要等待run_phase执行完才可以进入extract_phase。 虽然run_phase与细分的12个phase足并行的,但12个phase也是按·先后顺序执行的。 为了避免不必要的...
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除了方便验证人员将不同的代码写在不...
b. 对于同一层级的组件,其 run_phase() 和 pre_reset_phase() 属于两个不同的线程,他们同一个时刻点先后启动, 但 12 个细分 phase 顺序执行; c. 对于不同层级别的 component 在下一级别启动之后,才会启动; d. run_phase() 和 post_shutdown_phase() 需要都执行结束才会进入 extra_phase()...
一个UVM验证平台有许多component组成,每个component都有自己的run_phase,以及从pre_reset 到post_shuddown的12个小phase。只有所有component的一个小task phase 完成,整个仿真平台才开始下一个小task phase的执行。 各个component的run_phase之间,以及run_phase于最后一个小phase--post_shutdown_phase之间,都有这样的同...
比如:对于main_phase和post_main_phase来说,A component 的main_phase在0时刻开始执行,100时刻执行...
1.phase 执行后还可以在执行一次前面的phase,phase之间可以跳来跳去。 2.例子,监测到reset_n 信号为低,则从main_phase 跳转到reset_phase。 1)driver: reset_phase 做一些清理工作,并等待复位。 2)top_tb: 3)my_case0: 4)结果: UVM_WARNING:因为在my_driver 中jump时,没有把my_case0的objection 撤销。
一种常见的思维是把raise_objection放在get_next_item之后,这样的话,就可以避免无限循环的问题,确实如此。但是关键问题是如果其他地方没有raise_objection的话,那么如前面所言,UVM不等get_next_item执行完成就已经跳转到了post_main_phase。 在monitor中,scoreboard中,reference model中都有类似的情况,他们都是无限循环...
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 从全局来看run phase和run-time的执行顺序按以下代码中顺序执行。 有几点需要说明: ...