How do know the rsp from each sqncr to drvr ? how to confirm which sqncr responded ? with example(s) please

How would we know which sequencer is responded to driver and how to confirm that?

let say we have we 3/4 sequencer and 1 driver
Can someone explain to me with eg

Thanks in advance

In reply to mi:

It is alittle bit unclear what you mean. I assume you are asking for rsp from driver to sequencer. See the details here
https://verificationacademy.com/cookbook/driver/bidirectional

In reply to chr_sue:

Thanks

single driver with multiple seqencers , is this communication possible ? if yes multiple sequencers like sqncr1 , seqncr2, sqncr3

in general scenarios we have m_driver.seq_item_port.connect(sequencer.seq_item_export);
(sequencer.seq_item_export) → sqncr1/2/3 ???

I would like to know how do we know which sqncr is responded(sqncr1/sqncr2/sqncr3) ?

Am i clarified ?

In reply to mi:

The connection betwen sequencer and driver is always a one-to-one connection.
In the example you see different options to deal with the responses.

In reply to chr_sue:

Thanks Chr_sue

what is the purpose of sequencer arbitration?

In reply to mi:

Whan you are running more than 1 sequence at the same time you can contro how the seq_items of the differenr sequences will be provided.

In reply to chr_sue:

okay, then what is the difference between sequence library, sequencer arbitration, and virtual sequence? In what scenarios we are going to use them?

In reply to mi:

These are completely different constructs. There is no relationship in between.
(1) virtual sequence: is a sequence which orchestrates the execution of the agent sequencers. The main difference to a sequence is, it is NOT generating any seq_items.
(2) sequencer arbitration defines in which series the seq_items of more than 1 seqauence are generated-
(3) sequence library is a construct where you can add sequences to. A sequence library consists a ceratin number of sequences. You can start the sequence library like a sequence. All sequence from the library will be executed in a well-defined order.

In reply to mi:

A virtual sequence is a term for a sequence that only starts other sequences. It usually is not associated with any sequencer which is required to send sequence_items to a driver. In the early days of the OVM it used to be a separate class, but in a rare act of simplification, they got rid if it. The terminology lingers on.

The uvm_sequence_library is an example of a virtual sequence that comes predefined in the UVM. It has methods for registering other sequences into a list and different mechanisms for selecting from that list. We do not recommend the use of sequence libraries. It is much easier to use a simple array. See Sequences/Generation | Verification Academy

Sequencer arbitration is used when multiple sequences connected to the same sequencer or even the same sequence sends multiple sequence_items in parallel. A driver can only accept sequence_items sequentially.