data/full_repos/permissive/493019833/test/testcase/firrtl/Mux4/reference/Mux4.v
data/verilator_xmls/a85de39e-363e-4cff-9f06-ff1e5ce00174.xml
module Mux4(
    input clock,
    input reset,
    input io_s0,
    input io_s1,
    input io_i0,
    input io_i1,
    input io_i2,
    input io_i3,
    output io_out
);
    wire _m0__clock;
    wire _m0__reset;
    wire _m0__io_sel;
    wire _m0__io_i0;
    wire _m0__io_i1;
    wire _m0__io_out;
    Mux2 m0 (
        .clock(_m0__clock),
        .reset(_m0__reset),
        .io_sel(_m0__io_sel),
        .io_i0(_m0__io_i0),
        .io_i1(_m0__io_i1),
        .io_out(_m0__io_out)
    );
    wire _m1__clock;
    wire _m1__reset;
    wire _m1__io_sel;
    wire _m1__io_i0;
    wire _m1__io_i1;
    wire _m1__io_out;
    Mux2_1 m1 (
        .clock(_m1__clock),
        .reset(_m1__reset),
        .io_sel(_m1__io_sel),
        .io_i0(_m1__io_i0),
        .io_i1(_m1__io_i1),
        .io_out(_m1__io_out)
    );
    wire _m2__clock;
    wire _m2__reset;
    wire _m2__io_sel;
    wire _m2__io_i0;
    wire _m2__io_i1;
    wire _m2__io_out;
    Mux2_2 m2 (
        .clock(_m2__clock),
        .reset(_m2__reset),
        .io_sel(_m2__io_sel),
        .io_i0(_m2__io_i0),
        .io_i1(_m2__io_i1),
        .io_out(_m2__io_out)
    );
    assign io_out = _m2__io_out;
    assign _m0__clock = clock;
    assign _m0__io_i0 = io_i0;
    assign _m0__io_i1 = io_i1;
    assign _m0__io_sel = io_s0;
    assign _m0__reset = reset;
    assign _m1__clock = clock;
    assign _m1__io_i0 = io_i2;
    assign _m1__io_i1 = io_i3;
    assign _m1__io_sel = io_s0;
    assign _m1__reset = reset;
    assign _m2__clock = clock;
    assign _m2__io_i0 = _m0__io_out;
    assign _m2__io_i1 = _m1__io_out;
    assign _m2__io_sel = io_s1;
    assign _m2__reset = reset;
endmodule
module Mux4(
    input clock,
    input reset,
    input io_s0,
    input io_s1,
    input io_i0,
    input io_i1,
    input io_i2,
    input io_i3,
    output io_out
);

    wire _m0__clock;
    wire _m0__reset;
    wire _m0__io_sel;
    wire _m0__io_i0;
    wire _m0__io_i1;
    wire _m0__io_out;
    Mux2 m0 (
        .clock(_m0__clock),
        .reset(_m0__reset),
        .io_sel(_m0__io_sel),
        .io_i0(_m0__io_i0),
        .io_i1(_m0__io_i1),
        .io_out(_m0__io_out)
    );
    wire _m1__clock;
    wire _m1__reset;
    wire _m1__io_sel;
    wire _m1__io_i0;
    wire _m1__io_i1;
    wire _m1__io_out;
    Mux2_1 m1 (
        .clock(_m1__clock),
        .reset(_m1__reset),
        .io_sel(_m1__io_sel),
        .io_i0(_m1__io_i0),
        .io_i1(_m1__io_i1),
        .io_out(_m1__io_out)
    );
    wire _m2__clock;
    wire _m2__reset;
    wire _m2__io_sel;
    wire _m2__io_i0;
    wire _m2__io_i1;
    wire _m2__io_out;
    Mux2_2 m2 (
        .clock(_m2__clock),
        .reset(_m2__reset),
        .io_sel(_m2__io_sel),
        .io_i0(_m2__io_i0),
        .io_i1(_m2__io_i1),
        .io_out(_m2__io_out)
    );
    assign io_out = _m2__io_out;
    assign _m0__clock = clock;
    assign _m0__io_i0 = io_i0;
    assign _m0__io_i1 = io_i1;
    assign _m0__io_sel = io_s0;
    assign _m0__reset = reset;
    assign _m1__clock = clock;
    assign _m1__io_i0 = io_i2;
    assign _m1__io_i1 = io_i3;
    assign _m1__io_sel = io_s0;
    assign _m1__reset = reset;
    assign _m2__clock = clock;
    assign _m2__io_i0 = _m0__io_out;
    assign _m2__io_i1 = _m1__io_out;
    assign _m2__io_sel = io_s1;
    assign _m2__reset = reset;
endmodule