In reply to guy.levi:
I guess its better to declare 2 interfaces , and having one config class in agent which will tell which variant to use .
Your config class will look something like this
bit variant ;
interface_0 vif_0;
interface_1 vif_1;
In top component , say env you have 2 agent instantiation
—In agent instance 1 pass config ( variant =0 , interface_0)
—In agent instance 2 pass config ( variant=1 , interface_1)
env code :
cfg0.variant=0;
cfg0.interface_0 = this.vif0;
cfg1.variant=1;
cfg1.interface_1 = this.vif1;
agent0.cfg = cfg0;
agent1.cfg = cfg1
This is all about connectivity and in your driver and monitor use variant bit to differentiate the code on requirement basis like below
wait(vif.req)
if(variant==0) rdata = vif_0.data;
else rdata = vif_1.data;