I just learned that the modport_hierarchical_ports_declaration syntax from the Accellera LRM is missing in the IEEE 1800 LRM. Without this feature it is not clear (at least to me) how one could express hierarchical interfaces in a useful way. E.g:
interface part1; logical foo, bar; modport master(output foo, input bar); modport slave(input foo, output bar); endinterface
interface combined; part1 p1(), p2(); modport master(p1.master, p2.master); // this is not allowed in the IEEE LRM modport slave(p1.slave, p2.slave); endinterface
module masters(combined.master m); master1 m1(.m(m.p1)); master2 m2(.m(m.p2)); endmodule
Does anyone have any idea how to express this in a synthesizable way in IEEE 1800 SystemVerilog ?
-stefan |