Multiple interface connections to multiple DUT

In reply to dave_59:

In reply to Ram _p:
You can pass an array of interface instances to a module, but there is no syntax that allows you to concatenate a group of generated instances into an array.

This is certainly a deficiency in the language. We solve this problem by creating a “interface feedthru” module. Almost every one of our interface definitions has an paired feedthru module.
i.e. for our AXI interfaces:


module axi_feedthru
(
  axi_if.slave s_if,
  axi_if.master m_if
);
  assign m_if.awvalid = s_if.awvalid; 
  assign s_if.awready = m_if.awready; 
  assign m_if.awaddr = s_if.awaddr; 
//...

The good thing about these feedthru modules is they usually dont need to be parameterized (even though the underlying interface are parameterized). i.e. for the above axi_if the awaddr wire has a parameterized width.

We use this to attached a named interface to a specific index of an array of interfaces - i.e

axi_feedthru axi_feedthru_flash
(
  .s_if( axi_lo_m_ifs[ INDEX_FLASH ] ),
  .m_if( flash_axi_if )
);

It’d be ideal it the language had a way to do this generically, rather than us being required to create the feedthru module per interface. What’s really needed, at its core is a “interface alias” like feature (similar to net alias).

Regards,
Mark