Why Override the Default Sequence for Reactive Slaves in UVM?

Hello,

I am currently building a reactive slave in UVM, following the guidelines for such implementations. In my setup, the monitor waits for requests from the DUT and sends them through the UVM analysis port to a UVM analysis FIFO in the sequencer. The sequence then retrieves the request using:

p_sequencer.request_fifo.get(m_request);

In the guide, it is mentioned that one of the most generic approaches for starting the required slave sequence is to set the default_sequence for the sequencer’s main runtime phase.

I am trying to understand:

  1. Why is it necessary or recommended to override the default_sequence in such setups?
  2. What are the alternative methods for starting the required slave sequence, and when should they be preferred?

I would appreciate any insights or examples that could clarify these points.

Thank you!

Hi Ronen,

First, please read the next post on similar topic of default_sequence usage:

Second, what is the document, book, websites you are following the recommendation to write the reactive slave agent?
Maybe it complaint with OVM methodology?

Answers:

  1. Not necessary, in UVM it is even not recommended.
  2. I would go for the next approach: launch the reactive slave agent sequence using seq.start() method.

649575fcbf99287ba25f20e8_litterick_uvm_slaves2_paper.pdf (3.6 MB)
Hi, thanks for the quick response.
I use a guide called MASTER REACTIVE SLAVES IN UVM. I uploaded it to a comment here.

This is a good paper :slight_smile:
UVM complaint.

Under chapter: 3.6 - Test Environment
it states:
“Alternatively tests can start explicit sequences for the slave agents directly from the test component
(provided the default_sequence for the main_phase is left as null in the configured environment) as shown below”.

This is a better option in my opinion, both options will work.
And it is good they presented both options.

Thank you.