UVM Sequencer Arbitration: Is Sequence Priority Used During Queue Insertion or During Grant Selection?

When we assign a priority through the start() method, is the sequence stored in the sequencer’s queue according to that priority immediately, or does the sequencer store all sequence requests first and then later use the priority during arbitration to decide which sequence gets the grant?

The start() method simply launches the sequence by calling its body() method; it does not participate in sequencer arbitration. Arbitration is deferred until the sequence requests access to the driver by calling start_item() (preferred) or wait_for_grant(). If another sequence currently has priority, the requesting sequence blocks until the sequencer grants it access.

So you mean sequencer start arbitration when sequence(s) call start_item() ? Arbitration is not started by driver when it calls get_next_item() or get() or peek() ?

Why sequencer need a request FIFO because at one time only one sequence item is selected after arbitration among multiple sequences ?

Arbitration starts when the driver requests an item. I was being brief because the OP was already involved in a more detailed discussion in another thread and I assumed that context.

Priority is used during grant selection, not queue insertion. Requests are queued in arrival order; arbitration determines which pending request gets granted.