UVM仿真的运行(四)—— objection 机制
目录
0. 引言
1. uvm_phase::execute_phase line 1432~1470
2. uvm_objection
2.1 get_objection_total
2.2 raise_objection
2.3 drop_objection
2.4 m_execute_scheduled_forks
2.5 wait_for
3. 小结
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_t