Connect

あるインターフェースをほかのインターフェースに接続するために各メンバーを代入する代わりに connect 宣言を使用することができます。connect 宣言はインターフェースの全てのメンバーを自動的に接続します。

代入の方向はmodportによって決まります。つまり output メンバーが input メンバーに代入されます。connect の引数がインターフェースインスタンスの場合、方向を決定するためにmodportの指定が必要です。

接続演算子 <>always_comb 中でも使用することができます。

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;
    }
}