How to make a uvm sequence active across multiple phases?

Yes, it used to work when everything was in run_phase. Now we want to split run_phase into multiple run-time phases for “save and restore” purpose, then we start to see misbehavior.

That piece of code is the outmost loop on “consumer” side. It might not show the real reason. It gets stuck at reg_seqr.peek, meaning the uvm_tlm_fifo in uvm_sequencer is empty. That fifo is fed by “producer” or RAL side operation. I feel the whole thing gets stuck at uvm_sequencer_base::m_wait_arb_not_equal(), possibly some deadlock occurs.

Since it works if I kill the “translation” sequence and restart it in main_phase, i’m trying to see if kill() does something special, probably reset some queue etc, which can avoid the deadlock.

In reply to chr_sue: