How to connect a single DUT port to multiple interface signals?

Hi there, I am trying to develop an UVM environment for an APB interface. According to the design the TB architecture has a single master and two slaves. I’ve created the UVM TB and printed the topology successfully. While doing the DUV-Interface connections in the top I’m facing some issues.

I have a few signals that are common to all the slaves, so to connect them I’ve used intermediate wires for connecting and it does connect them successfully but some wires are driven by the TB so it causes an error when trying to use the port as an output in the interface.

apb_tb_top

apb_slv_intf

vcs.log

Warning-[ICPSD_W] Illegal combination of drivers
../intf/apb_slv_intf.sv, 10
  Illegal combination of structural and procedural drivers.
  Variable "PREADY" is driven by an invalid combination of structural and 
  procedural drivers. Variables driven by a structural driver cannot have any 
  other drivers.
  This variable is declared at "../intf/apb_slv_intf.sv", 10: logic PREADY;
  The first driver is at "../tb/apb_tb_top.sv", 34: assign 
  apb_tb_top.slv_if0.PREADY = PREADY_w;
  The second driver is at "../intf/apb_slv_intf.sv", 17: output PREADY = 
  PREADY;

As the above warning shows there is no issue while connecting the PWRITE signal but with the PREADY above method doesn’t work as it needs to be declared as output in the slave interface. Thanks for taking your time and any feedback regarding this is greatly appreciated.

I do not understand your approacvh. How is the master interface with the slave interface interacting?
In practice you have 1 apb bus and anything is connected to this bus, i.e. all masters and slaves are connected to this bus. This is what you should implement.

So I have implemented two separate interfaces for the master and slave each with the signals only required by them. The driver/monitor in the master agent drives/monitors through the master interface and the driver/monitor in the slave agent does the respective operations. We did a router project recently and this was the method implemented in it so I thought it was the best practice to do so I tried with this.

So should I just create one single interface for everything and drive all the signals through it? But still doing so, I still have the issue of two slave agents both having PREADY in them, but the DUT has only a single PREADY signal for it, could you suggest some way on how I should be connecting them?

This is how it is done in practice. A net data type like wire has a resoltion function and is allowing this.