In reply to uvm_va_1:
In order to avoid a deadlock situation, I recently added stop sequences to a block which is instantiated in the main sequence, it took care of the deadlock situation but it causes UVM FATAL error, what other way can I add this stop sequences to my code?
I had a closer look to your problem. A deadlock situation cannot be caused by the sequence execution, because the sequencer/sequence does not have any timing relationship. The behavior is defined by the order of the execution. If a sequence hangs this is never caused by the sequence itself. It comes always from the components which are processing the sequence and driving the pinlevel interface. Typically this is the driver. A driver can hang and will not continue with the execution of a sequence, i.e. indicating to the sequencer the next seq_item can be generated by sending item_done.
If you are facing a deadlock you should investigate/debug your driver behavior. This process can be complicated when you are using uvm_barriers or uvm_events.