data/full_repos/permissive/517705285/verilog/rtl/marmot/Marmot.v
1: b"%Error: data/full_repos/permissive/517705285/verilog/rtl/marmot/Marmot.v:43: Define or directive not defined: '`MPRJ_IO_PADS'\n    input  [`MPRJ_IO_PADS-1:0] io_in,\n            ^~~~~~~~~~~~~\n%Error: data/full_repos/permissive/517705285/verilog/rtl/marmot/Marmot.v:44: Define or directive not defined: '`MPRJ_IO_PADS'\n    output [`MPRJ_IO_PADS-1:0] io_out,\n            ^~~~~~~~~~~~~\n%Error: data/full_repos/permissive/517705285/verilog/rtl/marmot/Marmot.v:45: Define or directive not defined: '`MPRJ_IO_PADS'\n    output [`MPRJ_IO_PADS-1:0] io_oeb,\n            ^~~~~~~~~~~~~\n%Error: data/full_repos/permissive/517705285/verilog/rtl/marmot/Marmot.v:51: Define or directive not defined: '`MPRJ_IO_PADS'\n    inout [`MPRJ_IO_PADS-10:0] analog_io,\n           ^~~~~~~~~~~~~\n%Error: Exiting due to 4 error(s)\n"
module Marmot
(
`ifdef USE_POWER_PINS
    inout vccd1,
    inout vssd1,
`endif


    input wb_clk_i,
    input wb_rst_i,
    input wbs_stb_i,
    input wbs_cyc_i,
    input wbs_we_i,
    input [3:0] wbs_sel_i,
    input [31:0] wbs_dat_i,
    input [31:0] wbs_adr_i,
    output wbs_ack_o,
    output [31:0] wbs_dat_o,


    input  [127:0] la_data_in,
    output [127:0] la_data_out,
    input  [127:0] la_oenb,


    input  [`MPRJ_IO_PADS-1:0] io_in,
    output [`MPRJ_IO_PADS-1:0] io_out,
    output [`MPRJ_IO_PADS-1:0] io_oeb,





    inout [`MPRJ_IO_PADS-10:0] analog_io,


    input   user_clock2,


    output [2:0] user_irq

`ifdef RAM_ON_TOP


  , output        tag_array_ext_ram_clk,
    output        tag_array_ext_ram_csb0,
    output        tag_array_ext_ram_web0,
    output [3:0]  tag_array_ext_ram_wmask0,
    output [7:0]  tag_array_ext_ram_addr0,
    output [31:0] tag_array_ext_ram_din0,
    input  [31:0] tag_array_ext_ram_dout0,
    output        tag_array_ext_ram_csb1,
    output [7:0]  tag_array_ext_ram_addr1,

    output [1:0]  data_arrays_0_ext_ram_clk,
    output [1:0]  data_arrays_0_ext_ram_csb0,
    output [1:0]  data_arrays_0_ext_ram_web0,
    output [3:0]  data_arrays_0_ext_ram_wmask00,
    output [3:0]  data_arrays_0_ext_ram_wmask01,
    output [8:0]  data_arrays_0_ext_ram_addr00,
    output [8:0]  data_arrays_0_ext_ram_addr01,
    output [31:0] data_arrays_0_ext_ram_din00,
    output [31:0] data_arrays_0_ext_ram_din01,
    input  [31:0] data_arrays_0_ext_ram_dout00,
    input  [31:0] data_arrays_0_ext_ram_dout01,
    output [1:0]  data_arrays_0_ext_ram_csb1,
    output [8:0]  data_arrays_0_ext_ram_addr10,
    output [8:0]  data_arrays_0_ext_ram_addr11,

    output        tag_array_0_ext_ram_clk,
    output        tag_array_0_ext_ram_csb0,
    output        tag_array_0_ext_ram_web0,
    output [7:0]  tag_array_0_ext_ram_wmask0,
    output [7:0]  tag_array_0_ext_ram_addr0,
    output [63:0] tag_array_0_ext_ram_din0,
    input  [63:0] tag_array_0_ext_ram_dout0,
    output        tag_array_0_ext_ram_csb1,
    output [7:0]  tag_array_0_ext_ram_addr1,

    output [3:0]  data_arrays_0_0_ext_ram_clk,
    output [3:0]  data_arrays_0_0_ext_ram_csb0,
    output [3:0]  data_arrays_0_0_ext_ram_web0,
    output [7:0]  data_arrays_0_0_ext_ram_wmask00,
    output [7:0]  data_arrays_0_0_ext_ram_wmask01,
    output [7:0]  data_arrays_0_0_ext_ram_wmask02,
    output [7:0]  data_arrays_0_0_ext_ram_wmask03,
    output [8:0]  data_arrays_0_0_ext_ram_addr00,
    output [8:0]  data_arrays_0_0_ext_ram_addr01,
    output [8:0]  data_arrays_0_0_ext_ram_addr02,
    output [8:0]  data_arrays_0_0_ext_ram_addr03,
    output [63:0] data_arrays_0_0_ext_ram_din00,
    output [63:0] data_arrays_0_0_ext_ram_din01,
    output [63:0] data_arrays_0_0_ext_ram_din02,
    output [63:0] data_arrays_0_0_ext_ram_din03,
    input  [63:0] data_arrays_0_0_ext_ram_dout00,
    input  [63:0] data_arrays_0_0_ext_ram_dout01,
    input  [63:0] data_arrays_0_0_ext_ram_dout02,
    input  [63:0] data_arrays_0_0_ext_ram_dout03,
    output [3:0]  data_arrays_0_0_ext_ram_csb1,
    output [8:0]  data_arrays_0_0_ext_ram_addr10,
    output [8:0]  data_arrays_0_0_ext_ram_addr11,
    output [8:0]  data_arrays_0_0_ext_ram_addr12,
    output [8:0]  data_arrays_0_0_ext_ram_addr13
`endif
);

`ifndef MARMOT_EMPTY


    wire clk;
    wire rst_n;
    reg  [31:0] reg_val;

    assign clk   = wb_clk_i;
    assign rst_n = reg_val[0];



    wire        valid;
    wire [3:0]  wstrb;
    reg         ready;

    assign valid = wbs_cyc_i & wbs_stb_i; 
    assign wstrb = wbs_sel_i & {4{wbs_we_i}};
    assign wbs_ack_o = ready;
    assign wbs_dat_o = reg_val;

    always @(posedge clk) begin
      if (wb_rst_i) begin
        reg_val <= 32'h00000000;
        ready <= 1'b0;
      end
      else begin
        if (valid && !ready) begin
          ready <= 1'b1;
          if (wstrb[0]) reg_val[7:0]   <= wbs_dat_i[7:0];
          if (wstrb[1]) reg_val[15:8]  <= wbs_dat_i[15:8];
          if (wstrb[2]) reg_val[23:16] <= wbs_dat_i[23:16];
          if (wstrb[3]) reg_val[31:24] <= wbs_dat_i[31:24];
        end
        else begin
          ready <= 1'b0;
        end
      end
    end





    assign la_data_out[127:32] = 96'd0;

    wire [127:0] la_data_input;

    assign la_data_input = ~la_oenb & la_data_in;



    assign user_irq = 3'b000;



`ifdef RAM_ON_TOP
    wire [5:0]  tag_array_ext_RW0_addr;
    wire        tag_array_ext_RW0_en;
    wire        tag_array_ext_RW0_clk;
    wire        tag_array_ext_RW0_wmode;
    wire [20:0] tag_array_ext_RW0_wdata;
    wire [20:0] tag_array_ext_RW0_rdata;
    wire [9:0]  data_arrays_0_ext_RW0_addr;
    wire        data_arrays_0_ext_RW0_en;
    wire        data_arrays_0_ext_RW0_clk;
    wire        data_arrays_0_ext_RW0_wmode;
    wire [31:0] data_arrays_0_ext_RW0_wdata;
    wire [31:0] data_arrays_0_ext_RW0_rdata;
    wire [3:0]  data_arrays_0_ext_RW0_wmask;
    wire [6:0]  tag_array_0_ext_RW0_addr;
    wire        tag_array_0_ext_RW0_en;
    wire        tag_array_0_ext_RW0_clk;
    wire        tag_array_0_ext_RW0_wmode;
    wire [37:0] tag_array_0_ext_RW0_wdata;
    wire [37:0] tag_array_0_ext_RW0_rdata;
    wire [1:0]  tag_array_0_ext_RW0_wmask;
    wire [10:0] data_arrays_0_0_ext_RW0_addr;
    wire        data_arrays_0_0_ext_RW0_en;
    wire        data_arrays_0_0_ext_RW0_clk;
    wire        data_arrays_0_0_ext_RW0_wmode;
    wire [63:0] data_arrays_0_0_ext_RW0_wdata;
    wire [63:0] data_arrays_0_0_ext_RW0_rdata;
    wire [1:0]  data_arrays_0_0_ext_RW0_wmask;
`endif

    MarmotCaravelChip MarmotCaravelChip (
     .clk(clk),
     .rst_n(rst_n),
     .io_in_0(io_in[0]),
     .io_in_1(io_in[1]),
     .io_in_2(io_in[2]),
     .io_in_3(io_in[3]),
     .io_in_4(io_in[4]),
     .io_in_5(io_in[5]),
     .io_in_6(io_in[6]),
     .io_in_7(io_in[7]),
     .io_in_8(io_in[8]),
     .io_in_9(io_in[9]),
     .io_in_10(io_in[10]),
     .io_in_11(io_in[11]),
     .io_in_12(io_in[12]),
     .io_in_13(io_in[13]),
     .io_in_14(io_in[14]),
     .io_in_15(io_in[15]),
     .io_in_16(io_in[16]),
     .io_in_17(io_in[17]),
     .io_in_18(io_in[18]),
     .io_in_19(io_in[19]),
     .io_in_20(io_in[20]),
     .io_in_21(io_in[21]),
     .io_in_22(io_in[22]),
     .io_in_23(io_in[23]),
     .io_in_24(io_in[24]),
     .io_in_25(io_in[25]),
     .io_in_26(io_in[26]),
     .io_in_27(io_in[27]),
     .io_in_28(io_in[28]),
     .io_in_29(io_in[29]),
     .io_in_30(io_in[30]),
     .io_in_31(io_in[31]),
     .io_in_32(io_in[32]),
     .io_in_33(io_in[33]),
     .io_in_34(io_in[34]),
     .io_in_35(io_in[35]),
     .io_in_36(io_in[36]),
     .io_in_37(io_in[37]),
     .io_out_0(io_out[0]),
     .io_out_1(io_out[1]),
     .io_out_2(io_out[2]),
     .io_out_3(io_out[3]),
     .io_out_4(io_out[4]),
     .io_out_5(io_out[5]),
     .io_out_6(io_out[6]),
     .io_out_7(io_out[7]),
     .io_out_8(io_out[8]),
     .io_out_9(io_out[9]),
     .io_out_10(io_out[10]),
     .io_out_11(io_out[11]),
     .io_out_12(io_out[12]),
     .io_out_13(io_out[13]),
     .io_out_14(io_out[14]),
     .io_out_15(io_out[15]),
     .io_out_16(io_out[16]),
     .io_out_17(io_out[17]),
     .io_out_18(io_out[18]),
     .io_out_19(io_out[19]),
     .io_out_20(io_out[20]),
     .io_out_21(io_out[21]),
     .io_out_22(io_out[22]),
     .io_out_23(io_out[23]),
     .io_out_24(io_out[24]),
     .io_out_25(io_out[25]),
     .io_out_26(io_out[26]),
     .io_out_27(io_out[27]),
     .io_out_28(io_out[28]),
     .io_out_29(io_out[29]),
     .io_out_30(io_out[30]),
     .io_out_31(io_out[31]),
     .io_out_32(io_out[32]),
     .io_out_33(io_out[33]),
     .io_out_34(io_out[34]),
     .io_out_35(io_out[35]),
     .io_out_36(io_out[36]),
     .io_out_37(io_out[37]),
     .io_oeb_0(io_oeb[0]),
     .io_oeb_1(io_oeb[1]),
     .io_oeb_2(io_oeb[2]),
     .io_oeb_3(io_oeb[3]),
     .io_oeb_4(io_oeb[4]),
     .io_oeb_5(io_oeb[5]),
     .io_oeb_6(io_oeb[6]),
     .io_oeb_7(io_oeb[7]),
     .io_oeb_8(io_oeb[8]),
     .io_oeb_9(io_oeb[9]),
     .io_oeb_10(io_oeb[10]),
     .io_oeb_11(io_oeb[11]),
     .io_oeb_12(io_oeb[12]),
     .io_oeb_13(io_oeb[13]),
     .io_oeb_14(io_oeb[14]),
     .io_oeb_15(io_oeb[15]),
     .io_oeb_16(io_oeb[16]),
     .io_oeb_17(io_oeb[17]),
     .io_oeb_18(io_oeb[18]),
     .io_oeb_19(io_oeb[19]),
     .io_oeb_20(io_oeb[20]),
     .io_oeb_21(io_oeb[21]),
     .io_oeb_22(io_oeb[22]),
     .io_oeb_23(io_oeb[23]),
     .io_oeb_24(io_oeb[24]),
     .io_oeb_25(io_oeb[25]),
     .io_oeb_26(io_oeb[26]),
     .io_oeb_27(io_oeb[27]),
     .io_oeb_28(io_oeb[28]),
     .io_oeb_29(io_oeb[29]),
     .io_oeb_30(io_oeb[30]),
     .io_oeb_31(io_oeb[31]),
     .io_oeb_32(io_oeb[32]),
     .io_oeb_33(io_oeb[33]),
     .io_oeb_34(io_oeb[34]),
     .io_oeb_35(io_oeb[35]),
     .io_oeb_36(io_oeb[36]),
     .io_oeb_37(io_oeb[37]),
     .gpio_out_0(la_data_out[0]),
     .gpio_out_1(la_data_out[1]),
     .gpio_out_2(la_data_out[2]),
     .gpio_out_3(la_data_out[3]),
     .gpio_out_4(la_data_out[4]),
     .gpio_out_5(la_data_out[5]),
     .gpio_out_6(la_data_out[6]),
     .gpio_out_7(la_data_out[7]),
     .gpio_out_8(la_data_out[8]),
     .gpio_out_9(la_data_out[9]),
     .gpio_out_10(la_data_out[10]),
     .gpio_out_11(la_data_out[11]),
     .gpio_out_12(la_data_out[12]),
     .gpio_out_13(la_data_out[13]),
     .gpio_out_14(la_data_out[14]),
     .gpio_out_15(la_data_out[15]),
     .gpio_out_16(la_data_out[16]),
     .gpio_out_17(la_data_out[17]),
     .gpio_out_18(la_data_out[18]),
     .gpio_out_19(la_data_out[19]),
     .gpio_out_20(la_data_out[20]),
     .gpio_out_21(la_data_out[21]),
     .gpio_out_22(la_data_out[22]),
     .gpio_out_23(la_data_out[23]),
     .gpio_out_24(la_data_out[24]),
     .gpio_out_25(la_data_out[25]),
     .gpio_out_26(la_data_out[26]),
     .gpio_out_27(la_data_out[27]),
     .gpio_out_28(la_data_out[28]),
     .gpio_out_29(la_data_out[29]),
     .gpio_out_30(la_data_out[30]),
     .gpio_out_31(la_data_out[31]),
     .gpio_in_0(la_data_input[0]),
     .gpio_in_1(la_data_input[1]),
     .gpio_in_2(la_data_input[2]),
     .gpio_in_3(la_data_input[3]),
     .gpio_in_4(la_data_input[4]),
     .gpio_in_5(la_data_input[5]),
     .gpio_in_6(la_data_input[6]),
     .gpio_in_7(la_data_input[7]),
     .gpio_in_8(la_data_input[8]),
     .gpio_in_9(la_data_input[9]),
     .gpio_in_10(la_data_input[10]),
     .gpio_in_11(la_data_input[11]),
     .gpio_in_12(la_data_input[12]),
     .gpio_in_13(la_data_input[13]),
     .gpio_in_14(la_data_input[14]),
     .gpio_in_15(la_data_input[15]),
     .gpio_in_16(la_data_input[16]),
     .gpio_in_17(la_data_input[17]),
     .gpio_in_18(la_data_input[18]),
     .gpio_in_19(la_data_input[19]),
     .gpio_in_20(la_data_input[20]),
     .gpio_in_21(la_data_input[21]),
     .gpio_in_22(la_data_input[22]),
     .gpio_in_23(la_data_input[23]),
     .gpio_in_24(la_data_input[24]),
     .gpio_in_25(la_data_input[25]),
     .gpio_in_26(la_data_input[26]),
     .gpio_in_27(la_data_input[27]),
     .gpio_in_28(la_data_input[28]),
     .gpio_in_29(la_data_input[29]),
     .gpio_in_30(la_data_input[30]),
     .gpio_in_31(la_data_input[31])
`ifdef RAM_ON_TOP
   , .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr),
     .tag_array_ext_RW0_en(tag_array_ext_RW0_en),
     .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk),
     .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode),
     .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata),
     .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata),
     .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr),
     .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en),
     .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk),
     .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode),
     .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata),
     .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata),
     .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask),
     .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr),
     .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en),
     .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk),
     .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode),
     .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata),
     .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata),
     .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask),
     .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr),
     .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en),
     .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk),
     .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode),
     .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata),
     .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata),
     .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask)
`endif
    );

`ifdef RAM_ON_TOP



    tag_array_ext tag_array_ext (
      .RW0_addr(tag_array_ext_RW0_addr),
      .RW0_en(tag_array_ext_RW0_en),
      .RW0_clk(tag_array_ext_RW0_clk),
      .RW0_wmode(tag_array_ext_RW0_wmode),
      .RW0_wdata(tag_array_ext_RW0_wdata),
      .RW0_rdata(tag_array_ext_RW0_rdata),
      .ram_clk(tag_array_ext_ram_clk),
      .ram_csb0(tag_array_ext_ram_csb0),
      .ram_web0(tag_array_ext_ram_web0),
      .ram_wmask0(tag_array_ext_ram_wmask0),
      .ram_addr0(tag_array_ext_ram_addr0),
      .ram_din0(tag_array_ext_ram_din0),
      .ram_dout0(tag_array_ext_ram_dout0),
      .ram_csb1(tag_array_ext_ram_csb1),
      .ram_addr1(tag_array_ext_ram_addr1)
    );


    data_arrays_0_ext data_arrays_0_ext (
      .RW0_addr(data_arrays_0_ext_RW0_addr),
      .RW0_en(data_arrays_0_ext_RW0_en),
      .RW0_clk(data_arrays_0_ext_RW0_clk),
      .RW0_wmode(data_arrays_0_ext_RW0_wmode),
      .RW0_wdata(data_arrays_0_ext_RW0_wdata),
      .RW0_rdata(data_arrays_0_ext_RW0_rdata),
      .RW0_wmask(data_arrays_0_ext_RW0_wmask),
      .ram_clk(data_arrays_0_ext_ram_clk),
      .ram_csb0(data_arrays_0_ext_ram_csb0),
      .ram_web0(data_arrays_0_ext_ram_web0),
      .ram_wmask00(data_arrays_0_ext_ram_wmask00),
      .ram_wmask01(data_arrays_0_ext_ram_wmask01),
      .ram_addr00(data_arrays_0_ext_ram_addr00),
      .ram_addr01(data_arrays_0_ext_ram_addr01),
      .ram_din00(data_arrays_0_ext_ram_din00),
      .ram_din01(data_arrays_0_ext_ram_din01),
      .ram_dout00(data_arrays_0_ext_ram_dout00),
      .ram_dout01(data_arrays_0_ext_ram_dout01),
      .ram_csb1(data_arrays_0_ext_ram_csb1),
      .ram_addr10(data_arrays_0_ext_ram_addr10),
      .ram_addr11(data_arrays_0_ext_ram_addr11)
    );


    tag_array_0_ext tag_array_0_ext (
      .RW0_addr(tag_array_0_ext_RW0_addr),
      .RW0_en(tag_array_0_ext_RW0_en),
      .RW0_clk(tag_array_0_ext_RW0_clk),
      .RW0_wmode(tag_array_0_ext_RW0_wmode),
      .RW0_wdata(tag_array_0_ext_RW0_wdata),
      .RW0_rdata(tag_array_0_ext_RW0_rdata),
      .RW0_wmask(tag_array_0_ext_RW0_wmask),
      .ram_clk(tag_array_0_ext_ram_clk),
      .ram_csb0(tag_array_0_ext_ram_csb0),
      .ram_web0(tag_array_0_ext_ram_web0),
      .ram_wmask0(tag_array_0_ext_ram_wmask0),
      .ram_addr0(tag_array_0_ext_ram_addr0),
      .ram_din0(tag_array_0_ext_ram_din0),
      .ram_dout0(tag_array_0_ext_ram_dout0),
      .ram_csb1(tag_array_0_ext_ram_csb1),
      .ram_addr1(tag_array_0_ext_ram_addr1)
    );


    data_arrays_0_0_ext data_arrays_0_0_ext (
      .RW0_addr(data_arrays_0_0_ext_RW0_addr),
      .RW0_en(data_arrays_0_0_ext_RW0_en),
      .RW0_clk(data_arrays_0_0_ext_RW0_clk),
      .RW0_wmode(data_arrays_0_0_ext_RW0_wmode),
      .RW0_wdata(data_arrays_0_0_ext_RW0_wdata),
      .RW0_rdata(data_arrays_0_0_ext_RW0_rdata),
      .RW0_wmask(data_arrays_0_0_ext_RW0_wmask),
      .ram_clk(data_arrays_0_0_ext_ram_clk),
      .ram_csb0(data_arrays_0_0_ext_ram_csb0),
      .ram_web0(data_arrays_0_0_ext_ram_web0),
      .ram_wmask00(data_arrays_0_0_ext_ram_wmask00),
      .ram_wmask01(data_arrays_0_0_ext_ram_wmask01),
      .ram_wmask02(data_arrays_0_0_ext_ram_wmask02),
      .ram_wmask03(data_arrays_0_0_ext_ram_wmask03),
      .ram_addr00(data_arrays_0_0_ext_ram_addr00),
      .ram_addr01(data_arrays_0_0_ext_ram_addr01),
      .ram_addr02(data_arrays_0_0_ext_ram_addr02),
      .ram_addr03(data_arrays_0_0_ext_ram_addr03),
      .ram_din00(data_arrays_0_0_ext_ram_din00),
      .ram_din01(data_arrays_0_0_ext_ram_din01),
      .ram_din02(data_arrays_0_0_ext_ram_din02),
      .ram_din03(data_arrays_0_0_ext_ram_din03),
      .ram_dout00(data_arrays_0_0_ext_ram_dout00),
      .ram_dout01(data_arrays_0_0_ext_ram_dout01),
      .ram_dout02(data_arrays_0_0_ext_ram_dout02),
      .ram_dout03(data_arrays_0_0_ext_ram_dout03),
      .ram_csb1(data_arrays_0_0_ext_ram_csb1),
      .ram_addr10(data_arrays_0_0_ext_ram_addr10),
      .ram_addr11(data_arrays_0_0_ext_ram_addr11),
      .ram_addr12(data_arrays_0_0_ext_ram_addr12),
      .ram_addr13(data_arrays_0_0_ext_ram_addr13)
    );
`endif
`endif

endmodule
module Marmot
(
`ifdef USE_POWER_PINS
    inout vccd1,
    inout vssd1,
`endif


    input wb_clk_i,
    input wb_rst_i,
    input wbs_stb_i,
    input wbs_cyc_i,
    input wbs_we_i,
    input [3:0] wbs_sel_i,
    input [31:0] wbs_dat_i,
    input [31:0] wbs_adr_i,
    output wbs_ack_o,
    output [31:0] wbs_dat_o,


    input  [127:0] la_data_in,
    output [127:0] la_data_out,
    input  [127:0] la_oenb,


    input  [`MPRJ_IO_PADS-1:0] io_in,
    output [`MPRJ_IO_PADS-1:0] io_out,
    output [`MPRJ_IO_PADS-1:0] io_oeb,





    inout [`MPRJ_IO_PADS-10:0] analog_io,


    input   user_clock2,


    output [2:0] user_irq

`ifdef RAM_ON_TOP


  , output        tag_array_ext_ram_clk,
    output        tag_array_ext_ram_csb0,
    output        tag_array_ext_ram_web0,
    output [3:0]  tag_array_ext_ram_wmask0,
    output [7:0]  tag_array_ext_ram_addr0,
    output [31:0] tag_array_ext_ram_din0,
    input  [31:0] tag_array_ext_ram_dout0,
    output        tag_array_ext_ram_csb1,
    output [7:0]  tag_array_ext_ram_addr1,

    output [1:0]  data_arrays_0_ext_ram_clk,
    output [1:0]  data_arrays_0_ext_ram_csb0,
    output [1:0]  data_arrays_0_ext_ram_web0,
    output [3:0]  data_arrays_0_ext_ram_wmask00,
    output [3:0]  data_arrays_0_ext_ram_wmask01,
    output [8:0]  data_arrays_0_ext_ram_addr00,
    output [8:0]  data_arrays_0_ext_ram_addr01,
    output [31:0] data_arrays_0_ext_ram_din00,
    output [31:0] data_arrays_0_ext_ram_din01,
    input  [31:0] data_arrays_0_ext_ram_dout00,
    input  [31:0] data_arrays_0_ext_ram_dout01,
    output [1:0]  data_arrays_0_ext_ram_csb1,
    output [8:0]  data_arrays_0_ext_ram_addr10,
    output [8:0]  data_arrays_0_ext_ram_addr11,

    output        tag_array_0_ext_ram_clk,
    output        tag_array_0_ext_ram_csb0,
    output        tag_array_0_ext_ram_web0,
    output [7:0]  tag_array_0_ext_ram_wmask0,
    output [7:0]  tag_array_0_ext_ram_addr0,
    output [63:0] tag_array_0_ext_ram_din0,
    input  [63:0] tag_array_0_ext_ram_dout0,
    output        tag_array_0_ext_ram_csb1,
    output [7:0]  tag_array_0_ext_ram_addr1,

    output [3:0]  data_arrays_0_0_ext_ram_clk,
    output [3:0]  data_arrays_0_0_ext_ram_csb0,
    output [3:0]  data_arrays_0_0_ext_ram_web0,
    output [7:0]  data_arrays_0_0_ext_ram_wmask00,
    output [7:0]  data_arrays_0_0_ext_ram_wmask01,
    output [7:0]  data_arrays_0_0_ext_ram_wmask02,
    output [7:0]  data_arrays_0_0_ext_ram_wmask03,
    output [8:0]  data_arrays_0_0_ext_ram_addr00,
    output [8:0]  data_arrays_0_0_ext_ram_addr01,
    output [8:0]  data_arrays_0_0_ext_ram_addr02,
    output [8:0]  data_arrays_0_0_ext_ram_addr03,
    output [63:0] data_arrays_0_0_ext_ram_din00,
    output [63:0] data_arrays_0_0_ext_ram_din01,
    output [63:0] data_arrays_0_0_ext_ram_din02,
    output [63:0] data_arrays_0_0_ext_ram_din03,
    input  [63:0] data_arrays_0_0_ext_ram_dout00,
    input  [63:0] data_arrays_0_0_ext_ram_dout01,
    input  [63:0] data_arrays_0_0_ext_ram_dout02,
    input  [63:0] data_arrays_0_0_ext_ram_dout03,
    output [3:0]  data_arrays_0_0_ext_ram_csb1,
    output [8:0]  data_arrays_0_0_ext_ram_addr10,
    output [8:0]  data_arrays_0_0_ext_ram_addr11,
    output [8:0]  data_arrays_0_0_ext_ram_addr12,
    output [8:0]  data_arrays_0_0_ext_ram_addr13
`endif
);


`ifndef MARMOT_EMPTY


    wire clk;
    wire rst_n;
    reg  [31:0] reg_val;

    assign clk   = wb_clk_i;
    assign rst_n = reg_val[0];



    wire        valid;
    wire [3:0]  wstrb;
    reg         ready;

    assign valid = wbs_cyc_i & wbs_stb_i; 
    assign wstrb = wbs_sel_i & {4{wbs_we_i}};
    assign wbs_ack_o = ready;
    assign wbs_dat_o = reg_val;

    always @(posedge clk) begin
      if (wb_rst_i) begin
        reg_val <= 32'h00000000;
        ready <= 1'b0;
      end
      else begin
        if (valid && !ready) begin
          ready <= 1'b1;
          if (wstrb[0]) reg_val[7:0]   <= wbs_dat_i[7:0];
          if (wstrb[1]) reg_val[15:8]  <= wbs_dat_i[15:8];
          if (wstrb[2]) reg_val[23:16] <= wbs_dat_i[23:16];
          if (wstrb[3]) reg_val[31:24] <= wbs_dat_i[31:24];
        end
        else begin
          ready <= 1'b0;
        end
      end
    end





    assign la_data_out[127:32] = 96'd0;

    wire [127:0] la_data_input;

    assign la_data_input = ~la_oenb & la_data_in;



    assign user_irq = 3'b000;



`ifdef RAM_ON_TOP
    wire [5:0]  tag_array_ext_RW0_addr;
    wire        tag_array_ext_RW0_en;
    wire        tag_array_ext_RW0_clk;
    wire        tag_array_ext_RW0_wmode;
    wire [20:0] tag_array_ext_RW0_wdata;
    wire [20:0] tag_array_ext_RW0_rdata;
    wire [9:0]  data_arrays_0_ext_RW0_addr;
    wire        data_arrays_0_ext_RW0_en;
    wire        data_arrays_0_ext_RW0_clk;
    wire        data_arrays_0_ext_RW0_wmode;
    wire [31:0] data_arrays_0_ext_RW0_wdata;
    wire [31:0] data_arrays_0_ext_RW0_rdata;
    wire [3:0]  data_arrays_0_ext_RW0_wmask;
    wire [6:0]  tag_array_0_ext_RW0_addr;
    wire        tag_array_0_ext_RW0_en;
    wire        tag_array_0_ext_RW0_clk;
    wire        tag_array_0_ext_RW0_wmode;
    wire [37:0] tag_array_0_ext_RW0_wdata;
    wire [37:0] tag_array_0_ext_RW0_rdata;
    wire [1:0]  tag_array_0_ext_RW0_wmask;
    wire [10:0] data_arrays_0_0_ext_RW0_addr;
    wire        data_arrays_0_0_ext_RW0_en;
    wire        data_arrays_0_0_ext_RW0_clk;
    wire        data_arrays_0_0_ext_RW0_wmode;
    wire [63:0] data_arrays_0_0_ext_RW0_wdata;
    wire [63:0] data_arrays_0_0_ext_RW0_rdata;
    wire [1:0]  data_arrays_0_0_ext_RW0_wmask;
`endif

    MarmotCaravelChip MarmotCaravelChip (
     .clk(clk),
     .rst_n(rst_n),
     .io_in_0(io_in[0]),
     .io_in_1(io_in[1]),
     .io_in_2(io_in[2]),
     .io_in_3(io_in[3]),
     .io_in_4(io_in[4]),
     .io_in_5(io_in[5]),
     .io_in_6(io_in[6]),
     .io_in_7(io_in[7]),
     .io_in_8(io_in[8]),
     .io_in_9(io_in[9]),
     .io_in_10(io_in[10]),
     .io_in_11(io_in[11]),
     .io_in_12(io_in[12]),
     .io_in_13(io_in[13]),
     .io_in_14(io_in[14]),
     .io_in_15(io_in[15]),
     .io_in_16(io_in[16]),
     .io_in_17(io_in[17]),
     .io_in_18(io_in[18]),
     .io_in_19(io_in[19]),
     .io_in_20(io_in[20]),
     .io_in_21(io_in[21]),
     .io_in_22(io_in[22]),
     .io_in_23(io_in[23]),
     .io_in_24(io_in[24]),
     .io_in_25(io_in[25]),
     .io_in_26(io_in[26]),
     .io_in_27(io_in[27]),
     .io_in_28(io_in[28]),
     .io_in_29(io_in[29]),
     .io_in_30(io_in[30]),
     .io_in_31(io_in[31]),
     .io_in_32(io_in[32]),
     .io_in_33(io_in[33]),
     .io_in_34(io_in[34]),
     .io_in_35(io_in[35]),
     .io_in_36(io_in[36]),
     .io_in_37(io_in[37]),
     .io_out_0(io_out[0]),
     .io_out_1(io_out[1]),
     .io_out_2(io_out[2]),
     .io_out_3(io_out[3]),
     .io_out_4(io_out[4]),
     .io_out_5(io_out[5]),
     .io_out_6(io_out[6]),
     .io_out_7(io_out[7]),
     .io_out_8(io_out[8]),
     .io_out_9(io_out[9]),
     .io_out_10(io_out[10]),
     .io_out_11(io_out[11]),
     .io_out_12(io_out[12]),
     .io_out_13(io_out[13]),
     .io_out_14(io_out[14]),
     .io_out_15(io_out[15]),
     .io_out_16(io_out[16]),
     .io_out_17(io_out[17]),
     .io_out_18(io_out[18]),
     .io_out_19(io_out[19]),
     .io_out_20(io_out[20]),
     .io_out_21(io_out[21]),
     .io_out_22(io_out[22]),
     .io_out_23(io_out[23]),
     .io_out_24(io_out[24]),
     .io_out_25(io_out[25]),
     .io_out_26(io_out[26]),
     .io_out_27(io_out[27]),
     .io_out_28(io_out[28]),
     .io_out_29(io_out[29]),
     .io_out_30(io_out[30]),
     .io_out_31(io_out[31]),
     .io_out_32(io_out[32]),
     .io_out_33(io_out[33]),
     .io_out_34(io_out[34]),
     .io_out_35(io_out[35]),
     .io_out_36(io_out[36]),
     .io_out_37(io_out[37]),
     .io_oeb_0(io_oeb[0]),
     .io_oeb_1(io_oeb[1]),
     .io_oeb_2(io_oeb[2]),
     .io_oeb_3(io_oeb[3]),
     .io_oeb_4(io_oeb[4]),
     .io_oeb_5(io_oeb[5]),
     .io_oeb_6(io_oeb[6]),
     .io_oeb_7(io_oeb[7]),
     .io_oeb_8(io_oeb[8]),
     .io_oeb_9(io_oeb[9]),
     .io_oeb_10(io_oeb[10]),
     .io_oeb_11(io_oeb[11]),
     .io_oeb_12(io_oeb[12]),
     .io_oeb_13(io_oeb[13]),
     .io_oeb_14(io_oeb[14]),
     .io_oeb_15(io_oeb[15]),
     .io_oeb_16(io_oeb[16]),
     .io_oeb_17(io_oeb[17]),
     .io_oeb_18(io_oeb[18]),
     .io_oeb_19(io_oeb[19]),
     .io_oeb_20(io_oeb[20]),
     .io_oeb_21(io_oeb[21]),
     .io_oeb_22(io_oeb[22]),
     .io_oeb_23(io_oeb[23]),
     .io_oeb_24(io_oeb[24]),
     .io_oeb_25(io_oeb[25]),
     .io_oeb_26(io_oeb[26]),
     .io_oeb_27(io_oeb[27]),
     .io_oeb_28(io_oeb[28]),
     .io_oeb_29(io_oeb[29]),
     .io_oeb_30(io_oeb[30]),
     .io_oeb_31(io_oeb[31]),
     .io_oeb_32(io_oeb[32]),
     .io_oeb_33(io_oeb[33]),
     .io_oeb_34(io_oeb[34]),
     .io_oeb_35(io_oeb[35]),
     .io_oeb_36(io_oeb[36]),
     .io_oeb_37(io_oeb[37]),
     .gpio_out_0(la_data_out[0]),
     .gpio_out_1(la_data_out[1]),
     .gpio_out_2(la_data_out[2]),
     .gpio_out_3(la_data_out[3]),
     .gpio_out_4(la_data_out[4]),
     .gpio_out_5(la_data_out[5]),
     .gpio_out_6(la_data_out[6]),
     .gpio_out_7(la_data_out[7]),
     .gpio_out_8(la_data_out[8]),
     .gpio_out_9(la_data_out[9]),
     .gpio_out_10(la_data_out[10]),
     .gpio_out_11(la_data_out[11]),
     .gpio_out_12(la_data_out[12]),
     .gpio_out_13(la_data_out[13]),
     .gpio_out_14(la_data_out[14]),
     .gpio_out_15(la_data_out[15]),
     .gpio_out_16(la_data_out[16]),
     .gpio_out_17(la_data_out[17]),
     .gpio_out_18(la_data_out[18]),
     .gpio_out_19(la_data_out[19]),
     .gpio_out_20(la_data_out[20]),
     .gpio_out_21(la_data_out[21]),
     .gpio_out_22(la_data_out[22]),
     .gpio_out_23(la_data_out[23]),
     .gpio_out_24(la_data_out[24]),
     .gpio_out_25(la_data_out[25]),
     .gpio_out_26(la_data_out[26]),
     .gpio_out_27(la_data_out[27]),
     .gpio_out_28(la_data_out[28]),
     .gpio_out_29(la_data_out[29]),
     .gpio_out_30(la_data_out[30]),
     .gpio_out_31(la_data_out[31]),
     .gpio_in_0(la_data_input[0]),
     .gpio_in_1(la_data_input[1]),
     .gpio_in_2(la_data_input[2]),
     .gpio_in_3(la_data_input[3]),
     .gpio_in_4(la_data_input[4]),
     .gpio_in_5(la_data_input[5]),
     .gpio_in_6(la_data_input[6]),
     .gpio_in_7(la_data_input[7]),
     .gpio_in_8(la_data_input[8]),
     .gpio_in_9(la_data_input[9]),
     .gpio_in_10(la_data_input[10]),
     .gpio_in_11(la_data_input[11]),
     .gpio_in_12(la_data_input[12]),
     .gpio_in_13(la_data_input[13]),
     .gpio_in_14(la_data_input[14]),
     .gpio_in_15(la_data_input[15]),
     .gpio_in_16(la_data_input[16]),
     .gpio_in_17(la_data_input[17]),
     .gpio_in_18(la_data_input[18]),
     .gpio_in_19(la_data_input[19]),
     .gpio_in_20(la_data_input[20]),
     .gpio_in_21(la_data_input[21]),
     .gpio_in_22(la_data_input[22]),
     .gpio_in_23(la_data_input[23]),
     .gpio_in_24(la_data_input[24]),
     .gpio_in_25(la_data_input[25]),
     .gpio_in_26(la_data_input[26]),
     .gpio_in_27(la_data_input[27]),
     .gpio_in_28(la_data_input[28]),
     .gpio_in_29(la_data_input[29]),
     .gpio_in_30(la_data_input[30]),
     .gpio_in_31(la_data_input[31])
`ifdef RAM_ON_TOP
   , .tag_array_ext_RW0_addr(tag_array_ext_RW0_addr),
     .tag_array_ext_RW0_en(tag_array_ext_RW0_en),
     .tag_array_ext_RW0_clk(tag_array_ext_RW0_clk),
     .tag_array_ext_RW0_wmode(tag_array_ext_RW0_wmode),
     .tag_array_ext_RW0_wdata(tag_array_ext_RW0_wdata),
     .tag_array_ext_RW0_rdata(tag_array_ext_RW0_rdata),
     .data_arrays_0_ext_RW0_addr(data_arrays_0_ext_RW0_addr),
     .data_arrays_0_ext_RW0_en(data_arrays_0_ext_RW0_en),
     .data_arrays_0_ext_RW0_clk(data_arrays_0_ext_RW0_clk),
     .data_arrays_0_ext_RW0_wmode(data_arrays_0_ext_RW0_wmode),
     .data_arrays_0_ext_RW0_wdata(data_arrays_0_ext_RW0_wdata),
     .data_arrays_0_ext_RW0_rdata(data_arrays_0_ext_RW0_rdata),
     .data_arrays_0_ext_RW0_wmask(data_arrays_0_ext_RW0_wmask),
     .tag_array_0_ext_RW0_addr(tag_array_0_ext_RW0_addr),
     .tag_array_0_ext_RW0_en(tag_array_0_ext_RW0_en),
     .tag_array_0_ext_RW0_clk(tag_array_0_ext_RW0_clk),
     .tag_array_0_ext_RW0_wmode(tag_array_0_ext_RW0_wmode),
     .tag_array_0_ext_RW0_wdata(tag_array_0_ext_RW0_wdata),
     .tag_array_0_ext_RW0_rdata(tag_array_0_ext_RW0_rdata),
     .tag_array_0_ext_RW0_wmask(tag_array_0_ext_RW0_wmask),
     .data_arrays_0_0_ext_RW0_addr(data_arrays_0_0_ext_RW0_addr),
     .data_arrays_0_0_ext_RW0_en(data_arrays_0_0_ext_RW0_en),
     .data_arrays_0_0_ext_RW0_clk(data_arrays_0_0_ext_RW0_clk),
     .data_arrays_0_0_ext_RW0_wmode(data_arrays_0_0_ext_RW0_wmode),
     .data_arrays_0_0_ext_RW0_wdata(data_arrays_0_0_ext_RW0_wdata),
     .data_arrays_0_0_ext_RW0_rdata(data_arrays_0_0_ext_RW0_rdata),
     .data_arrays_0_0_ext_RW0_wmask(data_arrays_0_0_ext_RW0_wmask)
`endif
    );

`ifdef RAM_ON_TOP



    tag_array_ext tag_array_ext (
      .RW0_addr(tag_array_ext_RW0_addr),
      .RW0_en(tag_array_ext_RW0_en),
      .RW0_clk(tag_array_ext_RW0_clk),
      .RW0_wmode(tag_array_ext_RW0_wmode),
      .RW0_wdata(tag_array_ext_RW0_wdata),
      .RW0_rdata(tag_array_ext_RW0_rdata),
      .ram_clk(tag_array_ext_ram_clk),
      .ram_csb0(tag_array_ext_ram_csb0),
      .ram_web0(tag_array_ext_ram_web0),
      .ram_wmask0(tag_array_ext_ram_wmask0),
      .ram_addr0(tag_array_ext_ram_addr0),
      .ram_din0(tag_array_ext_ram_din0),
      .ram_dout0(tag_array_ext_ram_dout0),
      .ram_csb1(tag_array_ext_ram_csb1),
      .ram_addr1(tag_array_ext_ram_addr1)
    );


    data_arrays_0_ext data_arrays_0_ext (
      .RW0_addr(data_arrays_0_ext_RW0_addr),
      .RW0_en(data_arrays_0_ext_RW0_en),
      .RW0_clk(data_arrays_0_ext_RW0_clk),
      .RW0_wmode(data_arrays_0_ext_RW0_wmode),
      .RW0_wdata(data_arrays_0_ext_RW0_wdata),
      .RW0_rdata(data_arrays_0_ext_RW0_rdata),
      .RW0_wmask(data_arrays_0_ext_RW0_wmask),
      .ram_clk(data_arrays_0_ext_ram_clk),
      .ram_csb0(data_arrays_0_ext_ram_csb0),
      .ram_web0(data_arrays_0_ext_ram_web0),
      .ram_wmask00(data_arrays_0_ext_ram_wmask00),
      .ram_wmask01(data_arrays_0_ext_ram_wmask01),
      .ram_addr00(data_arrays_0_ext_ram_addr00),
      .ram_addr01(data_arrays_0_ext_ram_addr01),
      .ram_din00(data_arrays_0_ext_ram_din00),
      .ram_din01(data_arrays_0_ext_ram_din01),
      .ram_dout00(data_arrays_0_ext_ram_dout00),
      .ram_dout01(data_arrays_0_ext_ram_dout01),
      .ram_csb1(data_arrays_0_ext_ram_csb1),
      .ram_addr10(data_arrays_0_ext_ram_addr10),
      .ram_addr11(data_arrays_0_ext_ram_addr11)
    );


    tag_array_0_ext tag_array_0_ext (
      .RW0_addr(tag_array_0_ext_RW0_addr),
      .RW0_en(tag_array_0_ext_RW0_en),
      .RW0_clk(tag_array_0_ext_RW0_clk),
      .RW0_wmode(tag_array_0_ext_RW0_wmode),
      .RW0_wdata(tag_array_0_ext_RW0_wdata),
      .RW0_rdata(tag_array_0_ext_RW0_rdata),
      .RW0_wmask(tag_array_0_ext_RW0_wmask),
      .ram_clk(tag_array_0_ext_ram_clk),
      .ram_csb0(tag_array_0_ext_ram_csb0),
      .ram_web0(tag_array_0_ext_ram_web0),
      .ram_wmask0(tag_array_0_ext_ram_wmask0),
      .ram_addr0(tag_array_0_ext_ram_addr0),
      .ram_din0(tag_array_0_ext_ram_din0),
      .ram_dout0(tag_array_0_ext_ram_dout0),
      .ram_csb1(tag_array_0_ext_ram_csb1),
      .ram_addr1(tag_array_0_ext_ram_addr1)
    );


    data_arrays_0_0_ext data_arrays_0_0_ext (
      .RW0_addr(data_arrays_0_0_ext_RW0_addr),
      .RW0_en(data_arrays_0_0_ext_RW0_en),
      .RW0_clk(data_arrays_0_0_ext_RW0_clk),
      .RW0_wmode(data_arrays_0_0_ext_RW0_wmode),
      .RW0_wdata(data_arrays_0_0_ext_RW0_wdata),
      .RW0_rdata(data_arrays_0_0_ext_RW0_rdata),
      .RW0_wmask(data_arrays_0_0_ext_RW0_wmask),
      .ram_clk(data_arrays_0_0_ext_ram_clk),
      .ram_csb0(data_arrays_0_0_ext_ram_csb0),
      .ram_web0(data_arrays_0_0_ext_ram_web0),
      .ram_wmask00(data_arrays_0_0_ext_ram_wmask00),
      .ram_wmask01(data_arrays_0_0_ext_ram_wmask01),
      .ram_wmask02(data_arrays_0_0_ext_ram_wmask02),
      .ram_wmask03(data_arrays_0_0_ext_ram_wmask03),
      .ram_addr00(data_arrays_0_0_ext_ram_addr00),
      .ram_addr01(data_arrays_0_0_ext_ram_addr01),
      .ram_addr02(data_arrays_0_0_ext_ram_addr02),
      .ram_addr03(data_arrays_0_0_ext_ram_addr03),
      .ram_din00(data_arrays_0_0_ext_ram_din00),
      .ram_din01(data_arrays_0_0_ext_ram_din01),
      .ram_din02(data_arrays_0_0_ext_ram_din02),
      .ram_din03(data_arrays_0_0_ext_ram_din03),
      .ram_dout00(data_arrays_0_0_ext_ram_dout00),
      .ram_dout01(data_arrays_0_0_ext_ram_dout01),
      .ram_dout02(data_arrays_0_0_ext_ram_dout02),
      .ram_dout03(data_arrays_0_0_ext_ram_dout03),
      .ram_csb1(data_arrays_0_0_ext_ram_csb1),
      .ram_addr10(data_arrays_0_0_ext_ram_addr10),
      .ram_addr11(data_arrays_0_0_ext_ram_addr11),
      .ram_addr12(data_arrays_0_0_ext_ram_addr12),
      .ram_addr13(data_arrays_0_0_ext_ram_addr13)
    );
`endif
`endif

endmodule