Is there a way to stop all running sequences during a simulation(say when you get a reset) ? Is there a way to dump the a list of all running sequences at particular time during simulation ?
Yes. sequencer_h.stop_sequences() See https://verificationacademy.com/cookbook/Sequences/Stopping for what you need to do and what you need to be careful about with an active driver.
There is nothing built-in to the UVM to dump all the running sequences, but if you are using Questa, there is a debugging command "uvm findsequences" that will list them out for you.
-
What is
sequencer_h? Did you mean callingstop_sequenceson all running sequencers ? I don't have access to the link you have posted.– JeanOct 4 2013 at 22:16 -
When I do
sqr.stop_sequences, I get thisUVM_FATAL. Can you please provide any hints on how to debug this? Error:Item_done() called with no outstanding requests. Each call to item_done() must be paired with a previous call to get_next_item().Aug 19 2014 at 1:12
There is a bit received_item_done in every sequence. You can wait for the posedge of this bit before stopping any particular sequence. You can use the current_grabber function from the sequencer base class to get a handle of the sequence which currently has a lock or grab on the sequence.
stop_sequences will stop the sequence currently loaded on a sequencer.
Not the answer you're looking for? Browse other questions tagged verilog system-verilog uvm or ask your own question.
2 Answers
Yes. sequencer_h.stop_sequences() See https://verificationacademy.com/cookbook/Sequences/Stopping for what you need to do and what you need to be careful about with an active driver.
There is nothing built-in to the UVM to dump all the running sequences, but if you are using Questa, there is a debugging command "uvm findsequences" that will list them out for you.
There is a bit received_item_done in every sequence. You can wait for the posedge of this bit before stopping any particular sequence. You can use the current_grabber function from the sequencer base class to get a handle of the sequence which currently has a lock or grab on the sequence.
stop_sequences will stop the sequence currently loaded on a sequencer.