Configuring driver-sequencer used, from environment?

I am trying to develop a scenario where my Re-active agent gets signals from Passive output agent monitor and injects errors and again drives them back to DUT. The signals(with errors) can be either passed as

  1. error sequence item passed to driver through a sequencer.Monitor analysis port connects sequencer analysis port.

  2. Driver generates error itself through a driver callback class. Monitor analysis port connects driver analysis port.

Can I use both of these methods in my test bench. In that case, can I have a controlling switch in my config DB which if true(1) will use method 1, else(0) use method 2.

Will I be needing two sequencers here? One for method1 and one for method2, and there will be a virtual sequencer. Based on the config value, virtual sequencer will connect driver to either of the two sequencers.

In reply to smukerji:

In general the answer is YES. Most buses are driven by more than one driver. But you have to take care for the Arbitration.
In your specific cas I do not really understand how you are generating the seq_item in (1).
Please elaborate in some more detail.

Thanks for the answer, but I believe you got my question wrong.
There is only one driver and two sequencers/sequences (connected by virtual sequencer). The driver gets connected to a particular sequencer based on what method I am using.Each sequencer uses a particular sequence. The sequencers are controllers by virtual sequencer. There is also a driver callback class that is active only when sequencer/sequence 2 is selected via select bit.

In my uvm-config-db, I want a switch. Then if that is 1, then

sequence1(creates errors)---->sequencer1---->driver.

If select=0, then

sequence2—>sequencer2---->driver---->driver callback(creates errors)

eg

class uvm_configuration extends uvm_object;

bit switch = 1;

endclass

In reply to smukerji:

Then I do not understand your question even more. The common way to deal with error injection is to do something like this:

error_seq extends good_seq.
Why do you need 2 (different) sequencers?

In reply to chr_sue:

I need different sequencers since 1st sequencer will invoke error sequence and second sequencer will invoke normal sequence (without error, in this case driver callback will induce error while driving). Also, it would help me have a better command over the language, since I am just a beginner.

In reply to smukerji:

Each sequencer can execute more than 1 sequence. You can run them in a series or just in parallel.