// SPDX-FileCopyrightText: (c) 2022 Princeton University
// SPDX-License-Identifier: BSD-3-Clause
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

`default_nettype none
/*
 *-------------------------------------------------------------
 *
 * user_project_wrapper
 *
 * This wrapper enumerates all of the pins available to the
 * user for the user project.
 *
 * An example user project is provided in this wrapper.  The
 * example should be removed and replaced with the actual
 * user project.
 *
 *-------------------------------------------------------------
 */

module user_project_wrapper #(
    parameter BITS = 32
) (
`ifdef USE_POWER_PINS
    inout vdda1,	// User area 1 3.3V supply
    inout vdda2,	// User area 2 3.3V supply
    inout vssa1,	// User area 1 analog ground
    inout vssa2,	// User area 2 analog ground
    inout vccd1,	// User area 1 1.8V supply
    inout vccd2,	// User area 2 1.8v supply
    inout vssd1,	// User area 1 digital ground
    inout vssd2,	// User area 2 digital ground
`endif

    // Wishbone Slave ports (WB MI A)
    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,

    // Logic Analyzer Signals
    input  [127:0] la_data_in,
    output [127:0] la_data_out,
    input  [127:0] la_oenb,

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

    // Analog (direct connection to GPIO pad---use with caution)
    // Note that analog I/O is not available on the 7 lowest-numbered
    // GPIO pads, and so the analog_io indexing is offset from the
    // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
    inout [`MPRJ_IO_PADS-10:0] analog_io,

    // Independent clock (on independent integer divider)
    input   user_clock2,

    // User maskable interrupt signals
    output [2:0] user_irq
);

   // Ground not used ouputs
   assign wbs_ack_o   =   1'b0;
   assign wbs_dat_o   =  32'b0;
   assign user_irq    =   3'b0;
   assign la_data_out = 128'b0;

/*--------------------------------------*/
/* User project is instantiated  here   */
/*--------------------------------------*/

// auto-generated configuration
`define MPRJ_IO_37_I
`define MPRJ_IO_37_CONN prog_clk

`define MPRJ_IO_36_I
`define MPRJ_IO_36_CONN ipin_x0y1_0

`define MPRJ_IO_35_I
`define MPRJ_IO_35_CONN prog_din

`define MPRJ_IO_34_I
`define MPRJ_IO_34_CONN prog_done

`define MPRJ_IO_33_I
`define MPRJ_IO_33_CONN prog_rst

`define MPRJ_IO_32_I
`define MPRJ_IO_32_CONN prog_we

`define MPRJ_IO_1_O
`define MPRJ_IO_1_CONN  prog_dout

`define MPRJ_IO_0_O
`define MPRJ_IO_0_CONN  prog_we_o

`define MPRJ_IO_31_IO
`define MPRJ_IO_31_CONN x0y1_1

`define MPRJ_IO_30_IO
`define MPRJ_IO_30_CONN x0y2_0

`define MPRJ_IO_29_IO
`define MPRJ_IO_29_CONN x0y3_0

`define MPRJ_IO_28_IO
`define MPRJ_IO_28_CONN x0y4_0

`define MPRJ_IO_27_IO
`define MPRJ_IO_27_CONN x0y5_0

`define MPRJ_IO_26_IO
`define MPRJ_IO_26_CONN x0y6_0

`define MPRJ_IO_25_IO
`define MPRJ_IO_25_CONN x0y7_0

`define MPRJ_IO_24_IO
`define MPRJ_IO_24_CONN x0y8_0

`define MPRJ_IO_23_IO
`define MPRJ_IO_23_CONN x1y9_0

`define MPRJ_IO_22_IO
`define MPRJ_IO_22_CONN x2y9_0

`define MPRJ_IO_21_IO
`define MPRJ_IO_21_CONN x2y9_1

`define MPRJ_IO_20_IO
`define MPRJ_IO_20_CONN x3y9_0

`define MPRJ_IO_19_IO
`define MPRJ_IO_19_CONN x4y9_0

`define MPRJ_IO_18_IO
`define MPRJ_IO_18_CONN x5y9_0

`define MPRJ_IO_17_IO
`define MPRJ_IO_17_CONN x6y9_0

`define MPRJ_IO_16_IO
`define MPRJ_IO_16_CONN x7y9_0

`define MPRJ_IO_15_IO
`define MPRJ_IO_15_CONN x8y9_1

`define MPRJ_IO_14_IO
`define MPRJ_IO_14_CONN x9y8_0

`define MPRJ_IO_13_IO
`define MPRJ_IO_13_CONN x9y7_1

`define MPRJ_IO_12_IO
`define MPRJ_IO_12_CONN x9y7_0

`define MPRJ_IO_11_IO
`define MPRJ_IO_11_CONN x9y6_0

`define MPRJ_IO_10_IO
`define MPRJ_IO_10_CONN x9y5_1

`define MPRJ_IO_9_IO
`define MPRJ_IO_9_CONN x9y5_0

`define MPRJ_IO_8_IO
`define MPRJ_IO_8_CONN x9y4_0

`define MPRJ_IO_7_IO
`define MPRJ_IO_7_CONN x9y3_1

`define MPRJ_IO_6_IO
`define MPRJ_IO_6_CONN x9y3_0

`define MPRJ_IO_5_IO
`define MPRJ_IO_5_CONN x9y2_1

`define MPRJ_IO_4_IO
`define MPRJ_IO_4_CONN x9y2_0

`define MPRJ_IO_3_IO
`define MPRJ_IO_3_CONN x9y1_1

`define MPRJ_IO_2_IO
`define MPRJ_IO_2_CONN x9y1_0

/*---------------------*/
/* Do not change below */
/*---------------------*/
`ifdef MPRJ_IO_37_IO
    wire oe_37;
    assign io_oeb[37] = ~oe_37;
`else /* `ifdef MPRJ_IO_37_IO */
`ifdef MPRJ_IO_37_I
    assign io_out[37] = 1'b0;
    assign io_oeb[37] = 1'b1;
`else /* `ifdef MPRJ_IO_37_I */
    assign io_oeb[37] = 1'b0;
`endif /* `ifdef MPRJ_IO_37_I */
`endif /* `ifdef MPRJ_IO_37_IO */
    
`ifdef MPRJ_IO_36_IO
    wire oe_36;
    assign io_oeb[36] = ~oe_36;
`else /* `ifdef MPRJ_IO_36_IO */
`ifdef MPRJ_IO_36_I
    assign io_out[36] = 1'b0;
    assign io_oeb[36] = 1'b1;
`else /* `ifdef MPRJ_IO_36_I */
    assign io_oeb[36] = 1'b0;
`endif /* `ifdef MPRJ_IO_36_I */
`endif /* `ifdef MPRJ_IO_36_IO */
    
`ifdef MPRJ_IO_35_IO
    wire oe_35;
    assign io_oeb[35] = ~oe_35;
`else /* `ifdef MPRJ_IO_35_IO */
`ifdef MPRJ_IO_35_I
    assign io_out[35] = 1'b0;
    assign io_oeb[35] = 1'b1;
`else /* `ifdef MPRJ_IO_35_I */
    assign io_oeb[35] = 1'b0;
`endif /* `ifdef MPRJ_IO_35_I */
`endif /* `ifdef MPRJ_IO_35_IO */
    
`ifdef MPRJ_IO_34_IO
    wire oe_34;
    assign io_oeb[34] = ~oe_34;
`else /* `ifdef MPRJ_IO_34_IO */
`ifdef MPRJ_IO_34_I
    assign io_out[34] = 1'b0;
    assign io_oeb[34] = 1'b1;
`else /* `ifdef MPRJ_IO_34_I */
    assign io_oeb[34] = 1'b0;
`endif /* `ifdef MPRJ_IO_34_I */
`endif /* `ifdef MPRJ_IO_34_IO */
    
`ifdef MPRJ_IO_33_IO
    wire oe_33;
    assign io_oeb[33] = ~oe_33;
`else /* `ifdef MPRJ_IO_33_IO */
`ifdef MPRJ_IO_33_I
    assign io_out[33] = 1'b0;
    assign io_oeb[33] = 1'b1;
`else /* `ifdef MPRJ_IO_33_I */
    assign io_oeb[33] = 1'b0;
`endif /* `ifdef MPRJ_IO_33_I */
`endif /* `ifdef MPRJ_IO_33_IO */
    
`ifdef MPRJ_IO_32_IO
    wire oe_32;
    assign io_oeb[32] = ~oe_32;
`else /* `ifdef MPRJ_IO_32_IO */
`ifdef MPRJ_IO_32_I
    assign io_out[32] = 1'b0;
    assign io_oeb[32] = 1'b1;
`else /* `ifdef MPRJ_IO_32_I */
    assign io_oeb[32] = 1'b0;
`endif /* `ifdef MPRJ_IO_32_I */
`endif /* `ifdef MPRJ_IO_32_IO */
    
`ifdef MPRJ_IO_31_IO
    wire oe_31;
    assign io_oeb[31] = ~oe_31;
`else /* `ifdef MPRJ_IO_31_IO */
`ifdef MPRJ_IO_31_I
    assign io_out[31] = 1'b0;
    assign io_oeb[31] = 1'b1;
`else /* `ifdef MPRJ_IO_31_I */
    assign io_oeb[31] = 1'b0;
`endif /* `ifdef MPRJ_IO_31_I */
`endif /* `ifdef MPRJ_IO_31_IO */
    
`ifdef MPRJ_IO_30_IO
    wire oe_30;
    assign io_oeb[30] = ~oe_30;
`else /* `ifdef MPRJ_IO_30_IO */
`ifdef MPRJ_IO_30_I
    assign io_out[30] = 1'b0;
    assign io_oeb[30] = 1'b1;
`else /* `ifdef MPRJ_IO_30_I */
    assign io_oeb[30] = 1'b0;
`endif /* `ifdef MPRJ_IO_30_I */
`endif /* `ifdef MPRJ_IO_30_IO */
    
`ifdef MPRJ_IO_29_IO
    wire oe_29;
    assign io_oeb[29] = ~oe_29;
`else /* `ifdef MPRJ_IO_29_IO */
`ifdef MPRJ_IO_29_I
    assign io_out[29] = 1'b0;
    assign io_oeb[29] = 1'b1;
`else /* `ifdef MPRJ_IO_29_I */
    assign io_oeb[29] = 1'b0;
`endif /* `ifdef MPRJ_IO_29_I */
`endif /* `ifdef MPRJ_IO_29_IO */
    
`ifdef MPRJ_IO_28_IO
    wire oe_28;
    assign io_oeb[28] = ~oe_28;
`else /* `ifdef MPRJ_IO_28_IO */
`ifdef MPRJ_IO_28_I
    assign io_out[28] = 1'b0;
    assign io_oeb[28] = 1'b1;
`else /* `ifdef MPRJ_IO_28_I */
    assign io_oeb[28] = 1'b0;
`endif /* `ifdef MPRJ_IO_28_I */
`endif /* `ifdef MPRJ_IO_28_IO */
    
`ifdef MPRJ_IO_27_IO
    wire oe_27;
    assign io_oeb[27] = ~oe_27;
`else /* `ifdef MPRJ_IO_27_IO */
`ifdef MPRJ_IO_27_I
    assign io_out[27] = 1'b0;
    assign io_oeb[27] = 1'b1;
`else /* `ifdef MPRJ_IO_27_I */
    assign io_oeb[27] = 1'b0;
`endif /* `ifdef MPRJ_IO_27_I */
`endif /* `ifdef MPRJ_IO_27_IO */
    
`ifdef MPRJ_IO_26_IO
    wire oe_26;
    assign io_oeb[26] = ~oe_26;
`else /* `ifdef MPRJ_IO_26_IO */
`ifdef MPRJ_IO_26_I
    assign io_out[26] = 1'b0;
    assign io_oeb[26] = 1'b1;
`else /* `ifdef MPRJ_IO_26_I */
    assign io_oeb[26] = 1'b0;
`endif /* `ifdef MPRJ_IO_26_I */
`endif /* `ifdef MPRJ_IO_26_IO */
    
`ifdef MPRJ_IO_25_IO
    wire oe_25;
    assign io_oeb[25] = ~oe_25;
`else /* `ifdef MPRJ_IO_25_IO */
`ifdef MPRJ_IO_25_I
    assign io_out[25] = 1'b0;
    assign io_oeb[25] = 1'b1;
`else /* `ifdef MPRJ_IO_25_I */
    assign io_oeb[25] = 1'b0;
`endif /* `ifdef MPRJ_IO_25_I */
`endif /* `ifdef MPRJ_IO_25_IO */
    
`ifdef MPRJ_IO_24_IO
    wire oe_24;
    assign io_oeb[24] = ~oe_24;
`else /* `ifdef MPRJ_IO_24_IO */
`ifdef MPRJ_IO_24_I
    assign io_out[24] = 1'b0;
    assign io_oeb[24] = 1'b1;
`else /* `ifdef MPRJ_IO_24_I */
    assign io_oeb[24] = 1'b0;
`endif /* `ifdef MPRJ_IO_24_I */
`endif /* `ifdef MPRJ_IO_24_IO */
    
`ifdef MPRJ_IO_23_IO
    wire oe_23;
    assign io_oeb[23] = ~oe_23;
`else /* `ifdef MPRJ_IO_23_IO */
`ifdef MPRJ_IO_23_I
    assign io_out[23] = 1'b0;
    assign io_oeb[23] = 1'b1;
`else /* `ifdef MPRJ_IO_23_I */
    assign io_oeb[23] = 1'b0;
`endif /* `ifdef MPRJ_IO_23_I */
`endif /* `ifdef MPRJ_IO_23_IO */
    
`ifdef MPRJ_IO_22_IO
    wire oe_22;
    assign io_oeb[22] = ~oe_22;
`else /* `ifdef MPRJ_IO_22_IO */
`ifdef MPRJ_IO_22_I
    assign io_out[22] = 1'b0;
    assign io_oeb[22] = 1'b1;
`else /* `ifdef MPRJ_IO_22_I */
    assign io_oeb[22] = 1'b0;
`endif /* `ifdef MPRJ_IO_22_I */
`endif /* `ifdef MPRJ_IO_22_IO */
    
`ifdef MPRJ_IO_21_IO
    wire oe_21;
    assign io_oeb[21] = ~oe_21;
`else /* `ifdef MPRJ_IO_21_IO */
`ifdef MPRJ_IO_21_I
    assign io_out[21] = 1'b0;
    assign io_oeb[21] = 1'b1;
`else /* `ifdef MPRJ_IO_21_I */
    assign io_oeb[21] = 1'b0;
`endif /* `ifdef MPRJ_IO_21_I */
`endif /* `ifdef MPRJ_IO_21_IO */
    
`ifdef MPRJ_IO_20_IO
    wire oe_20;
    assign io_oeb[20] = ~oe_20;
`else /* `ifdef MPRJ_IO_20_IO */
`ifdef MPRJ_IO_20_I
    assign io_out[20] = 1'b0;
    assign io_oeb[20] = 1'b1;
`else /* `ifdef MPRJ_IO_20_I */
    assign io_oeb[20] = 1'b0;
`endif /* `ifdef MPRJ_IO_20_I */
`endif /* `ifdef MPRJ_IO_20_IO */
    
`ifdef MPRJ_IO_19_IO
    wire oe_19;
    assign io_oeb[19] = ~oe_19;
`else /* `ifdef MPRJ_IO_19_IO */
`ifdef MPRJ_IO_19_I
    assign io_out[19] = 1'b0;
    assign io_oeb[19] = 1'b1;
`else /* `ifdef MPRJ_IO_19_I */
    assign io_oeb[19] = 1'b0;
`endif /* `ifdef MPRJ_IO_19_I */
`endif /* `ifdef MPRJ_IO_19_IO */
    
`ifdef MPRJ_IO_18_IO
    wire oe_18;
    assign io_oeb[18] = ~oe_18;
`else /* `ifdef MPRJ_IO_18_IO */
`ifdef MPRJ_IO_18_I
    assign io_out[18] = 1'b0;
    assign io_oeb[18] = 1'b1;
`else /* `ifdef MPRJ_IO_18_I */
    assign io_oeb[18] = 1'b0;
`endif /* `ifdef MPRJ_IO_18_I */
`endif /* `ifdef MPRJ_IO_18_IO */
    
`ifdef MPRJ_IO_17_IO
    wire oe_17;
    assign io_oeb[17] = ~oe_17;
`else /* `ifdef MPRJ_IO_17_IO */
`ifdef MPRJ_IO_17_I
    assign io_out[17] = 1'b0;
    assign io_oeb[17] = 1'b1;
`else /* `ifdef MPRJ_IO_17_I */
    assign io_oeb[17] = 1'b0;
`endif /* `ifdef MPRJ_IO_17_I */
`endif /* `ifdef MPRJ_IO_17_IO */
    
`ifdef MPRJ_IO_16_IO
    wire oe_16;
    assign io_oeb[16] = ~oe_16;
`else /* `ifdef MPRJ_IO_16_IO */
`ifdef MPRJ_IO_16_I
    assign io_out[16] = 1'b0;
    assign io_oeb[16] = 1'b1;
`else /* `ifdef MPRJ_IO_16_I */
    assign io_oeb[16] = 1'b0;
`endif /* `ifdef MPRJ_IO_16_I */
`endif /* `ifdef MPRJ_IO_16_IO */
    
`ifdef MPRJ_IO_15_IO
    wire oe_15;
    assign io_oeb[15] = ~oe_15;
`else /* `ifdef MPRJ_IO_15_IO */
`ifdef MPRJ_IO_15_I
    assign io_out[15] = 1'b0;
    assign io_oeb[15] = 1'b1;
`else /* `ifdef MPRJ_IO_15_I */
    assign io_oeb[15] = 1'b0;
`endif /* `ifdef MPRJ_IO_15_I */
`endif /* `ifdef MPRJ_IO_15_IO */
    
`ifdef MPRJ_IO_14_IO
    wire oe_14;
    assign io_oeb[14] = ~oe_14;
`else /* `ifdef MPRJ_IO_14_IO */
`ifdef MPRJ_IO_14_I
    assign io_out[14] = 1'b0;
    assign io_oeb[14] = 1'b1;
`else /* `ifdef MPRJ_IO_14_I */
    assign io_oeb[14] = 1'b0;
`endif /* `ifdef MPRJ_IO_14_I */
`endif /* `ifdef MPRJ_IO_14_IO */
    
`ifdef MPRJ_IO_13_IO
    wire oe_13;
    assign io_oeb[13] = ~oe_13;
`else /* `ifdef MPRJ_IO_13_IO */
`ifdef MPRJ_IO_13_I
    assign io_out[13] = 1'b0;
    assign io_oeb[13] = 1'b1;
`else /* `ifdef MPRJ_IO_13_I */
    assign io_oeb[13] = 1'b0;
`endif /* `ifdef MPRJ_IO_13_I */
`endif /* `ifdef MPRJ_IO_13_IO */
    
`ifdef MPRJ_IO_12_IO
    wire oe_12;
    assign io_oeb[12] = ~oe_12;
`else /* `ifdef MPRJ_IO_12_IO */
`ifdef MPRJ_IO_12_I
    assign io_out[12] = 1'b0;
    assign io_oeb[12] = 1'b1;
`else /* `ifdef MPRJ_IO_12_I */
    assign io_oeb[12] = 1'b0;
`endif /* `ifdef MPRJ_IO_12_I */
`endif /* `ifdef MPRJ_IO_12_IO */
    
`ifdef MPRJ_IO_11_IO
    wire oe_11;
    assign io_oeb[11] = ~oe_11;
`else /* `ifdef MPRJ_IO_11_IO */
`ifdef MPRJ_IO_11_I
    assign io_out[11] = 1'b0;
    assign io_oeb[11] = 1'b1;
`else /* `ifdef MPRJ_IO_11_I */
    assign io_oeb[11] = 1'b0;
`endif /* `ifdef MPRJ_IO_11_I */
`endif /* `ifdef MPRJ_IO_11_IO */
    
`ifdef MPRJ_IO_10_IO
    wire oe_10;
    assign io_oeb[10] = ~oe_10;
`else /* `ifdef MPRJ_IO_10_IO */
`ifdef MPRJ_IO_10_I
    assign io_out[10] = 1'b0;
    assign io_oeb[10] = 1'b1;
`else /* `ifdef MPRJ_IO_10_I */
    assign io_oeb[10] = 1'b0;
`endif /* `ifdef MPRJ_IO_10_I */
`endif /* `ifdef MPRJ_IO_10_IO */
    
`ifdef MPRJ_IO_9_IO
    wire oe_9;
    assign io_oeb[9] = ~oe_9;
`else /* `ifdef MPRJ_IO_9_IO */
`ifdef MPRJ_IO_9_I
    assign io_out[9] = 1'b0;
    assign io_oeb[9] = 1'b1;
`else /* `ifdef MPRJ_IO_9_I */
    assign io_oeb[9] = 1'b0;
`endif /* `ifdef MPRJ_IO_9_I */
`endif /* `ifdef MPRJ_IO_9_IO */
    
`ifdef MPRJ_IO_8_IO
    wire oe_8;
    assign io_oeb[8] = ~oe_8;
`else /* `ifdef MPRJ_IO_8_IO */
`ifdef MPRJ_IO_8_I
    assign io_out[8] = 1'b0;
    assign io_oeb[8] = 1'b1;
`else /* `ifdef MPRJ_IO_8_I */
    assign io_oeb[8] = 1'b0;
`endif /* `ifdef MPRJ_IO_8_I */
`endif /* `ifdef MPRJ_IO_8_IO */
    
`ifdef MPRJ_IO_7_IO
    wire oe_7;
    assign io_oeb[7] = ~oe_7;
`else /* `ifdef MPRJ_IO_7_IO */
`ifdef MPRJ_IO_7_I
    assign io_out[7] = 1'b0;
    assign io_oeb[7] = 1'b1;
`else /* `ifdef MPRJ_IO_7_I */
    assign io_oeb[7] = 1'b0;
`endif /* `ifdef MPRJ_IO_7_I */
`endif /* `ifdef MPRJ_IO_7_IO */
    
`ifdef MPRJ_IO_6_IO
    wire oe_6;
    assign io_oeb[6] = ~oe_6;
`else /* `ifdef MPRJ_IO_6_IO */
`ifdef MPRJ_IO_6_I
    assign io_out[6] = 1'b0;
    assign io_oeb[6] = 1'b1;
`else /* `ifdef MPRJ_IO_6_I */
    assign io_oeb[6] = 1'b0;
`endif /* `ifdef MPRJ_IO_6_I */
`endif /* `ifdef MPRJ_IO_6_IO */
    
`ifdef MPRJ_IO_5_IO
    wire oe_5;
    assign io_oeb[5] = ~oe_5;
`else /* `ifdef MPRJ_IO_5_IO */
`ifdef MPRJ_IO_5_I
    assign io_out[5] = 1'b0;
    assign io_oeb[5] = 1'b1;
`else /* `ifdef MPRJ_IO_5_I */
    assign io_oeb[5] = 1'b0;
`endif /* `ifdef MPRJ_IO_5_I */
`endif /* `ifdef MPRJ_IO_5_IO */
    
`ifdef MPRJ_IO_4_IO
    wire oe_4;
    assign io_oeb[4] = ~oe_4;
`else /* `ifdef MPRJ_IO_4_IO */
`ifdef MPRJ_IO_4_I
    assign io_out[4] = 1'b0;
    assign io_oeb[4] = 1'b1;
`else /* `ifdef MPRJ_IO_4_I */
    assign io_oeb[4] = 1'b0;
`endif /* `ifdef MPRJ_IO_4_I */
`endif /* `ifdef MPRJ_IO_4_IO */
    
`ifdef MPRJ_IO_3_IO
    wire oe_3;
    assign io_oeb[3] = ~oe_3;
`else /* `ifdef MPRJ_IO_3_IO */
`ifdef MPRJ_IO_3_I
    assign io_out[3] = 1'b0;
    assign io_oeb[3] = 1'b1;
`else /* `ifdef MPRJ_IO_3_I */
    assign io_oeb[3] = 1'b0;
`endif /* `ifdef MPRJ_IO_3_I */
`endif /* `ifdef MPRJ_IO_3_IO */
    
`ifdef MPRJ_IO_2_IO
    wire oe_2;
    assign io_oeb[2] = ~oe_2;
`else /* `ifdef MPRJ_IO_2_IO */
`ifdef MPRJ_IO_2_I
    assign io_out[2] = 1'b0;
    assign io_oeb[2] = 1'b1;
`else /* `ifdef MPRJ_IO_2_I */
    assign io_oeb[2] = 1'b0;
`endif /* `ifdef MPRJ_IO_2_I */
`endif /* `ifdef MPRJ_IO_2_IO */
    
`ifdef MPRJ_IO_1_IO
    wire oe_1;
    assign io_oeb[1] = ~oe_1;
`else /* `ifdef MPRJ_IO_1_IO */
`ifdef MPRJ_IO_1_I
    assign io_out[1] = 1'b0;
    assign io_oeb[1] = 1'b1;
`else /* `ifdef MPRJ_IO_1_I */
    assign io_oeb[1] = 1'b0;
`endif /* `ifdef MPRJ_IO_1_I */
`endif /* `ifdef MPRJ_IO_1_IO */
    
`ifdef MPRJ_IO_0_IO
    wire oe_0;
    assign io_oeb[0] = ~oe_0;
`else /* `ifdef MPRJ_IO_0_IO */
`ifdef MPRJ_IO_0_I
    assign io_out[0] = 1'b0;
    assign io_oeb[0] = 1'b1;
`else /* `ifdef MPRJ_IO_0_I */
    assign io_oeb[0] = 1'b0;
`endif /* `ifdef MPRJ_IO_0_I */
`endif /* `ifdef MPRJ_IO_0_IO */
   
   //~
   // FPGA instance   
`define IPIN(x) ipin_``x``
`define OPIN(x) opin_``x``
`define OE(x)     oe_``x``
   
   top dut (
`ifdef USE_POWER_PINS
	    .vccd1(vccd1),	// User area 1 1.8V power
	    .vssd1(vssd1),	// User area 1 digital ground
`endif
`ifdef MPRJ_IO_37_IO
         .`IPIN(`MPRJ_IO_37_CONN) ( io_in[37])
        ,.`OPIN(`MPRJ_IO_37_CONN) (io_out[37])
        ,  .`OE(`MPRJ_IO_37_CONN) (oe_37)
`else /* `ifdef MPRJ_IO_37_IO */
`ifdef MPRJ_IO_37_I
         .`MPRJ_IO_37_CONN ( io_in[37])
`else /* `ifdef MPRJ_IO_37_I */
         .`MPRJ_IO_37_CONN (io_out[37])
`endif /* `ifdef MPRJ_IO_37_I */
`endif /* `ifdef MPRJ_IO_37_IO */
    
`ifdef MPRJ_IO_36_IO
        ,.`IPIN(`MPRJ_IO_36_CONN) ( io_in[36])
        ,.`OPIN(`MPRJ_IO_36_CONN) (io_out[36])
        ,  .`OE(`MPRJ_IO_36_CONN) (oe_36)
`else /* `ifdef MPRJ_IO_36_IO */
`ifdef MPRJ_IO_36_I
        ,.`MPRJ_IO_36_CONN ( io_in[36])
`else /* `ifdef MPRJ_IO_36_I */
        ,.`MPRJ_IO_36_CONN (io_out[36])
`endif /* `ifdef MPRJ_IO_36_I */
`endif /* `ifdef MPRJ_IO_36_IO */
    
`ifdef MPRJ_IO_35_IO
        ,.`IPIN(`MPRJ_IO_35_CONN) ( io_in[35])
        ,.`OPIN(`MPRJ_IO_35_CONN) (io_out[35])
        ,  .`OE(`MPRJ_IO_35_CONN) (oe_35)
`else /* `ifdef MPRJ_IO_35_IO */
`ifdef MPRJ_IO_35_I
        ,.`MPRJ_IO_35_CONN ( io_in[35])
`else /* `ifdef MPRJ_IO_35_I */
        ,.`MPRJ_IO_35_CONN (io_out[35])
`endif /* `ifdef MPRJ_IO_35_I */
`endif /* `ifdef MPRJ_IO_35_IO */
    
`ifdef MPRJ_IO_34_IO
        ,.`IPIN(`MPRJ_IO_34_CONN) ( io_in[34])
        ,.`OPIN(`MPRJ_IO_34_CONN) (io_out[34])
        ,  .`OE(`MPRJ_IO_34_CONN) (oe_34)
`else /* `ifdef MPRJ_IO_34_IO */
`ifdef MPRJ_IO_34_I
        ,.`MPRJ_IO_34_CONN ( io_in[34])
`else /* `ifdef MPRJ_IO_34_I */
        ,.`MPRJ_IO_34_CONN (io_out[34])
`endif /* `ifdef MPRJ_IO_34_I */
`endif /* `ifdef MPRJ_IO_34_IO */
    
`ifdef MPRJ_IO_33_IO
        ,.`IPIN(`MPRJ_IO_33_CONN) ( io_in[33])
        ,.`OPIN(`MPRJ_IO_33_CONN) (io_out[33])
        ,  .`OE(`MPRJ_IO_33_CONN) (oe_33)
`else /* `ifdef MPRJ_IO_33_IO */
`ifdef MPRJ_IO_33_I
        ,.`MPRJ_IO_33_CONN ( io_in[33])
`else /* `ifdef MPRJ_IO_33_I */
        ,.`MPRJ_IO_33_CONN (io_out[33])
`endif /* `ifdef MPRJ_IO_33_I */
`endif /* `ifdef MPRJ_IO_33_IO */
    
`ifdef MPRJ_IO_32_IO
        ,.`IPIN(`MPRJ_IO_32_CONN) ( io_in[32])
        ,.`OPIN(`MPRJ_IO_32_CONN) (io_out[32])
        ,  .`OE(`MPRJ_IO_32_CONN) (oe_32)
`else /* `ifdef MPRJ_IO_32_IO */
`ifdef MPRJ_IO_32_I
        ,.`MPRJ_IO_32_CONN ( io_in[32])
`else /* `ifdef MPRJ_IO_32_I */
        ,.`MPRJ_IO_32_CONN (io_out[32])
`endif /* `ifdef MPRJ_IO_32_I */
`endif /* `ifdef MPRJ_IO_32_IO */
    
`ifdef MPRJ_IO_31_IO
        ,.`IPIN(`MPRJ_IO_31_CONN) ( io_in[31])
        ,.`OPIN(`MPRJ_IO_31_CONN) (io_out[31])
        ,  .`OE(`MPRJ_IO_31_CONN) (oe_31)
`else /* `ifdef MPRJ_IO_31_IO */
`ifdef MPRJ_IO_31_I
        ,.`MPRJ_IO_31_CONN ( io_in[31])
`else /* `ifdef MPRJ_IO_31_I */
        ,.`MPRJ_IO_31_CONN (io_out[31])
`endif /* `ifdef MPRJ_IO_31_I */
`endif /* `ifdef MPRJ_IO_31_IO */
    
`ifdef MPRJ_IO_30_IO
        ,.`IPIN(`MPRJ_IO_30_CONN) ( io_in[30])
        ,.`OPIN(`MPRJ_IO_30_CONN) (io_out[30])
        ,  .`OE(`MPRJ_IO_30_CONN) (oe_30)
`else /* `ifdef MPRJ_IO_30_IO */
`ifdef MPRJ_IO_30_I
        ,.`MPRJ_IO_30_CONN ( io_in[30])
`else /* `ifdef MPRJ_IO_30_I */
        ,.`MPRJ_IO_30_CONN (io_out[30])
`endif /* `ifdef MPRJ_IO_30_I */
`endif /* `ifdef MPRJ_IO_30_IO */
    
`ifdef MPRJ_IO_29_IO
        ,.`IPIN(`MPRJ_IO_29_CONN) ( io_in[29])
        ,.`OPIN(`MPRJ_IO_29_CONN) (io_out[29])
        ,  .`OE(`MPRJ_IO_29_CONN) (oe_29)
`else /* `ifdef MPRJ_IO_29_IO */
`ifdef MPRJ_IO_29_I
        ,.`MPRJ_IO_29_CONN ( io_in[29])
`else /* `ifdef MPRJ_IO_29_I */
        ,.`MPRJ_IO_29_CONN (io_out[29])
`endif /* `ifdef MPRJ_IO_29_I */
`endif /* `ifdef MPRJ_IO_29_IO */
    
`ifdef MPRJ_IO_28_IO
        ,.`IPIN(`MPRJ_IO_28_CONN) ( io_in[28])
        ,.`OPIN(`MPRJ_IO_28_CONN) (io_out[28])
        ,  .`OE(`MPRJ_IO_28_CONN) (oe_28)
`else /* `ifdef MPRJ_IO_28_IO */
`ifdef MPRJ_IO_28_I
        ,.`MPRJ_IO_28_CONN ( io_in[28])
`else /* `ifdef MPRJ_IO_28_I */
        ,.`MPRJ_IO_28_CONN (io_out[28])
`endif /* `ifdef MPRJ_IO_28_I */
`endif /* `ifdef MPRJ_IO_28_IO */
    
`ifdef MPRJ_IO_27_IO
        ,.`IPIN(`MPRJ_IO_27_CONN) ( io_in[27])
        ,.`OPIN(`MPRJ_IO_27_CONN) (io_out[27])
        ,  .`OE(`MPRJ_IO_27_CONN) (oe_27)
`else /* `ifdef MPRJ_IO_27_IO */
`ifdef MPRJ_IO_27_I
        ,.`MPRJ_IO_27_CONN ( io_in[27])
`else /* `ifdef MPRJ_IO_27_I */
        ,.`MPRJ_IO_27_CONN (io_out[27])
`endif /* `ifdef MPRJ_IO_27_I */
`endif /* `ifdef MPRJ_IO_27_IO */
    
`ifdef MPRJ_IO_26_IO
        ,.`IPIN(`MPRJ_IO_26_CONN) ( io_in[26])
        ,.`OPIN(`MPRJ_IO_26_CONN) (io_out[26])
        ,  .`OE(`MPRJ_IO_26_CONN) (oe_26)
`else /* `ifdef MPRJ_IO_26_IO */
`ifdef MPRJ_IO_26_I
        ,.`MPRJ_IO_26_CONN ( io_in[26])
`else /* `ifdef MPRJ_IO_26_I */
        ,.`MPRJ_IO_26_CONN (io_out[26])
`endif /* `ifdef MPRJ_IO_26_I */
`endif /* `ifdef MPRJ_IO_26_IO */
    
`ifdef MPRJ_IO_25_IO
        ,.`IPIN(`MPRJ_IO_25_CONN) ( io_in[25])
        ,.`OPIN(`MPRJ_IO_25_CONN) (io_out[25])
        ,  .`OE(`MPRJ_IO_25_CONN) (oe_25)
`else /* `ifdef MPRJ_IO_25_IO */
`ifdef MPRJ_IO_25_I
        ,.`MPRJ_IO_25_CONN ( io_in[25])
`else /* `ifdef MPRJ_IO_25_I */
        ,.`MPRJ_IO_25_CONN (io_out[25])
`endif /* `ifdef MPRJ_IO_25_I */
`endif /* `ifdef MPRJ_IO_25_IO */
    
`ifdef MPRJ_IO_24_IO
        ,.`IPIN(`MPRJ_IO_24_CONN) ( io_in[24])
        ,.`OPIN(`MPRJ_IO_24_CONN) (io_out[24])
        ,  .`OE(`MPRJ_IO_24_CONN) (oe_24)
`else /* `ifdef MPRJ_IO_24_IO */
`ifdef MPRJ_IO_24_I
        ,.`MPRJ_IO_24_CONN ( io_in[24])
`else /* `ifdef MPRJ_IO_24_I */
        ,.`MPRJ_IO_24_CONN (io_out[24])
`endif /* `ifdef MPRJ_IO_24_I */
`endif /* `ifdef MPRJ_IO_24_IO */
    
`ifdef MPRJ_IO_23_IO
        ,.`IPIN(`MPRJ_IO_23_CONN) ( io_in[23])
        ,.`OPIN(`MPRJ_IO_23_CONN) (io_out[23])
        ,  .`OE(`MPRJ_IO_23_CONN) (oe_23)
`else /* `ifdef MPRJ_IO_23_IO */
`ifdef MPRJ_IO_23_I
        ,.`MPRJ_IO_23_CONN ( io_in[23])
`else /* `ifdef MPRJ_IO_23_I */
        ,.`MPRJ_IO_23_CONN (io_out[23])
`endif /* `ifdef MPRJ_IO_23_I */
`endif /* `ifdef MPRJ_IO_23_IO */
    
`ifdef MPRJ_IO_22_IO
        ,.`IPIN(`MPRJ_IO_22_CONN) ( io_in[22])
        ,.`OPIN(`MPRJ_IO_22_CONN) (io_out[22])
        ,  .`OE(`MPRJ_IO_22_CONN) (oe_22)
`else /* `ifdef MPRJ_IO_22_IO */
`ifdef MPRJ_IO_22_I
        ,.`MPRJ_IO_22_CONN ( io_in[22])
`else /* `ifdef MPRJ_IO_22_I */
        ,.`MPRJ_IO_22_CONN (io_out[22])
`endif /* `ifdef MPRJ_IO_22_I */
`endif /* `ifdef MPRJ_IO_22_IO */
    
`ifdef MPRJ_IO_21_IO
        ,.`IPIN(`MPRJ_IO_21_CONN) ( io_in[21])
        ,.`OPIN(`MPRJ_IO_21_CONN) (io_out[21])
        ,  .`OE(`MPRJ_IO_21_CONN) (oe_21)
`else /* `ifdef MPRJ_IO_21_IO */
`ifdef MPRJ_IO_21_I
        ,.`MPRJ_IO_21_CONN ( io_in[21])
`else /* `ifdef MPRJ_IO_21_I */
        ,.`MPRJ_IO_21_CONN (io_out[21])
`endif /* `ifdef MPRJ_IO_21_I */
`endif /* `ifdef MPRJ_IO_21_IO */
    
`ifdef MPRJ_IO_20_IO
        ,.`IPIN(`MPRJ_IO_20_CONN) ( io_in[20])
        ,.`OPIN(`MPRJ_IO_20_CONN) (io_out[20])
        ,  .`OE(`MPRJ_IO_20_CONN) (oe_20)
`else /* `ifdef MPRJ_IO_20_IO */
`ifdef MPRJ_IO_20_I
        ,.`MPRJ_IO_20_CONN ( io_in[20])
`else /* `ifdef MPRJ_IO_20_I */
        ,.`MPRJ_IO_20_CONN (io_out[20])
`endif /* `ifdef MPRJ_IO_20_I */
`endif /* `ifdef MPRJ_IO_20_IO */
    
`ifdef MPRJ_IO_19_IO
        ,.`IPIN(`MPRJ_IO_19_CONN) ( io_in[19])
        ,.`OPIN(`MPRJ_IO_19_CONN) (io_out[19])
        ,  .`OE(`MPRJ_IO_19_CONN) (oe_19)
`else /* `ifdef MPRJ_IO_19_IO */
`ifdef MPRJ_IO_19_I
        ,.`MPRJ_IO_19_CONN ( io_in[19])
`else /* `ifdef MPRJ_IO_19_I */
        ,.`MPRJ_IO_19_CONN (io_out[19])
`endif /* `ifdef MPRJ_IO_19_I */
`endif /* `ifdef MPRJ_IO_19_IO */
    
`ifdef MPRJ_IO_18_IO
        ,.`IPIN(`MPRJ_IO_18_CONN) ( io_in[18])
        ,.`OPIN(`MPRJ_IO_18_CONN) (io_out[18])
        ,  .`OE(`MPRJ_IO_18_CONN) (oe_18)
`else /* `ifdef MPRJ_IO_18_IO */
`ifdef MPRJ_IO_18_I
        ,.`MPRJ_IO_18_CONN ( io_in[18])
`else /* `ifdef MPRJ_IO_18_I */
        ,.`MPRJ_IO_18_CONN (io_out[18])
`endif /* `ifdef MPRJ_IO_18_I */
`endif /* `ifdef MPRJ_IO_18_IO */
    
`ifdef MPRJ_IO_17_IO
        ,.`IPIN(`MPRJ_IO_17_CONN) ( io_in[17])
        ,.`OPIN(`MPRJ_IO_17_CONN) (io_out[17])
        ,  .`OE(`MPRJ_IO_17_CONN) (oe_17)
`else /* `ifdef MPRJ_IO_17_IO */
`ifdef MPRJ_IO_17_I
        ,.`MPRJ_IO_17_CONN ( io_in[17])
`else /* `ifdef MPRJ_IO_17_I */
        ,.`MPRJ_IO_17_CONN (io_out[17])
`endif /* `ifdef MPRJ_IO_17_I */
`endif /* `ifdef MPRJ_IO_17_IO */
    
`ifdef MPRJ_IO_16_IO
        ,.`IPIN(`MPRJ_IO_16_CONN) ( io_in[16])
        ,.`OPIN(`MPRJ_IO_16_CONN) (io_out[16])
        ,  .`OE(`MPRJ_IO_16_CONN) (oe_16)
`else /* `ifdef MPRJ_IO_16_IO */
`ifdef MPRJ_IO_16_I
        ,.`MPRJ_IO_16_CONN ( io_in[16])
`else /* `ifdef MPRJ_IO_16_I */
        ,.`MPRJ_IO_16_CONN (io_out[16])
`endif /* `ifdef MPRJ_IO_16_I */
`endif /* `ifdef MPRJ_IO_16_IO */
    
`ifdef MPRJ_IO_15_IO
        ,.`IPIN(`MPRJ_IO_15_CONN) ( io_in[15])
        ,.`OPIN(`MPRJ_IO_15_CONN) (io_out[15])
        ,  .`OE(`MPRJ_IO_15_CONN) (oe_15)
`else /* `ifdef MPRJ_IO_15_IO */
`ifdef MPRJ_IO_15_I
        ,.`MPRJ_IO_15_CONN ( io_in[15])
`else /* `ifdef MPRJ_IO_15_I */
        ,.`MPRJ_IO_15_CONN (io_out[15])
`endif /* `ifdef MPRJ_IO_15_I */
`endif /* `ifdef MPRJ_IO_15_IO */
    
`ifdef MPRJ_IO_14_IO
        ,.`IPIN(`MPRJ_IO_14_CONN) ( io_in[14])
        ,.`OPIN(`MPRJ_IO_14_CONN) (io_out[14])
        ,  .`OE(`MPRJ_IO_14_CONN) (oe_14)
`else /* `ifdef MPRJ_IO_14_IO */
`ifdef MPRJ_IO_14_I
        ,.`MPRJ_IO_14_CONN ( io_in[14])
`else /* `ifdef MPRJ_IO_14_I */
        ,.`MPRJ_IO_14_CONN (io_out[14])
`endif /* `ifdef MPRJ_IO_14_I */
`endif /* `ifdef MPRJ_IO_14_IO */
    
`ifdef MPRJ_IO_13_IO
        ,.`IPIN(`MPRJ_IO_13_CONN) ( io_in[13])
        ,.`OPIN(`MPRJ_IO_13_CONN) (io_out[13])
        ,  .`OE(`MPRJ_IO_13_CONN) (oe_13)
`else /* `ifdef MPRJ_IO_13_IO */
`ifdef MPRJ_IO_13_I
        ,.`MPRJ_IO_13_CONN ( io_in[13])
`else /* `ifdef MPRJ_IO_13_I */
        ,.`MPRJ_IO_13_CONN (io_out[13])
`endif /* `ifdef MPRJ_IO_13_I */
`endif /* `ifdef MPRJ_IO_13_IO */
    
`ifdef MPRJ_IO_12_IO
        ,.`IPIN(`MPRJ_IO_12_CONN) ( io_in[12])
        ,.`OPIN(`MPRJ_IO_12_CONN) (io_out[12])
        ,  .`OE(`MPRJ_IO_12_CONN) (oe_12)
`else /* `ifdef MPRJ_IO_12_IO */
`ifdef MPRJ_IO_12_I
        ,.`MPRJ_IO_12_CONN ( io_in[12])
`else /* `ifdef MPRJ_IO_12_I */
        ,.`MPRJ_IO_12_CONN (io_out[12])
`endif /* `ifdef MPRJ_IO_12_I */
`endif /* `ifdef MPRJ_IO_12_IO */
    
`ifdef MPRJ_IO_11_IO
        ,.`IPIN(`MPRJ_IO_11_CONN) ( io_in[11])
        ,.`OPIN(`MPRJ_IO_11_CONN) (io_out[11])
        ,  .`OE(`MPRJ_IO_11_CONN) (oe_11)
`else /* `ifdef MPRJ_IO_11_IO */
`ifdef MPRJ_IO_11_I
        ,.`MPRJ_IO_11_CONN ( io_in[11])
`else /* `ifdef MPRJ_IO_11_I */
        ,.`MPRJ_IO_11_CONN (io_out[11])
`endif /* `ifdef MPRJ_IO_11_I */
`endif /* `ifdef MPRJ_IO_11_IO */
    
`ifdef MPRJ_IO_10_IO
        ,.`IPIN(`MPRJ_IO_10_CONN) ( io_in[10])
        ,.`OPIN(`MPRJ_IO_10_CONN) (io_out[10])
        ,  .`OE(`MPRJ_IO_10_CONN) (oe_10)
`else /* `ifdef MPRJ_IO_10_IO */
`ifdef MPRJ_IO_10_I
        ,.`MPRJ_IO_10_CONN ( io_in[10])
`else /* `ifdef MPRJ_IO_10_I */
        ,.`MPRJ_IO_10_CONN (io_out[10])
`endif /* `ifdef MPRJ_IO_10_I */
`endif /* `ifdef MPRJ_IO_10_IO */
    
`ifdef MPRJ_IO_9_IO
        ,.`IPIN(`MPRJ_IO_9_CONN) ( io_in[9])
        ,.`OPIN(`MPRJ_IO_9_CONN) (io_out[9])
        ,  .`OE(`MPRJ_IO_9_CONN) (oe_9)
`else /* `ifdef MPRJ_IO_9_IO */
`ifdef MPRJ_IO_9_I
        ,.`MPRJ_IO_9_CONN ( io_in[9])
`else /* `ifdef MPRJ_IO_9_I */
        ,.`MPRJ_IO_9_CONN (io_out[9])
`endif /* `ifdef MPRJ_IO_9_I */
`endif /* `ifdef MPRJ_IO_9_IO */
    
`ifdef MPRJ_IO_8_IO
        ,.`IPIN(`MPRJ_IO_8_CONN) ( io_in[8])
        ,.`OPIN(`MPRJ_IO_8_CONN) (io_out[8])
        ,  .`OE(`MPRJ_IO_8_CONN) (oe_8)
`else /* `ifdef MPRJ_IO_8_IO */
`ifdef MPRJ_IO_8_I
        ,.`MPRJ_IO_8_CONN ( io_in[8])
`else /* `ifdef MPRJ_IO_8_I */
        ,.`MPRJ_IO_8_CONN (io_out[8])
`endif /* `ifdef MPRJ_IO_8_I */
`endif /* `ifdef MPRJ_IO_8_IO */
    
`ifdef MPRJ_IO_7_IO
        ,.`IPIN(`MPRJ_IO_7_CONN) ( io_in[7])
        ,.`OPIN(`MPRJ_IO_7_CONN) (io_out[7])
        ,  .`OE(`MPRJ_IO_7_CONN) (oe_7)
`else /* `ifdef MPRJ_IO_7_IO */
`ifdef MPRJ_IO_7_I
        ,.`MPRJ_IO_7_CONN ( io_in[7])
`else /* `ifdef MPRJ_IO_7_I */
        ,.`MPRJ_IO_7_CONN (io_out[7])
`endif /* `ifdef MPRJ_IO_7_I */
`endif /* `ifdef MPRJ_IO_7_IO */
    
`ifdef MPRJ_IO_6_IO
        ,.`IPIN(`MPRJ_IO_6_CONN) ( io_in[6])
        ,.`OPIN(`MPRJ_IO_6_CONN) (io_out[6])
        ,  .`OE(`MPRJ_IO_6_CONN) (oe_6)
`else /* `ifdef MPRJ_IO_6_IO */
`ifdef MPRJ_IO_6_I
        ,.`MPRJ_IO_6_CONN ( io_in[6])
`else /* `ifdef MPRJ_IO_6_I */
        ,.`MPRJ_IO_6_CONN (io_out[6])
`endif /* `ifdef MPRJ_IO_6_I */
`endif /* `ifdef MPRJ_IO_6_IO */
    
`ifdef MPRJ_IO_5_IO
        ,.`IPIN(`MPRJ_IO_5_CONN) ( io_in[5])
        ,.`OPIN(`MPRJ_IO_5_CONN) (io_out[5])
        ,  .`OE(`MPRJ_IO_5_CONN) (oe_5)
`else /* `ifdef MPRJ_IO_5_IO */
`ifdef MPRJ_IO_5_I
        ,.`MPRJ_IO_5_CONN ( io_in[5])
`else /* `ifdef MPRJ_IO_5_I */
        ,.`MPRJ_IO_5_CONN (io_out[5])
`endif /* `ifdef MPRJ_IO_5_I */
`endif /* `ifdef MPRJ_IO_5_IO */
    
`ifdef MPRJ_IO_4_IO
        ,.`IPIN(`MPRJ_IO_4_CONN) ( io_in[4])
        ,.`OPIN(`MPRJ_IO_4_CONN) (io_out[4])
        ,  .`OE(`MPRJ_IO_4_CONN) (oe_4)
`else /* `ifdef MPRJ_IO_4_IO */
`ifdef MPRJ_IO_4_I
        ,.`MPRJ_IO_4_CONN ( io_in[4])
`else /* `ifdef MPRJ_IO_4_I */
        ,.`MPRJ_IO_4_CONN (io_out[4])
`endif /* `ifdef MPRJ_IO_4_I */
`endif /* `ifdef MPRJ_IO_4_IO */
    
`ifdef MPRJ_IO_3_IO
        ,.`IPIN(`MPRJ_IO_3_CONN) ( io_in[3])
        ,.`OPIN(`MPRJ_IO_3_CONN) (io_out[3])
        ,  .`OE(`MPRJ_IO_3_CONN) (oe_3)
`else /* `ifdef MPRJ_IO_3_IO */
`ifdef MPRJ_IO_3_I
        ,.`MPRJ_IO_3_CONN ( io_in[3])
`else /* `ifdef MPRJ_IO_3_I */
        ,.`MPRJ_IO_3_CONN (io_out[3])
`endif /* `ifdef MPRJ_IO_3_I */
`endif /* `ifdef MPRJ_IO_3_IO */
    
`ifdef MPRJ_IO_2_IO
        ,.`IPIN(`MPRJ_IO_2_CONN) ( io_in[2])
        ,.`OPIN(`MPRJ_IO_2_CONN) (io_out[2])
        ,  .`OE(`MPRJ_IO_2_CONN) (oe_2)
`else /* `ifdef MPRJ_IO_2_IO */
`ifdef MPRJ_IO_2_I
        ,.`MPRJ_IO_2_CONN ( io_in[2])
`else /* `ifdef MPRJ_IO_2_I */
        ,.`MPRJ_IO_2_CONN (io_out[2])
`endif /* `ifdef MPRJ_IO_2_I */
`endif /* `ifdef MPRJ_IO_2_IO */
    
`ifdef MPRJ_IO_1_IO
        ,.`IPIN(`MPRJ_IO_1_CONN) ( io_in[1])
        ,.`OPIN(`MPRJ_IO_1_CONN) (io_out[1])
        ,  .`OE(`MPRJ_IO_1_CONN) (oe_1)
`else /* `ifdef MPRJ_IO_1_IO */
`ifdef MPRJ_IO_1_I
        ,.`MPRJ_IO_1_CONN ( io_in[1])
`else /* `ifdef MPRJ_IO_1_I */
        ,.`MPRJ_IO_1_CONN (io_out[1])
`endif /* `ifdef MPRJ_IO_1_I */
`endif /* `ifdef MPRJ_IO_1_IO */
    
`ifdef MPRJ_IO_0_IO
        ,.`IPIN(`MPRJ_IO_0_CONN) ( io_in[0])
        ,.`OPIN(`MPRJ_IO_0_CONN) (io_out[0])
        ,  .`OE(`MPRJ_IO_0_CONN) (oe_0)
`else /* `ifdef MPRJ_IO_0_IO */
`ifdef MPRJ_IO_0_I
        ,.`MPRJ_IO_0_CONN ( io_in[0])
`else /* `ifdef MPRJ_IO_0_I */
        ,.`MPRJ_IO_0_CONN (io_out[0])
`endif /* `ifdef MPRJ_IO_0_I */
`endif /* `ifdef MPRJ_IO_0_IO */
   );
   
endmodule	// user_project_wrapper

`default_nettype wire
