Sequence re-use and multi-instance

My understanding of UVM testbenches is that when sequences, sequencers, and drivers are all parameterized using the same sequence item type, then I can simply call `uvm_do(seq), and it knows what sequencer to use based on the sequence item type. Is that a correct base assumption?

So what happens when I move up the design stack vertically, and I want to re-sue some lower-level sequences - but my TB now contains multiple instances of the same sequencer/driver pair? How does my sequence know which sequencer to use? Do I now have to call `uvm_do_on(seq, sqr)? This could potentially be a lot to keep track of… I’m thinking of a module that contains 128+ instances of a sub-module, each with their own intf/env/agt/sqr/drv.

In reply to jmlemay:

Although the sequence/sequencer/driver share a common base sequence_item type, you can have many sequencers with the same sequence_item type.

We recommend using the start method to start your top-level sequence with an argument indicating which sequencer you want it to run on, and all of it’s sub-sequence inherit the sequencer of its parent.

I noticed you posted this in the OVM forum not the UVM forum. The OVM had sequence registration macros that tied a sequence to a specific sequencer. That does not exist in the UVM.