0. 引言
前面介绍了uvm仿真的启动,按照domain中指定的DAG的phase node 顺序执行各个组件的phase。
在执行run_phase node的Executing 状态时,以fork...join_none的方式在后台调用run_phase imp的traverse方法去并行执行各个component的run_phase方法,同时会等待task运行结束。结束有三种方式: JUMP,等待所有objection撤销,和超时。本章介绍针对task phase运行的objection 机制,基于此,控制仿真运行的开始和结束。
1. uvm_phase::execute_phase line 1432~1470
// WAIT_FOR_ALL_DROPPEDbeginbit do_ready_to_end ; // bit used for ready_to_end iterations// OVM semantic: don't end until objection raised or stop requestif (phase_done.get_objection_total(top) ||m_use_ovm_run_seman