I have an array of 16 interfaces...
This array is split into 4 equal parts and passed to 4 child modules with each module taking a part selected sub section of the array. The child module port is defined as...
When I pass the part selected array to the module where it is instantiated without the modport, all the tools I have access to successfully parse the rtl.
.intf(intf[s*4:s*4+3]), // s is a genvar (range 0 <= s <= 3)
If I try and add a modport to this line I run into problems. I've tried...
.intf(intf.dst[s*4:s*4+3]), // modport on part selected interface before 
.intf(intf[s*4:s*4+3].dst), // modport on part selected interface after 
It is not clear to me from 1800-2012 which version is correct. Some tools accept both versions, some accept only the first version (i.e. modport before the ), and other tools only accept the version without the modport.
What is the correct way to add the modport?