sounderkumar Posted October 9, 2014 Report Share Posted October 9, 2014 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 ? Quote Link to comment Share on other sites More sharing options...
tudor.timi Posted October 9, 2014 Report Share Posted October 9, 2014 There's a stop_sequences() method in uvm_sequencer that you can use. Just call that after the disable. If you need finer control (just stopping one sequence because you have other running in parallel that has to still run) you can call seq.kill() after the disable. Quote Link to comment Share on other sites More sharing options...
uwes Posted October 10, 2014 Report Share Posted October 10, 2014 hi, "cold" killing a sequence by terminating the thread via fork/join/disable or process::kill very likely hangs the sequence-sequencer-driver interaction and a couple of handshakes. In the good case all you get is a message like the one you show. in the bad case it will render the sequencer in-operational. If you really need to terminate a sequence from the outside then .stop_sequences() and seq.kill(). But also keep in mind that one eventually has to perform add actions like resetting registers semaphores, resetting the driver etc otherwise you did just a reset of one part of your env and the rest is still in flight (for instance if you terminate a sequence which currently executes an item on the driver you need todo something with the driver otherwise the sequencer-driver handshake is out of sync. /uwe Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.