UVM parametrized agent and driver

In reply to sdeaderick:

Hi Scott,
thanks for explaining some more details.
The structure with the BFMs in the toplevel module is forced by the emulation requirements. It sis not common UVM style.
If you want to add an additional agnet to your enviornment you have to do this in the environment. This is the toplevel component of the class-based testbench. And this means you have to touch this piece of code. There is no other way.
If you want to replace an existing agent with another one, you could do this by parameterizing a agent. If this is a good solution is another question. Because you have always to code your driver, monitor, coverage collector, transaction and sequences.
My professional experience collected in 15+ OVM/UVM projects you should not go this way. Instead make your data structure reuseable by holding all agent related data in one directory tree.
And spend the manual effort to include an additional agent in the env.