Hi, all
i confused about the different between run_phase and other 12 runtime phase at bellow two case:
First Case:
task monitor::run_phase(uvm_phase pahse);
super.run_phase(phase);
#50;
`uvm_info("RUN_PHASE", "Monitor Run_phase Starting", UVM_NONE)
endtask
task driver::main_phase(uvm_phase pahse);
super.main_phase(phase);
phase.raise_objection(this);
#100;
`uvm_info("MAIN_PHASE", "Driver Main_phase Starting", UVM_NONE)
phase.drop_objection(this);
endtask
In the case, raise objection in driver‘s main_phase task, does not raise objection in the monitor's run_phase task
the run_phase and main_phase work as expected!
Second Case:
task monitor::run_phase(uvm_phase pahse);
super.run_phase(phase);
phase.raise_objection(this);
#100;
`uvm_info("RUN_PHASE", "Monitor Run_phase Starting", UVM_NONE)
phase.drop_objection(this);
endtask
task driver::main_phase(uvm_phase pahse);
super.main_phase(phase);
#50;
`uvm_info("MAIN_PHASE", "Driver Main_phase Starting", UVM_NONE)
endtask
In the case, raise objection in the monitor's run_phase task, does not raise objection in the driver’s main_phase task
The run_phase work expected, but the main_phase task in driver does not output any information, in other words, it seems like the main_phase task is not scheduled!
Who know the reason?
BR
QIN