Is arbitration queue and request fifo in context to sequencer are same or they are 2 different subcomponent within sequencer ? If they are different then what is the difference ?
Each sequencer has a request fifo. Calling get_next_item/get remoes the seq_item from the request fifo.
An arbitration queue is used in virtual sequencer. They do not generate itself seq_items but they are orchestrating the execution of agent sequencers depending on the arbitration algorithm.
An arbitration queue is used in virtual sequencer.
that is actually not true. An arbitration queue can be used on any sequencer and you can have multiple sequences running on “non-virtual” sequencers just as you would run on virtual sequencers.
The request queue is separate from the arbitration queue because the sequence gets a grant from the sequencer once its turn has come based on the arbitration algorithm of choice. The grant unblocks the start_item(req)
call and the finish_item(req)
will add the sequence item in the request fifo, which is the one used when the get_next_item()
call is executed in the driver.