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:
Why is it necessary or recommended to override the default_sequence in such setups?
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.
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:
Not necessary, in UVM it is even not recommended.
I would go for the next approach: launch the reactive slave agent sequence using seq.start() method.
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.