// 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_I
    assign io_out[37] = 1'b0;
    assign io_oeb[37] = 1'b0;
`else /* `ifdef MPRJ_IO_37_I */
`ifdef MPRJ_IO_37_O
    assign io_oeb[37] = 1'b1;
`endif /* `ifdef MPRJ_IO_37_O */
`endif /* `ifdef MPRJ_IO_37_I */

`ifdef MPRJ_IO_36_I
    assign io_out[36] = 1'b0;
    assign io_oeb[36] = 1'b0;
`else /* `ifdef MPRJ_IO_36_I */
`ifdef MPRJ_IO_36_O
    assign io_oeb[36] = 1'b1;
`endif /* `ifdef MPRJ_IO_36_O */
`endif /* `ifdef MPRJ_IO_36_I */

`ifdef MPRJ_IO_35_I
    assign io_out[35] = 1'b0;
    assign io_oeb[35] = 1'b0;
`else /* `ifdef MPRJ_IO_35_I */
`ifdef MPRJ_IO_35_O
    assign io_oeb[35] = 1'b1;
`endif /* `ifdef MPRJ_IO_35_O */
`endif /* `ifdef MPRJ_IO_35_I */

`ifdef MPRJ_IO_34_I
    assign io_out[34] = 1'b0;
    assign io_oeb[34] = 1'b0;
`else /* `ifdef MPRJ_IO_34_I */
`ifdef MPRJ_IO_34_O
    assign io_oeb[34] = 1'b1;
`endif /* `ifdef MPRJ_IO_34_O */
`endif /* `ifdef MPRJ_IO_34_I */

`ifdef MPRJ_IO_33_I
    assign io_out[33] = 1'b0;
    assign io_oeb[33] = 1'b0;
`else /* `ifdef MPRJ_IO_33_I */
`ifdef MPRJ_IO_33_O
    assign io_oeb[33] = 1'b1;
`endif /* `ifdef MPRJ_IO_33_O */
`endif /* `ifdef MPRJ_IO_33_I */

`ifdef MPRJ_IO_32_I
    assign io_out[32] = 1'b0;
    assign io_oeb[32] = 1'b0;
`else /* `ifdef MPRJ_IO_32_I */
`ifdef MPRJ_IO_32_O
    assign io_oeb[32] = 1'b1;
`endif /* `ifdef MPRJ_IO_32_O */
`endif /* `ifdef MPRJ_IO_32_I */

`ifdef MPRJ_IO_31_I
    assign io_out[31] = 1'b0;
    assign io_oeb[31] = 1'b0;
`else /* `ifdef MPRJ_IO_31_I */
`ifdef MPRJ_IO_31_O
    assign io_oeb[31] = 1'b1;
`endif /* `ifdef MPRJ_IO_31_O */
`endif /* `ifdef MPRJ_IO_31_I */

`ifdef MPRJ_IO_30_I
    assign io_out[30] = 1'b0;
    assign io_oeb[30] = 1'b0;
`else /* `ifdef MPRJ_IO_30_I */
`ifdef MPRJ_IO_30_O
    assign io_oeb[30] = 1'b1;
`endif /* `ifdef MPRJ_IO_30_O */
`endif /* `ifdef MPRJ_IO_30_I */

`ifdef MPRJ_IO_29_I
    assign io_out[29] = 1'b0;
    assign io_oeb[29] = 1'b0;
`else /* `ifdef MPRJ_IO_29_I */
`ifdef MPRJ_IO_29_O
    assign io_oeb[29] = 1'b1;
`endif /* `ifdef MPRJ_IO_29_O */
`endif /* `ifdef MPRJ_IO_29_I */

`ifdef MPRJ_IO_28_I
    assign io_out[28] = 1'b0;
    assign io_oeb[28] = 1'b0;
`else /* `ifdef MPRJ_IO_28_I */
`ifdef MPRJ_IO_28_O
    assign io_oeb[28] = 1'b1;
`endif /* `ifdef MPRJ_IO_28_O */
`endif /* `ifdef MPRJ_IO_28_I */

`ifdef MPRJ_IO_27_I
    assign io_out[27] = 1'b0;
    assign io_oeb[27] = 1'b0;
`else /* `ifdef MPRJ_IO_27_I */
`ifdef MPRJ_IO_27_O
    assign io_oeb[27] = 1'b1;
`endif /* `ifdef MPRJ_IO_27_O */
`endif /* `ifdef MPRJ_IO_27_I */

`ifdef MPRJ_IO_26_I
    assign io_out[26] = 1'b0;
    assign io_oeb[26] = 1'b0;
`else /* `ifdef MPRJ_IO_26_I */
`ifdef MPRJ_IO_26_O
    assign io_oeb[26] = 1'b1;
`endif /* `ifdef MPRJ_IO_26_O */
`endif /* `ifdef MPRJ_IO_26_I */

`ifdef MPRJ_IO_25_I
    assign io_out[25] = 1'b0;
    assign io_oeb[25] = 1'b0;
`else /* `ifdef MPRJ_IO_25_I */
`ifdef MPRJ_IO_25_O
    assign io_oeb[25] = 1'b1;
`endif /* `ifdef MPRJ_IO_25_O */
`endif /* `ifdef MPRJ_IO_25_I */

`ifdef MPRJ_IO_24_I
    assign io_out[24] = 1'b0;
    assign io_oeb[24] = 1'b0;
`else /* `ifdef MPRJ_IO_24_I */
`ifdef MPRJ_IO_24_O
    assign io_oeb[24] = 1'b1;
`endif /* `ifdef MPRJ_IO_24_O */
`endif /* `ifdef MPRJ_IO_24_I */

`ifdef MPRJ_IO_23_I
    assign io_out[23] = 1'b0;
    assign io_oeb[23] = 1'b0;
`else /* `ifdef MPRJ_IO_23_I */
`ifdef MPRJ_IO_23_O
    assign io_oeb[23] = 1'b1;
`endif /* `ifdef MPRJ_IO_23_O */
`endif /* `ifdef MPRJ_IO_23_I */

`ifdef MPRJ_IO_22_I
    assign io_out[22] = 1'b0;
    assign io_oeb[22] = 1'b0;
`else /* `ifdef MPRJ_IO_22_I */
`ifdef MPRJ_IO_22_O
    assign io_oeb[22] = 1'b1;
`endif /* `ifdef MPRJ_IO_22_O */
`endif /* `ifdef MPRJ_IO_22_I */

`ifdef MPRJ_IO_21_I
    assign io_out[21] = 1'b0;
    assign io_oeb[21] = 1'b0;
`else /* `ifdef MPRJ_IO_21_I */
`ifdef MPRJ_IO_21_O
    assign io_oeb[21] = 1'b1;
`endif /* `ifdef MPRJ_IO_21_O */
`endif /* `ifdef MPRJ_IO_21_I */

`ifdef MPRJ_IO_20_I
    assign io_out[20] = 1'b0;
    assign io_oeb[20] = 1'b0;
`else /* `ifdef MPRJ_IO_20_I */
`ifdef MPRJ_IO_20_O
    assign io_oeb[20] = 1'b1;
`endif /* `ifdef MPRJ_IO_20_O */
`endif /* `ifdef MPRJ_IO_20_I */

`ifdef MPRJ_IO_19_I
    assign io_out[19] = 1'b0;
    assign io_oeb[19] = 1'b0;
`else /* `ifdef MPRJ_IO_19_I */
`ifdef MPRJ_IO_19_O
    assign io_oeb[19] = 1'b1;
`endif /* `ifdef MPRJ_IO_19_O */
`endif /* `ifdef MPRJ_IO_19_I */

`ifdef MPRJ_IO_18_I
    assign io_out[18] = 1'b0;
    assign io_oeb[18] = 1'b0;
`else /* `ifdef MPRJ_IO_18_I */
`ifdef MPRJ_IO_18_O
    assign io_oeb[18] = 1'b1;
`endif /* `ifdef MPRJ_IO_18_O */
`endif /* `ifdef MPRJ_IO_18_I */

`ifdef MPRJ_IO_17_I
    assign io_out[17] = 1'b0;
    assign io_oeb[17] = 1'b0;
`else /* `ifdef MPRJ_IO_17_I */
`ifdef MPRJ_IO_17_O
    assign io_oeb[17] = 1'b1;
`endif /* `ifdef MPRJ_IO_17_O */
`endif /* `ifdef MPRJ_IO_17_I */

`ifdef MPRJ_IO_16_I
    assign io_out[16] = 1'b0;
    assign io_oeb[16] = 1'b0;
`else /* `ifdef MPRJ_IO_16_I */
`ifdef MPRJ_IO_16_O
    assign io_oeb[16] = 1'b1;
`endif /* `ifdef MPRJ_IO_16_O */
`endif /* `ifdef MPRJ_IO_16_I */

`ifdef MPRJ_IO_15_I
    assign io_out[15] = 1'b0;
    assign io_oeb[15] = 1'b0;
`else /* `ifdef MPRJ_IO_15_I */
`ifdef MPRJ_IO_15_O
    assign io_oeb[15] = 1'b1;
`endif /* `ifdef MPRJ_IO_15_O */
`endif /* `ifdef MPRJ_IO_15_I */

`ifdef MPRJ_IO_14_I
    assign io_out[14] = 1'b0;
    assign io_oeb[14] = 1'b0;
`else /* `ifdef MPRJ_IO_14_I */
`ifdef MPRJ_IO_14_O
    assign io_oeb[14] = 1'b1;
`endif /* `ifdef MPRJ_IO_14_O */
`endif /* `ifdef MPRJ_IO_14_I */

`ifdef MPRJ_IO_13_I
    assign io_out[13] = 1'b0;
    assign io_oeb[13] = 1'b0;
`else /* `ifdef MPRJ_IO_13_I */
`ifdef MPRJ_IO_13_O
    assign io_oeb[13] = 1'b1;
`endif /* `ifdef MPRJ_IO_13_O */
`endif /* `ifdef MPRJ_IO_13_I */

`ifdef MPRJ_IO_12_I
    assign io_out[12] = 1'b0;
    assign io_oeb[12] = 1'b0;
`else /* `ifdef MPRJ_IO_12_I */
`ifdef MPRJ_IO_12_O
    assign io_oeb[12] = 1'b1;
`endif /* `ifdef MPRJ_IO_12_O */
`endif /* `ifdef MPRJ_IO_12_I */

`ifdef MPRJ_IO_11_I
    assign io_out[11] = 1'b0;
    assign io_oeb[11] = 1'b0;
`else /* `ifdef MPRJ_IO_11_I */
`ifdef MPRJ_IO_11_O
    assign io_oeb[11] = 1'b1;
`endif /* `ifdef MPRJ_IO_11_O */
`endif /* `ifdef MPRJ_IO_11_I */

`ifdef MPRJ_IO_10_I
    assign io_out[10] = 1'b0;
    assign io_oeb[10] = 1'b0;
`else /* `ifdef MPRJ_IO_10_I */
`ifdef MPRJ_IO_10_O
    assign io_oeb[10] = 1'b1;
`endif /* `ifdef MPRJ_IO_10_O */
`endif /* `ifdef MPRJ_IO_10_I */

`ifdef MPRJ_IO_9_I
    assign io_out[9] = 1'b0;
    assign io_oeb[9] = 1'b0;
`else /* `ifdef MPRJ_IO_9_I */
`ifdef MPRJ_IO_9_O
    assign io_oeb[9] = 1'b1;
`endif /* `ifdef MPRJ_IO_9_O */
`endif /* `ifdef MPRJ_IO_9_I */

`ifdef MPRJ_IO_8_I
    assign io_out[8] = 1'b0;
    assign io_oeb[8] = 1'b0;
`else /* `ifdef MPRJ_IO_8_I */
`ifdef MPRJ_IO_8_O
    assign io_oeb[8] = 1'b1;
`endif /* `ifdef MPRJ_IO_8_O */
`endif /* `ifdef MPRJ_IO_8_I */

`ifdef MPRJ_IO_7_I
    assign io_out[7] = 1'b0;
    assign io_oeb[7] = 1'b0;
`else /* `ifdef MPRJ_IO_7_I */
`ifdef MPRJ_IO_7_O
    assign io_oeb[7] = 1'b1;
`endif /* `ifdef MPRJ_IO_7_O */
`endif /* `ifdef MPRJ_IO_7_I */

`ifdef MPRJ_IO_6_I
    assign io_out[6] = 1'b0;
    assign io_oeb[6] = 1'b0;
`else /* `ifdef MPRJ_IO_6_I */
`ifdef MPRJ_IO_6_O
    assign io_oeb[6] = 1'b1;
`endif /* `ifdef MPRJ_IO_6_O */
`endif /* `ifdef MPRJ_IO_6_I */

`ifdef MPRJ_IO_5_I
    assign io_out[5] = 1'b0;
    assign io_oeb[5] = 1'b0;
`else /* `ifdef MPRJ_IO_5_I */
`ifdef MPRJ_IO_5_O
    assign io_oeb[5] = 1'b1;
`endif /* `ifdef MPRJ_IO_5_O */
`endif /* `ifdef MPRJ_IO_5_I */

`ifdef MPRJ_IO_4_I
    assign io_out[4] = 1'b0;
    assign io_oeb[4] = 1'b0;
`else /* `ifdef MPRJ_IO_4_I */
`ifdef MPRJ_IO_4_O
    assign io_oeb[4] = 1'b1;
`endif /* `ifdef MPRJ_IO_4_O */
`endif /* `ifdef MPRJ_IO_4_I */

`ifdef MPRJ_IO_3_I
    assign io_out[3] = 1'b0;
    assign io_oeb[3] = 1'b0;
`else /* `ifdef MPRJ_IO_3_I */
`ifdef MPRJ_IO_3_O
    assign io_oeb[3] = 1'b1;
`endif /* `ifdef MPRJ_IO_3_O */
`endif /* `ifdef MPRJ_IO_3_I */

`ifdef MPRJ_IO_2_I
    assign io_out[2] = 1'b0;
    assign io_oeb[2] = 1'b0;
`else /* `ifdef MPRJ_IO_2_I */
`ifdef MPRJ_IO_2_O
    assign io_oeb[2] = 1'b1;
`endif /* `ifdef MPRJ_IO_2_O */
`endif /* `ifdef MPRJ_IO_2_I */

`ifdef MPRJ_IO_1_I
    assign io_out[1] = 1'b0;
    assign io_oeb[1] = 1'b0;
`else /* `ifdef MPRJ_IO_1_I */
`ifdef MPRJ_IO_1_O
    assign io_oeb[1] = 1'b1;
`endif /* `ifdef MPRJ_IO_1_O */
`endif /* `ifdef MPRJ_IO_1_I */

`ifdef MPRJ_IO_0_I
    assign io_out[0] = 1'b0;
    assign io_oeb[0] = 1'b0;
`else /* `ifdef MPRJ_IO_0_I */
`ifdef MPRJ_IO_0_O
    assign io_oeb[0] = 1'b1;
`endif /* `ifdef MPRJ_IO_0_O */
`endif /* `ifdef MPRJ_IO_0_I */

   // GPIO PINS
   localparam  PIN_PROG_CLK     = 37;
   localparam  PIN_USER_CLK     = 36;
   localparam  PIN_PROG_DIN     = 35;
   localparam  PIN_PROG_DONE    = 34;
   localparam  PIN_PROG_RST     = 33;
   localparam  PIN_PROG_WE      = 32;
   localparam  PIN_31           = 31;
   localparam  PIN_30           = 30;
   localparam  PIN_29           = 29;
   localparam  PIN_28           = 28;
   localparam  PIN_27           = 27;
   localparam  PIN_26           = 26;
   localparam  PIN_25           = 25;
   localparam  PIN_24           = 24;
   localparam  PIN_23           = 23;
   localparam  PIN_22           = 22;
   localparam  PIN_21           = 21;
   localparam  PIN_20           = 20;
   localparam  PIN_19           = 19;
   localparam  PIN_18           = 18;
   localparam  PIN_17           = 17;
   localparam  PIN_16           = 16;
   localparam  PIN_15           = 15;
   localparam  PIN_14           = 14;
   localparam  PIN_13           = 13;
   localparam  PIN_12           = 12;
   localparam  PIN_11           = 11;
   localparam  PIN_10           = 10;
   localparam  PIN_9            = 9;
   localparam  PIN_8            = 8;
   localparam  PIN_7            = 7;
   localparam  PIN_6            = 6;
   localparam  PIN_5            = 5;
   localparam  PIN_4            = 4;
   localparam  PIN_3            = 3;
   localparam  PIN_2            = 2;
   localparam  PIN_PROG_DOUT    = 1;
   localparam  PIN_PROG_WE_O    = 0;

   // 
   wire [0:0]                   prog_clk, prog_rst, prog_done, prog_we, prog_din, prog_dout, prog_we_o;
   wire [0:0]                   clk;

   // wire [1:0]                   not_used;
   
   //prog_din
   assign prog_din = io_in[PIN_PROG_DIN];
   assign io_oeb[PIN_PROG_DIN] = 1'b0;
   assign io_out[PIN_PROG_DIN] = 1'b0;
   //prog_done
   assign prog_done = io_in[PIN_PROG_DONE];
   assign io_oeb[PIN_PROG_DONE] = 1'b0;
   assign io_out[PIN_PROG_DONE] = 1'b0;
   //prog_rst
   assign prog_rst = io_in[PIN_PROG_RST];
   assign io_oeb[PIN_PROG_RST] = 1'b0;
   assign io_out[PIN_PROG_RST] = 1'b0;
   //prog_we
   assign prog_we = io_in[PIN_PROG_WE];
   assign io_oeb[PIN_PROG_WE] = 1'b0;
   assign io_out[PIN_PROG_WE] = 1'b0;

   //prog_dout
   // assign not_used = io_in[PIN_PROG_DOUT];
   assign io_oeb[PIN_PROG_DOUT] = 1'b1;
   assign io_out[PIN_PROG_DOUT] = prog_dout;
   //prog_dout
   // assign not_used = io_in[PIN_PROG_WE_O];
   assign io_oeb[PIN_PROG_WE_O] = 1'b1;
   assign io_out[PIN_PROG_WE_O] = prog_we_o;


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

      
   // We use user_clock2 instead of external clock through GPIO due to the reported issue with scipts and brackets in names of constraints
   // 
   assign prog_clk = user_clock2;
   assign clk = user_clock2;
   
   //~
   // 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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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) (io_oeb[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
