In the body of a virtual sequence I have a sequence running inside fork join, which is then killed by disabling the thread, like so:
virtual task body();
....
fork:seq_thread
`uvm_do_on(my_seq, my_seqr)
join
@(negedge reset_b );
disable seq_thread;
...
...
endtask;
On doing this, we get the following error from the sequencer:
[SEQREQZMB] The task responsible for requesting a wait_for_grant on sequencer 'uvm_test_top.env.my_seqr' for sequence 'uvm_test_top.env.soc_v_sequencer.my_vseq.my_seq' has been killed, to avoid a deadlock the sequence will be removed from the arbitration queues.
What can I do in my virtual sequence to cleanly kill 'my_seq' when reset_b is asserted ?