Connect
To assign from a interface to another interface, connect
decleration can be used instead of each member assignment.
connect
decleration connects all members of the interface automatically.
The direction of assignment is determined by modport, so output
member is assigned to input
member.
If an argument of connect
is an interface instance, additional modport specification is necessary because it can’t be determined direction.
The connection operator <>
can be used in always_comb
too.
interface InterfaceA {
var cmd : logic;
var ready: logic;
modport master {
cmd : output,
ready: input ,
}
modport slave {
..converse(master)
}
}
module ModuleA (
mst_if0: modport InterfaceA::master,
slv_if0: modport InterfaceA::slave ,
mst_if1: modport InterfaceA::master,
slv_if1: modport InterfaceA::slave ,
) {
inst bus_if0: InterfaceA;
inst bus_if1: InterfaceA;
connect mst_if0 <> bus_if0.slave;
connect slv_if0 <> bus_if0.master;
always_comb {
mst_if1 <> bus_if1.slave;
}
always_comb {
slv_if1 <> bus_if1.master;
}
}