Multiple Driver's for Multiple Interfaces

Hi

I have a scenario where I have two DUTS with same port list but different names.
I have to use the same protocol for two DUTS simultaneously which has different Interfaces but same protocol. What’s the right suggestions
1)Using two different agents
2)using two Driver’s

Please help ASAP.

Regards
Taahir

In reply to syed taahir ahmed:

Hi Taahir,
I’m not sure if I really understand your problem. If you have 2 DUTs with the same port list but different names you can simply connect the same interface to both DUTs. This assumes the behavior of the ports is the same in both DUTs. For all inputs driving the DUTs it is easy. But you have to consider all outputs and inouts in such a way you do not get conflicts in the interface.

*In reply to chr_sue:*No Actually the difference is we need to have different transaction on both DUTs meaning DUT A should be different from DUT B interms of writing/Reading.

In reply to chr_sue:

Hi Taahir,

I understand now you have 2 instances of the same DUT. In this case you need 2 agents. If the DUTs are not completely independent you have to implement a synchrinsation mechanism between the agents.

In reply to chr_sue:

Yes DUTs are independent

In reply to syed taahir ahmed:

Hi Taahir,

you can use the same agent twice, making two instances of the same agent class.
The different functionality will be defined in the sequences you are executing on the agent’s sequencers.

Christoph

In reply to chr_sue:

Thanks Christoph

In reply to chr_sue:

Hi Christoph,
While making two instances of the same agent class how we can connect abstract_interface to two different interface

Regards,

Nithin

In reply to nithinkrishnanrs2020:

What do you mean with ‘abstract_interface’? is it the SV interface definition like this:

interface my_if (),
  sig1;
  sig2;
endinterface

In reply to chr_sue:

I have one axi master interface,agent,driver,etc

axi_mstr_if #(.AXI_ADDR_WIDTH ( AXI_ADDR_WIDTH ),
.AXI_DATA_WIDTH ( AXI_DATA_WIDTH )) vif (
.clk ( clock ),
.rstn ( resetn ),

);
I am using concrete class in top
vif.use_concrete_class();

In axi_mstr_if
function void use_concrete_class();
axi_if_abstract::type_id::set_type_override( axi_if_concrete::get_type());
// `uvm_info(“Interface”, $sformatf(“%m – running set_inst_override in _if”), UVM_INFO)
endfunction : use_concrete_class

Now I need another axi interface with same property. How I can give handle to 2 interface from driver(when we use two instant of agent)

In reply to nithinkrishnanrs2020:

You should ask the inventor of this abstract/concrete if approach.
Looks like you need another override function.

In reply to chr_sue:
Changed it to the simple interface rather than the abstract/concrete interface approach and its worked fine.
Thank you for your quick response

Regards,

Nithin