一旦所有组件都drop_objection,则run_phase完成,然后所有组件的check_phase执行,然后测试结束。...这是正常仿真结束的方式,但是如果某些组件由于设计或测试平台中的错误而挂起,则仿真超时也可以终止run_phase。当run_phase启动时,并行超时计时器也会启动。...如果在run_phase完成之前超时计时器达到指定的超
shutdown 9 测试结束操作 关闭时钟信号,电源下电模拟 3. 后处理阶段 (Post-Run Phases) extract_phase check_phase report_phase final_phase Phase名称执行顺序关键作用典型应用场景 extract_phase 1 数据收集与统计 覆盖率数据收集,错误计数统计 check_phase 2 结果验证与断言 最终状态检查,断言总结报告 report_pha...
并且所有的phase都执行完之后也是在run_test中调用$finish来结束仿真的,但是有时候UVM环境phase跑完之后我们还想在tb中做一些额外的,甚至是消耗时间的行为,然后再主动调用$finish来结束仿真,需要怎么处理呢?
其中除uvm_run_phase 为task phase外,其余的均为function phase,而run_phase 又分为12个与之并行运...
UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类,一类是function phase,如 build_phase、connect_phase等,这些phase都不耗费仿真时间,通过函数来实现;另外一类是task phase,如run_phase等,它们耗费 仿真时间,通过任务来实现。给DUT施加激励、监测DUT的输出都是在这些phase中完成的。在...
1. function phase不消耗仿真时间,而function phase也分成两大类: a. 继承自uvm_bottemup_phase的自下而上的执行function b. 继承自uvm_topdown_phase的自上而下执行的function 2. 只有run_phase是task phase,消耗仿真时间的,自上而下启动,同时在运行。
post_shutdown_phase(); end join 稍微解释一下上述代码含义,fork-join 表示两个 begin-end 是同时开始运行的,当 run_phase() 和 pre_reset_phase() 同时存在时,run_phase() 和 pre_reset_phase() 在同一个时刻点开始运行,在 run_phase() 和 pre_reset_phase() 两个 phase 均运行结束以后,主 phase...
例如,如果某个组件希望将phase结束延迟到某个条件,甚至在所有objections均被放下之后,也可以使用此回调方法来完成。再比如,如果一个激励或应答sequence正在运行,在主sequence结束之前,则可以使用main_phase()中的phase_ready_to_end()回调方法来停止那些激励或应答sequence。再比如一个component想要延迟某个run-time ...
UVM中的phase,按照其是否消耗仿真时间($time打印出的时间)的特性,可以分成两大类,一类是function phase,如 build_phase、connect_phase等,这些phase都不耗费仿真时间,通过函数来实现;另外一类是task phase,如run_phase等,它们耗费 仿真时间,通过任务来实现。给DUT施加激励、监测DUT的输出都是在这些phase中完成的。在...
phase间的执行顺序 UVM内所有的phase如下图所示,不同phase间的执行顺序从时间上讲是从上往下执行,而run_phase和下图最右边的12个phase是并行执行的。 所有conponent的相应phase结束了,验证平台才会进入下一个phase。只有所有componennt的run_phase和post_shutdown_phase结束才会进入下一个phase。 phase内部执行顺序......