UVM grab and ungrab returning to next line in virtual sequence
=======================================================================
Virtual sequence 1 (vseq1)
non-virtual nvseq1
non-virtual nvseq2
end virtual sequence
Virtual sequence 2 (vseq2)
grab p_sequencer
non-virtual nvseq1
ungrab p_sequencer
end virtual sequence
Expected order of execution
- vseq1.nvseq1 is half way
- vseq2 grabs sequencer (vseq1.nvseq1 half completed and suspended)
- vseq2 ungrabs sequencer
- vseq1.nvseq1 resumes
=======================================================================
Actual order in simulation - vseq1.nvseq1 is half way
- vseq2 grabs sequencer (vseq1.nvseq1 half completed and suspended)
- vseq2 ungrabs sequencer
- vseq1.nvseq2 resumes
It seems after ungrab, sequencer picks next line in virtual sequence. it discards non-virtual sequence which was yet to execute.
How do we make sequencer to return to a line within non-virtual sequence.