Thank you. You are right. They are flagged after I added
+define+UVM_NO_DEPRECATED.
I found your example link on internet. I put set_automatic_phase_objection(1); in the constructor and it works now for UVM 1.2!!! Here is my new code. http://www.edaplayground.com/x/3gU It works even with a nested sequence.
I have a concern. I need your help.
1. After looking through the sequence_base class code, set_automatic_phase_objection seems to raise a new objection for every child sequence in a nested parent sequence. Is that true? That will be different from my original code which raises objection only for the parent sequence. I am concerned if it would slow down the simulation.
if (get_parent_sequence() == null && starting_phase() != null) // my original code
starting_phase.raise_objection(this);
2. So, I try to use set_starting_phase only for the parent sequence with my original code concept. It does not work. I am confused with the purpose of set_starting_phase. There is not an unset function for starting phase. Could you help me?
task pre_start;
if (get_parent_sequence() == null && get_starting_phase() != null)
this.set_starting_phase(null); // null is not right either. It should be a phase name. I can't get a phase name from sequencer.
endtask
task post_start;
//if (get_parent_sequence() == null && get_starting_phase() != null)
// starting_phase.drop_objection(this); // not even sure what to use here
endtask: post_start
# UVM_ERROR /playground_lib/uvm-1.2/src/dap/uvm_get_to_lock_dap.svh(67) @ 30: reporter [UVM/GET_TO_LOCK_DAP/SAG] Attempt to set new value on 'pci_run_sequence.starting_phase', but the data access policy forbids setting after a get!
Can you help me again? Thank you.
Michael