data/full_repos/permissive/500717851/verilog/rtl/wb_mux.sv
data/verilator_xmls/03ea8007-c61a-4c58-86f9-9b8e1c5a8cff.xml
module wb_mux #(
    parameter MATCH_ADDR_0 = 32'h30000000,
    parameter MATCH_MASK_0 = 32'hFFFFF000,
    parameter MATCH_ADDR_1 = 32'h30001000,
    parameter MATCH_MASK_1 = 32'hFFFFF000
    )(
`ifdef USE_POWER_PINS
    inout vccd1,
    inout vssd1,
`endif


    input   [31:0] io_wbs_adr,
    input   [31:0] io_wbs_datwr,
    output logic [31:0] io_wbs_datrd,
    input          io_wbs_we,
    input   [ 3:0] io_wbs_sel,
    input          io_wbs_stb,
    output logic   io_wbs_ack,
    input          io_wbs_cyc,
    

    output  [31:0] io_wbs_adr_0,
    output  [31:0] io_wbs_datwr_0,
    input   [31:0] io_wbs_datrd_0,
    output         io_wbs_we_0,
    output  [ 3:0] io_wbs_sel_0,
    output         io_wbs_stb_0,
    input          io_wbs_ack_0,
    output         io_wbs_cyc_0,
    
    

    output  [31:0] io_wbs_adr_1,
    output  [31:0] io_wbs_datwr_1,
    input   [31:0] io_wbs_datrd_1,
    output         io_wbs_we_1,
    output  [ 3:0] io_wbs_sel_1,
    output         io_wbs_stb_1,
    input          io_wbs_ack_1,
    output         io_wbs_cyc_1
);

    logic match_0;
    logic match_1;

	assign match_0 = (io_wbs_adr & MATCH_MASK_0) == MATCH_ADDR_0;
	assign match_1 = (io_wbs_adr & MATCH_MASK_1) == MATCH_ADDR_1;


    assign io_wbs_adr_0     = io_wbs_adr;
    assign io_wbs_datwr_0   = io_wbs_datwr;
    assign io_wbs_we_0      = io_wbs_we;
    assign io_wbs_sel_0     = io_wbs_sel;
    assign io_wbs_stb_0     = io_wbs_stb & match_0;
    assign io_wbs_cyc_0     = io_wbs_cyc & match_0;


    assign io_wbs_adr_1     = io_wbs_adr;
    assign io_wbs_datwr_1   = io_wbs_datwr;
    assign io_wbs_we_1      = io_wbs_we;
    assign io_wbs_sel_1     = io_wbs_sel;
    assign io_wbs_stb_1     = io_wbs_stb & match_1;
    assign io_wbs_cyc_1     = io_wbs_cyc & match_1;
    
    always_comb begin
        io_wbs_datrd = '0;
        io_wbs_ack   = '0;
    
        if (match_0) begin
            io_wbs_datrd = io_wbs_datrd_0;
            io_wbs_ack   = io_wbs_ack_0;
        end 
        
        if (match_1) begin
            io_wbs_datrd = io_wbs_datrd_1;
            io_wbs_ack   = io_wbs_ack_1;
        end
    end

endmodule
module wb_mux #(
    parameter MATCH_ADDR_0 = 32'h30000000,
    parameter MATCH_MASK_0 = 32'hFFFFF000,
    parameter MATCH_ADDR_1 = 32'h30001000,
    parameter MATCH_MASK_1 = 32'hFFFFF000
    )(
`ifdef USE_POWER_PINS
    inout vccd1,
    inout vssd1,
`endif


    input   [31:0] io_wbs_adr,
    input   [31:0] io_wbs_datwr,
    output logic [31:0] io_wbs_datrd,
    input          io_wbs_we,
    input   [ 3:0] io_wbs_sel,
    input          io_wbs_stb,
    output logic   io_wbs_ack,
    input          io_wbs_cyc,
    

    output  [31:0] io_wbs_adr_0,
    output  [31:0] io_wbs_datwr_0,
    input   [31:0] io_wbs_datrd_0,
    output         io_wbs_we_0,
    output  [ 3:0] io_wbs_sel_0,
    output         io_wbs_stb_0,
    input          io_wbs_ack_0,
    output         io_wbs_cyc_0,
    
    

    output  [31:0] io_wbs_adr_1,
    output  [31:0] io_wbs_datwr_1,
    input   [31:0] io_wbs_datrd_1,
    output         io_wbs_we_1,
    output  [ 3:0] io_wbs_sel_1,
    output         io_wbs_stb_1,
    input          io_wbs_ack_1,
    output         io_wbs_cyc_1
);


    logic match_0;
    logic match_1;

	assign match_0 = (io_wbs_adr & MATCH_MASK_0) == MATCH_ADDR_0;
	assign match_1 = (io_wbs_adr & MATCH_MASK_1) == MATCH_ADDR_1;


    assign io_wbs_adr_0     = io_wbs_adr;
    assign io_wbs_datwr_0   = io_wbs_datwr;
    assign io_wbs_we_0      = io_wbs_we;
    assign io_wbs_sel_0     = io_wbs_sel;
    assign io_wbs_stb_0     = io_wbs_stb & match_0;
    assign io_wbs_cyc_0     = io_wbs_cyc & match_0;


    assign io_wbs_adr_1     = io_wbs_adr;
    assign io_wbs_datwr_1   = io_wbs_datwr;
    assign io_wbs_we_1      = io_wbs_we;
    assign io_wbs_sel_1     = io_wbs_sel;
    assign io_wbs_stb_1     = io_wbs_stb & match_1;
    assign io_wbs_cyc_1     = io_wbs_cyc & match_1;
    
    always_comb begin
        io_wbs_datrd = '0;
        io_wbs_ack   = '0;
    
        if (match_0) begin
            io_wbs_datrd = io_wbs_datrd_0;
            io_wbs_ack   = io_wbs_ack_0;
        end 
        
        if (match_1) begin
            io_wbs_datrd = io_wbs_datrd_1;
            io_wbs_ack   = io_wbs_ack_1;
        end
    end

endmodule