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

// Automatically generated by PRGA's RTL generator
module tile_clb (
`ifdef USE_POWER_PINS
    inout vccd1,	// User area 1 1.8V supply
    inout vssd1,	// User area 1 digital ground
`endif
    output wire [11:0] cu_x0y0n_L1
    , output wire [11:0] cu_x0y0s_L1
    , input wire [11:0] bi_u1y0n_L1
    , input wire [11:0] bi_u1y0s_L1
    , input wire [0:0] clk
    , input wire [0:0] prog_clk
    , input wire [0:0] prog_rst
    , input wire [0:0] prog_done
    , input wire [0:0] prog_we
    , input wire [0:0] prog_din
    , output wire [0:0] prog_dout
    , output wire [0:0] prog_we_o
    );
    
        
    wire [7:0] _i_blk__out;
    wire [0:0] _i_blk__prog_dout;
    wire [0:0] _i_blk__prog_we_o;
    wire [11:0] _i_cbox_e0__cu_x0y0n_L1;
    wire [11:0] _i_cbox_e0__cu_x0y0s_L1;
    wire [0:0] _i_cbox_e0__prog_dout;
    wire [0:0] _i_cbox_e0__prog_we_o;
    wire [15:0] _i_cbox_w0__bp_x0y0i0_in;
    wire [0:0] _i_cbox_w0__prog_dout;
    wire [0:0] _i_cbox_w0__prog_we_o;
    wire [0:0] _i_buf_prog_rst_l0__Q;
    wire [0:0] _i_buf_prog_done_l0__Q;
    wire [0:0] _i_buf_prog_rst_l1__Q;
    wire [0:0] _i_buf_prog_done_l1__Q;
        
    clb i_blk (
        .clk(clk)
        ,.in(_i_cbox_w0__bp_x0y0i0_in)
        ,.out(_i_blk__out)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l1__Q)
        ,.prog_done(_i_buf_prog_done_l1__Q)
        ,.prog_we(prog_we)
        ,.prog_din(prog_din)
        ,.prog_dout(_i_blk__prog_dout)
        ,.prog_we_o(_i_blk__prog_we_o)
        );
    cbox_tile_clb_e0 i_cbox_e0 (
        .bp_x0y0i0_out(_i_blk__out)
        ,.cu_x0y0n_L1(_i_cbox_e0__cu_x0y0n_L1)
        ,.cu_x0y0s_L1(_i_cbox_e0__cu_x0y0s_L1)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l1__Q)
        ,.prog_done(_i_buf_prog_done_l1__Q)
        ,.prog_we(_i_blk__prog_we_o)
        ,.prog_din(_i_blk__prog_dout)
        ,.prog_dout(_i_cbox_e0__prog_dout)
        ,.prog_we_o(_i_cbox_e0__prog_we_o)
        );
    cbox_tile_clb_w0 i_cbox_w0 (
        .bp_x0y0i0_in(_i_cbox_w0__bp_x0y0i0_in)
        ,.bi_u1y0n_L1(bi_u1y0n_L1)
        ,.bi_u1y0s_L1(bi_u1y0s_L1)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l1__Q)
        ,.prog_done(_i_buf_prog_done_l1__Q)
        ,.prog_we(_i_cbox_e0__prog_we_o)
        ,.prog_din(_i_cbox_e0__prog_dout)
        ,.prog_dout(_i_cbox_w0__prog_dout)
        ,.prog_we_o(_i_cbox_w0__prog_we_o)
        );
    prga_simple_buf i_buf_prog_rst_l0 (
        .C(prog_clk)
        ,.D(_i_buf_prog_rst_l1__Q)
        ,.Q(_i_buf_prog_rst_l0__Q)
        );
    prga_simple_bufr i_buf_prog_done_l0 (
        .C(prog_clk)
        ,.R(_i_buf_prog_rst_l0__Q)
        ,.D(_i_buf_prog_done_l1__Q)
        ,.Q(_i_buf_prog_done_l0__Q)
        );
    prga_simple_buf i_buf_prog_rst_l1 (
        .C(prog_clk)
        ,.D(prog_rst)
        ,.Q(_i_buf_prog_rst_l1__Q)
        );
    prga_simple_bufr i_buf_prog_done_l1 (
        .C(prog_clk)
        ,.R(_i_buf_prog_rst_l0__Q)
        ,.D(prog_done)
        ,.Q(_i_buf_prog_done_l1__Q)
        );
        
    assign cu_x0y0n_L1 = _i_cbox_e0__cu_x0y0n_L1;
    assign cu_x0y0s_L1 = _i_cbox_e0__cu_x0y0s_L1;
    assign prog_dout = _i_cbox_w0__prog_dout;
    assign prog_we_o = _i_cbox_w0__prog_we_o;

endmodule
// Automatically generated by PRGA's RTL generator
module clb (
    input wire [0:0] clk
    , input wire [15:0] in
    , output wire [7:0] out
    , input wire [0:0] prog_clk
    , input wire [0:0] prog_rst
    , input wire [0:0] prog_done
    , input wire [0:0] prog_we
    , input wire [0:0] prog_din
    , output wire [0:0] prog_dout
    , output wire [0:0] prog_we_o
    );
    
        
    wire [0:0] _cluster_i0__o;
    wire [0:0] _cluster_i0__prog_dout;
    wire [0:0] _cluster_i1__o;
    wire [0:0] _cluster_i1__prog_dout;
    wire [0:0] _cluster_i2__o;
    wire [0:0] _cluster_i2__prog_dout;
    wire [0:0] _cluster_i3__o;
    wire [0:0] _cluster_i3__prog_dout;
    wire [0:0] _cluster_i4__o;
    wire [0:0] _cluster_i4__prog_dout;
    wire [0:0] _cluster_i5__o;
    wire [0:0] _cluster_i5__prog_dout;
    wire [0:0] _cluster_i6__o;
    wire [0:0] _cluster_i6__prog_dout;
    wire [0:0] _cluster_i7__o;
    wire [0:0] _cluster_i7__prog_dout;
    wire [0:0] _i_sw_cluster_i0_i_0__o;
    wire [0:0] _i_sw_cluster_i0_i_1__o;
    wire [0:0] _i_sw_cluster_i0_i_2__o;
    wire [0:0] _i_sw_cluster_i0_i_3__o;
    wire [0:0] _i_sw_cluster_i1_i_0__o;
    wire [0:0] _i_sw_cluster_i1_i_1__o;
    wire [0:0] _i_sw_cluster_i1_i_2__o;
    wire [0:0] _i_sw_cluster_i1_i_3__o;
    wire [0:0] _i_sw_cluster_i2_i_0__o;
    wire [0:0] _i_sw_cluster_i2_i_1__o;
    wire [0:0] _i_sw_cluster_i2_i_2__o;
    wire [0:0] _i_sw_cluster_i2_i_3__o;
    wire [0:0] _i_sw_cluster_i3_i_0__o;
    wire [0:0] _i_sw_cluster_i3_i_1__o;
    wire [0:0] _i_sw_cluster_i3_i_2__o;
    wire [0:0] _i_sw_cluster_i3_i_3__o;
    wire [0:0] _i_sw_cluster_i4_i_0__o;
    wire [0:0] _i_sw_cluster_i4_i_1__o;
    wire [0:0] _i_sw_cluster_i4_i_2__o;
    wire [0:0] _i_sw_cluster_i4_i_3__o;
    wire [0:0] _i_sw_cluster_i5_i_0__o;
    wire [0:0] _i_sw_cluster_i5_i_1__o;
    wire [0:0] _i_sw_cluster_i5_i_2__o;
    wire [0:0] _i_sw_cluster_i5_i_3__o;
    wire [0:0] _i_sw_cluster_i6_i_0__o;
    wire [0:0] _i_sw_cluster_i6_i_1__o;
    wire [0:0] _i_sw_cluster_i6_i_2__o;
    wire [0:0] _i_sw_cluster_i6_i_3__o;
    wire [0:0] _i_sw_cluster_i7_i_0__o;
    wire [0:0] _i_sw_cluster_i7_i_1__o;
    wire [0:0] _i_sw_cluster_i7_i_2__o;
    wire [0:0] _i_sw_cluster_i7_i_3__o;
    wire [0:0] _i_buf_prog_rst_l0__Q;
    wire [0:0] _i_buf_prog_done_l0__Q;
    wire [0:0] _i_scanchain_head__prog_dout;
    wire [0:0] _i_scanchain_head__prog_we_o;
    wire [0:0] _i_prog_data_i_sw_cluster_i0_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i0_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i0_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i0_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i0_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i0_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i0_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i0_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i1_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i1_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i1_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i1_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i1_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i1_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i1_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i1_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i2_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i2_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i2_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i2_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i2_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i2_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i2_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i2_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i3_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i3_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i3_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i3_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i3_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i3_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i3_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i3_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i4_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i4_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i4_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i4_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i4_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i4_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i4_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i4_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i5_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i5_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i5_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i5_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i5_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i5_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i5_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i5_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i6_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i6_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i6_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i6_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i6_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i6_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i6_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i6_i_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i7_i_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i7_i_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i7_i_1__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i7_i_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i7_i_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i7_i_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cluster_i7_i_3__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cluster_i7_i_3__prog_data;
    wire [0:0] _i_scanchain_tail__prog_dout;
    wire [0:0] _i_scanchain_tail__prog_we_o;
        
    slice cluster_i0 (
        .clk(clk)
        ,.i({_i_sw_cluster_i0_i_3__o,
            _i_sw_cluster_i0_i_2__o,
            _i_sw_cluster_i0_i_1__o,
            _i_sw_cluster_i0_i_0__o})
        ,.o(_cluster_i0__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_scanchain_head__prog_dout)
        ,.prog_dout(_cluster_i0__prog_dout)
        );
    slice cluster_i1 (
        .clk(clk)
        ,.i({_i_sw_cluster_i1_i_3__o,
            _i_sw_cluster_i1_i_2__o,
            _i_sw_cluster_i1_i_1__o,
            _i_sw_cluster_i1_i_0__o})
        ,.o(_cluster_i1__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i0__prog_dout)
        ,.prog_dout(_cluster_i1__prog_dout)
        );
    slice cluster_i2 (
        .clk(clk)
        ,.i({_i_sw_cluster_i2_i_3__o,
            _i_sw_cluster_i2_i_2__o,
            _i_sw_cluster_i2_i_1__o,
            _i_sw_cluster_i2_i_0__o})
        ,.o(_cluster_i2__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i1__prog_dout)
        ,.prog_dout(_cluster_i2__prog_dout)
        );
    slice cluster_i3 (
        .clk(clk)
        ,.i({_i_sw_cluster_i3_i_3__o,
            _i_sw_cluster_i3_i_2__o,
            _i_sw_cluster_i3_i_1__o,
            _i_sw_cluster_i3_i_0__o})
        ,.o(_cluster_i3__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i2__prog_dout)
        ,.prog_dout(_cluster_i3__prog_dout)
        );
    slice cluster_i4 (
        .clk(clk)
        ,.i({_i_sw_cluster_i4_i_3__o,
            _i_sw_cluster_i4_i_2__o,
            _i_sw_cluster_i4_i_1__o,
            _i_sw_cluster_i4_i_0__o})
        ,.o(_cluster_i4__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i3__prog_dout)
        ,.prog_dout(_cluster_i4__prog_dout)
        );
    slice cluster_i5 (
        .clk(clk)
        ,.i({_i_sw_cluster_i5_i_3__o,
            _i_sw_cluster_i5_i_2__o,
            _i_sw_cluster_i5_i_1__o,
            _i_sw_cluster_i5_i_0__o})
        ,.o(_cluster_i5__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i4__prog_dout)
        ,.prog_dout(_cluster_i5__prog_dout)
        );
    slice cluster_i6 (
        .clk(clk)
        ,.i({_i_sw_cluster_i6_i_3__o,
            _i_sw_cluster_i6_i_2__o,
            _i_sw_cluster_i6_i_1__o,
            _i_sw_cluster_i6_i_0__o})
        ,.o(_cluster_i6__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i5__prog_dout)
        ,.prog_dout(_cluster_i6__prog_dout)
        );
    slice cluster_i7 (
        .clk(clk)
        ,.i({_i_sw_cluster_i7_i_3__o,
            _i_sw_cluster_i7_i_2__o,
            _i_sw_cluster_i7_i_1__o,
            _i_sw_cluster_i7_i_0__o})
        ,.o(_cluster_i7__o)
        ,.prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i6__prog_dout)
        ,.prog_dout(_cluster_i7__prog_dout)
        );
    sw3 i_sw_cluster_i0_i_0 (
        .i({_cluster_i0__o,
            in[8],
            in[0]})
        ,.o(_i_sw_cluster_i0_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_0__prog_data)
        );
    sw3 i_sw_cluster_i0_i_1 (
        .i({_cluster_i2__o,
            in[10],
            in[2]})
        ,.o(_i_sw_cluster_i0_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_1__prog_data)
        );
    sw3 i_sw_cluster_i0_i_2 (
        .i({_cluster_i4__o,
            in[12],
            in[4]})
        ,.o(_i_sw_cluster_i0_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_2__prog_data)
        );
    sw3 i_sw_cluster_i0_i_3 (
        .i({_cluster_i6__o,
            in[14],
            in[6]})
        ,.o(_i_sw_cluster_i0_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_3__prog_data)
        );
    sw3 i_sw_cluster_i1_i_0 (
        .i({_cluster_i1__o,
            in[9],
            in[1]})
        ,.o(_i_sw_cluster_i1_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_0__prog_data)
        );
    sw3 i_sw_cluster_i1_i_1 (
        .i({_cluster_i4__o,
            in[11],
            in[3]})
        ,.o(_i_sw_cluster_i1_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_1__prog_data)
        );
    sw3 i_sw_cluster_i1_i_2 (
        .i({_cluster_i5__o,
            in[13],
            in[5]})
        ,.o(_i_sw_cluster_i1_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_2__prog_data)
        );
    sw3 i_sw_cluster_i1_i_3 (
        .i({_cluster_i7__o,
            in[15],
            in[8]})
        ,.o(_i_sw_cluster_i1_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_3__prog_data)
        );
    sw3 i_sw_cluster_i2_i_0 (
        .i({_cluster_i0__o,
            in[7],
            in[0]})
        ,.o(_i_sw_cluster_i2_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_0__prog_data)
        );
    sw3 i_sw_cluster_i2_i_1 (
        .i({_cluster_i2__o,
            in[10],
            in[2]})
        ,.o(_i_sw_cluster_i2_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_1__prog_data)
        );
    sw3 i_sw_cluster_i2_i_2 (
        .i({_cluster_i3__o,
            in[12],
            in[4]})
        ,.o(_i_sw_cluster_i2_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_2__prog_data)
        );
    sw3 i_sw_cluster_i2_i_3 (
        .i({_cluster_i4__o,
            in[14],
            in[6]})
        ,.o(_i_sw_cluster_i2_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_3__prog_data)
        );
    sw3 i_sw_cluster_i3_i_0 (
        .i({_cluster_i0__o,
            in[9],
            in[1]})
        ,.o(_i_sw_cluster_i3_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_0__prog_data)
        );
    sw3 i_sw_cluster_i3_i_1 (
        .i({_cluster_i1__o,
            in[11],
            in[3]})
        ,.o(_i_sw_cluster_i3_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_1__prog_data)
        );
    sw3 i_sw_cluster_i3_i_2 (
        .i({_cluster_i5__o,
            in[13],
            in[5]})
        ,.o(_i_sw_cluster_i3_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_2__prog_data)
        );
    sw3 i_sw_cluster_i3_i_3 (
        .i({_cluster_i6__o,
            in[15],
            in[8]})
        ,.o(_i_sw_cluster_i3_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_3__prog_data)
        );
    sw3 i_sw_cluster_i4_i_0 (
        .i({_cluster_i2__o,
            in[7],
            in[0]})
        ,.o(_i_sw_cluster_i4_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_0__prog_data)
        );
    sw3 i_sw_cluster_i4_i_1 (
        .i({_cluster_i3__o,
            in[9],
            in[2]})
        ,.o(_i_sw_cluster_i4_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_1__prog_data)
        );
    sw3 i_sw_cluster_i4_i_2 (
        .i({_cluster_i4__o,
            in[12],
            in[4]})
        ,.o(_i_sw_cluster_i4_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_2__prog_data)
        );
    sw3 i_sw_cluster_i4_i_3 (
        .i({_cluster_i6__o,
            in[14],
            in[6]})
        ,.o(_i_sw_cluster_i4_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_3__prog_data)
        );
    sw3 i_sw_cluster_i5_i_0 (
        .i({_cluster_i2__o,
            in[10],
            in[3]})
        ,.o(_i_sw_cluster_i5_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_0__prog_data)
        );
    sw3 i_sw_cluster_i5_i_1 (
        .i({_cluster_i4__o,
            in[11],
            in[5]})
        ,.o(_i_sw_cluster_i5_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_1__prog_data)
        );
    sw3 i_sw_cluster_i5_i_2 (
        .i({_cluster_i6__o,
            in[13],
            in[6]})
        ,.o(_i_sw_cluster_i5_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_2__prog_data)
        );
    sw3 i_sw_cluster_i5_i_3 (
        .i({_cluster_i7__o,
            in[15],
            in[8]})
        ,.o(_i_sw_cluster_i5_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_3__prog_data)
        );
    sw3 i_sw_cluster_i6_i_0 (
        .i({_cluster_i1__o,
            in[8],
            in[0]})
        ,.o(_i_sw_cluster_i6_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_0__prog_data)
        );
    sw3 i_sw_cluster_i6_i_1 (
        .i({_cluster_i4__o,
            in[10],
            in[1]})
        ,.o(_i_sw_cluster_i6_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_1__prog_data)
        );
    sw3 i_sw_cluster_i6_i_2 (
        .i({_cluster_i5__o,
            in[12],
            in[5]})
        ,.o(_i_sw_cluster_i6_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_2__prog_data)
        );
    sw3 i_sw_cluster_i6_i_3 (
        .i({_cluster_i7__o,
            in[14],
            in[7]})
        ,.o(_i_sw_cluster_i6_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_3__prog_data)
        );
    sw3 i_sw_cluster_i7_i_0 (
        .i({_cluster_i0__o,
            in[7],
            in[0]})
        ,.o(_i_sw_cluster_i7_i_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_0__prog_data)
        );
    sw3 i_sw_cluster_i7_i_1 (
        .i({_cluster_i1__o,
            in[11],
            in[2]})
        ,.o(_i_sw_cluster_i7_i_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_1__prog_data)
        );
    sw3 i_sw_cluster_i7_i_2 (
        .i({_cluster_i2__o,
            in[13],
            in[4]})
        ,.o(_i_sw_cluster_i7_i_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_2__prog_data)
        );
    sw3 i_sw_cluster_i7_i_3 (
        .i({_cluster_i3__o,
            in[15],
            in[5]})
        ,.o(_i_sw_cluster_i7_i_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_3__prog_data)
        );
    prga_simple_buf i_buf_prog_rst_l0 (
        .C(prog_clk)
        ,.D(prog_rst)
        ,.Q(_i_buf_prog_rst_l0__Q)
        );
    prga_simple_bufr i_buf_prog_done_l0 (
        .C(prog_clk)
        ,.R(_i_buf_prog_rst_l0__Q)
        ,.D(prog_done)
        ,.Q(_i_buf_prog_done_l0__Q)
        );
    scanchain_delim i_scanchain_head (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(prog_we)
        ,.prog_din(prog_din)
        ,.prog_dout(_i_scanchain_head__prog_dout)
        ,.prog_we_o(_i_scanchain_head__prog_we_o)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i0_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_cluster_i7__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i0_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i0_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i0_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i0_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i0_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i0_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i0_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i0_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i0_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i0_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i0_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i1_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i0_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i1_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i1_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i1_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i1_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i1_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i1_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i1_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i1_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i1_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i1_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i1_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i2_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i1_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i2_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i2_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i2_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i2_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i2_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i2_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i2_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i2_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i2_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i2_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i2_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i3_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i2_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i3_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i3_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i3_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i3_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i3_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i3_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i3_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i3_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i3_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i3_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i3_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i4_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i3_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i4_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i4_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i4_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i4_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i4_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i4_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i4_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i4_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i4_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i4_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i4_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i5_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i4_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i5_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i5_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i5_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i5_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i5_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i5_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i5_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i5_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i5_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i5_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i5_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i6_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i5_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i6_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i6_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i6_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i6_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i6_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i6_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i6_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i6_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i6_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i6_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i6_i_3__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i7_i_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i6_i_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i7_i_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i7_i_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i7_i_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i7_i_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_1__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i7_i_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i7_i_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i7_i_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cluster_i7_i_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i7_i_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cluster_i7_i_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cluster_i7_i_3__prog_data)
        );
    scanchain_delim i_scanchain_tail (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cluster_i7_i_3__prog_dout)
        ,.prog_dout(_i_scanchain_tail__prog_dout)
        ,.prog_we_o(_i_scanchain_tail__prog_we_o)
        );
        
    assign out = {_cluster_i7__o,
        _cluster_i6__o,
        _cluster_i5__o,
        _cluster_i4__o,
        _cluster_i3__o,
        _cluster_i2__o,
        _cluster_i1__o,
        _cluster_i0__o};
    assign prog_dout = _i_scanchain_tail__prog_dout;
    assign prog_we_o = _i_scanchain_tail__prog_we_o;

endmodule
// Automatically generated by PRGA's RTL generator
module cbox_tile_clb_e0 (
    input wire [7:0] bp_x0y0i0_out
    , output wire [11:0] cu_x0y0n_L1
    , output wire [11:0] cu_x0y0s_L1
    , input wire [0:0] prog_clk
    , input wire [0:0] prog_rst
    , input wire [0:0] prog_done
    , input wire [0:0] prog_we
    , input wire [0:0] prog_din
    , output wire [0:0] prog_dout
    , output wire [0:0] prog_we_o
    );
    
        
    wire [0:0] _i_sw_cu_x0y0n_L1_0__o;
    wire [0:0] _i_sw_cu_x0y0n_L1_2__o;
    wire [0:0] _i_sw_cu_x0y0n_L1_7__o;
    wire [0:0] _i_sw_cu_x0y0n_L1_8__o;
    wire [0:0] _i_sw_cu_x0y0s_L1_0__o;
    wire [0:0] _i_sw_cu_x0y0s_L1_2__o;
    wire [0:0] _i_sw_cu_x0y0s_L1_7__o;
    wire [0:0] _i_sw_cu_x0y0s_L1_8__o;
    wire [0:0] _i_buf_prog_rst_l0__Q;
    wire [0:0] _i_buf_prog_done_l0__Q;
    wire [0:0] _i_scanchain_head__prog_dout;
    wire [0:0] _i_scanchain_head__prog_we_o;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0n_L1_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0n_L1_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0n_L1_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0n_L1_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0n_L1_7__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0n_L1_7__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0n_L1_8__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0n_L1_8__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0s_L1_0__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0s_L1_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0s_L1_2__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0s_L1_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0s_L1_7__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0s_L1_7__prog_data;
    wire [0:0] _i_prog_data_i_sw_cu_x0y0s_L1_8__prog_dout;
    wire [1:0] _i_prog_data_i_sw_cu_x0y0s_L1_8__prog_data;
    wire [0:0] _i_scanchain_tail__prog_dout;
    wire [0:0] _i_scanchain_tail__prog_we_o;
        
    sw2 i_sw_cu_x0y0n_L1_0 (
        .i({bp_x0y0i0_out[7],
            bp_x0y0i0_out[0]})
        ,.o(_i_sw_cu_x0y0n_L1_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_0__prog_data)
        );
    sw2 i_sw_cu_x0y0n_L1_2 (
        .i({bp_x0y0i0_out[6],
            bp_x0y0i0_out[2]})
        ,.o(_i_sw_cu_x0y0n_L1_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_2__prog_data)
        );
    sw2 i_sw_cu_x0y0n_L1_7 (
        .i(bp_x0y0i0_out[7:6])
        ,.o(_i_sw_cu_x0y0n_L1_7__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_7__prog_data)
        );
    sw2 i_sw_cu_x0y0n_L1_8 (
        .i(bp_x0y0i0_out[5:4])
        ,.o(_i_sw_cu_x0y0n_L1_8__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_8__prog_data)
        );
    sw2 i_sw_cu_x0y0s_L1_0 (
        .i({bp_x0y0i0_out[7],
            bp_x0y0i0_out[0]})
        ,.o(_i_sw_cu_x0y0s_L1_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_0__prog_data)
        );
    sw2 i_sw_cu_x0y0s_L1_2 (
        .i({bp_x0y0i0_out[6],
            bp_x0y0i0_out[2]})
        ,.o(_i_sw_cu_x0y0s_L1_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_2__prog_data)
        );
    sw2 i_sw_cu_x0y0s_L1_7 (
        .i(bp_x0y0i0_out[7:6])
        ,.o(_i_sw_cu_x0y0s_L1_7__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_7__prog_data)
        );
    sw2 i_sw_cu_x0y0s_L1_8 (
        .i(bp_x0y0i0_out[5:4])
        ,.o(_i_sw_cu_x0y0s_L1_8__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_8__prog_data)
        );
    prga_simple_buf i_buf_prog_rst_l0 (
        .C(prog_clk)
        ,.D(prog_rst)
        ,.Q(_i_buf_prog_rst_l0__Q)
        );
    prga_simple_bufr i_buf_prog_done_l0 (
        .C(prog_clk)
        ,.R(_i_buf_prog_rst_l0__Q)
        ,.D(prog_done)
        ,.Q(_i_buf_prog_done_l0__Q)
        );
    scanchain_delim i_scanchain_head (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(prog_we)
        ,.prog_din(prog_din)
        ,.prog_dout(_i_scanchain_head__prog_dout)
        ,.prog_we_o(_i_scanchain_head__prog_we_o)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0n_L1_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_scanchain_head__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0n_L1_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0n_L1_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0n_L1_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0n_L1_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0n_L1_7 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0n_L1_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0n_L1_7__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_7__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0n_L1_8 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0n_L1_7__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0n_L1_8__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0n_L1_8__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0s_L1_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0n_L1_8__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0s_L1_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_0__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0s_L1_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0s_L1_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0s_L1_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_2__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0s_L1_7 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0s_L1_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0s_L1_7__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_7__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_cu_x0y0s_L1_8 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0s_L1_7__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_cu_x0y0s_L1_8__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_cu_x0y0s_L1_8__prog_data)
        );
    scanchain_delim i_scanchain_tail (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_cu_x0y0s_L1_8__prog_dout)
        ,.prog_dout(_i_scanchain_tail__prog_dout)
        ,.prog_we_o(_i_scanchain_tail__prog_we_o)
        );
        
    assign cu_x0y0n_L1 = {bp_x0y0i0_out[1],
        bp_x0y0i0_out[3:2],
        _i_sw_cu_x0y0n_L1_8__o,
        _i_sw_cu_x0y0n_L1_7__o,
        bp_x0y0i0_out[0],
        bp_x0y0i0_out[3],
        bp_x0y0i0_out[1],
        bp_x0y0i0_out[4],
        _i_sw_cu_x0y0n_L1_2__o,
        bp_x0y0i0_out[5],
        _i_sw_cu_x0y0n_L1_0__o};
    assign cu_x0y0s_L1 = {bp_x0y0i0_out[1],
        bp_x0y0i0_out[3:2],
        _i_sw_cu_x0y0s_L1_8__o,
        _i_sw_cu_x0y0s_L1_7__o,
        bp_x0y0i0_out[0],
        bp_x0y0i0_out[3],
        bp_x0y0i0_out[1],
        bp_x0y0i0_out[4],
        _i_sw_cu_x0y0s_L1_2__o,
        bp_x0y0i0_out[5],
        _i_sw_cu_x0y0s_L1_0__o};
    assign prog_dout = _i_scanchain_tail__prog_dout;
    assign prog_we_o = _i_scanchain_tail__prog_we_o;

endmodule
// Automatically generated by PRGA's RTL generator
module cbox_tile_clb_w0 (
    output wire [15:0] bp_x0y0i0_in
    , input wire [11:0] bi_u1y0n_L1
    , input wire [11:0] bi_u1y0s_L1
    , input wire [0:0] prog_clk
    , input wire [0:0] prog_rst
    , input wire [0:0] prog_done
    , input wire [0:0] prog_we
    , input wire [0:0] prog_din
    , output wire [0:0] prog_dout
    , output wire [0:0] prog_we_o
    );
    
        
    wire [0:0] _i_sw_bp_x0y0i0_in_0__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_1__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_2__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_3__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_4__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_5__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_6__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_7__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_8__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_9__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_10__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_11__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_12__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_13__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_14__o;
    wire [0:0] _i_sw_bp_x0y0i0_in_15__o;
    wire [0:0] _i_buf_prog_rst_l0__Q;
    wire [0:0] _i_buf_prog_done_l0__Q;
    wire [0:0] _i_scanchain_head__prog_dout;
    wire [0:0] _i_scanchain_head__prog_we_o;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_0__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_0__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_1__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_1__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_2__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_2__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_3__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_3__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_4__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_4__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_5__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_5__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_6__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_6__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_7__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_7__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_8__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_8__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_9__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_9__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_10__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_10__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_11__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_11__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_12__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_12__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_13__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_13__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_14__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_14__prog_data;
    wire [0:0] _i_prog_data_i_sw_bp_x0y0i0_in_15__prog_dout;
    wire [2:0] _i_prog_data_i_sw_bp_x0y0i0_in_15__prog_data;
    wire [0:0] _i_scanchain_tail__prog_dout;
    wire [0:0] _i_scanchain_tail__prog_we_o;
        
    sw6 i_sw_bp_x0y0i0_in_0 (
        .i({bi_u1y0s_L1[8],
            bi_u1y0n_L1[8],
            bi_u1y0s_L1[4],
            bi_u1y0n_L1[4],
            bi_u1y0s_L1[0],
            bi_u1y0n_L1[0]})
        ,.o(_i_sw_bp_x0y0i0_in_0__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_0__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_1 (
        .i({bi_u1y0s_L1[11],
            bi_u1y0n_L1[11],
            bi_u1y0s_L1[7],
            bi_u1y0n_L1[7],
            bi_u1y0s_L1[3],
            bi_u1y0n_L1[3]})
        ,.o(_i_sw_bp_x0y0i0_in_1__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_1__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_2 (
        .i({bi_u1y0s_L1[10],
            bi_u1y0n_L1[10],
            bi_u1y0s_L1[6],
            bi_u1y0n_L1[6],
            bi_u1y0s_L1[2],
            bi_u1y0n_L1[2]})
        ,.o(_i_sw_bp_x0y0i0_in_2__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_2__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_3 (
        .i({bi_u1y0s_L1[9],
            bi_u1y0n_L1[9],
            bi_u1y0s_L1[5],
            bi_u1y0n_L1[5],
            bi_u1y0s_L1[1],
            bi_u1y0n_L1[1]})
        ,.o(_i_sw_bp_x0y0i0_in_3__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_3__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_4 (
        .i({bi_u1y0s_L1[9],
            bi_u1y0n_L1[9],
            bi_u1y0s_L1[4],
            bi_u1y0n_L1[4],
            bi_u1y0s_L1[1],
            bi_u1y0n_L1[1]})
        ,.o(_i_sw_bp_x0y0i0_in_4__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_4__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_5 (
        .i({bi_u1y0s_L1[7],
            bi_u1y0n_L1[7],
            bi_u1y0s_L1[3],
            bi_u1y0n_L1[3],
            bi_u1y0s_L1[0],
            bi_u1y0n_L1[0]})
        ,.o(_i_sw_bp_x0y0i0_in_5__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_5__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_6 (
        .i({bi_u1y0s_L1[11],
            bi_u1y0n_L1[11],
            bi_u1y0s_L1[8],
            bi_u1y0n_L1[8],
            bi_u1y0s_L1[5],
            bi_u1y0n_L1[5]})
        ,.o(_i_sw_bp_x0y0i0_in_6__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_6__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_7 (
        .i({bi_u1y0s_L1[10],
            bi_u1y0n_L1[10],
            bi_u1y0s_L1[6],
            bi_u1y0n_L1[6],
            bi_u1y0s_L1[2],
            bi_u1y0n_L1[2]})
        ,.o(_i_sw_bp_x0y0i0_in_7__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_7__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_8 (
        .i({bi_u1y0s_L1[10],
            bi_u1y0n_L1[10],
            bi_u1y0s_L1[5],
            bi_u1y0n_L1[5],
            bi_u1y0s_L1[2],
            bi_u1y0n_L1[2]})
        ,.o(_i_sw_bp_x0y0i0_in_8__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_8__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_9 (
        .i({bi_u1y0s_L1[9],
            bi_u1y0n_L1[9],
            bi_u1y0s_L1[4],
            bi_u1y0n_L1[4],
            bi_u1y0s_L1[1],
            bi_u1y0n_L1[1]})
        ,.o(_i_sw_bp_x0y0i0_in_9__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_9__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_10 (
        .i({bi_u1y0s_L1[7],
            bi_u1y0n_L1[7],
            bi_u1y0s_L1[3],
            bi_u1y0n_L1[3],
            bi_u1y0s_L1[0],
            bi_u1y0n_L1[0]})
        ,.o(_i_sw_bp_x0y0i0_in_10__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_10__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_11 (
        .i({bi_u1y0s_L1[11],
            bi_u1y0n_L1[11],
            bi_u1y0s_L1[8],
            bi_u1y0n_L1[8],
            bi_u1y0s_L1[5],
            bi_u1y0n_L1[5]})
        ,.o(_i_sw_bp_x0y0i0_in_11__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_11__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_12 (
        .i({bi_u1y0s_L1[11],
            bi_u1y0n_L1[11],
            bi_u1y0s_L1[6],
            bi_u1y0n_L1[6],
            bi_u1y0s_L1[3],
            bi_u1y0n_L1[3]})
        ,.o(_i_sw_bp_x0y0i0_in_12__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_12__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_13 (
        .i({bi_u1y0s_L1[9],
            bi_u1y0n_L1[9],
            bi_u1y0s_L1[6],
            bi_u1y0n_L1[6],
            bi_u1y0s_L1[1],
            bi_u1y0n_L1[1]})
        ,.o(_i_sw_bp_x0y0i0_in_13__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_13__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_14 (
        .i({bi_u1y0s_L1[4],
            bi_u1y0n_L1[4],
            bi_u1y0s_L1[2],
            bi_u1y0n_L1[2],
            bi_u1y0s_L1[0],
            bi_u1y0n_L1[0]})
        ,.o(_i_sw_bp_x0y0i0_in_14__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_14__prog_data)
        );
    sw6 i_sw_bp_x0y0i0_in_15 (
        .i({bi_u1y0s_L1[10],
            bi_u1y0n_L1[10],
            bi_u1y0s_L1[8],
            bi_u1y0n_L1[8],
            bi_u1y0s_L1[7],
            bi_u1y0n_L1[7]})
        ,.o(_i_sw_bp_x0y0i0_in_15__o)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_15__prog_data)
        );
    prga_simple_buf i_buf_prog_rst_l0 (
        .C(prog_clk)
        ,.D(prog_rst)
        ,.Q(_i_buf_prog_rst_l0__Q)
        );
    prga_simple_bufr i_buf_prog_done_l0 (
        .C(prog_clk)
        ,.R(_i_buf_prog_rst_l0__Q)
        ,.D(prog_done)
        ,.Q(_i_buf_prog_done_l0__Q)
        );
    scanchain_delim i_scanchain_head (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(prog_we)
        ,.prog_din(prog_din)
        ,.prog_dout(_i_scanchain_head__prog_dout)
        ,.prog_we_o(_i_scanchain_head__prog_we_o)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_0 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_scanchain_head__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_0__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_0__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_1 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_0__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_1__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_1__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_2 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_1__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_2__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_2__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_3 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_2__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_3__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_3__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_4 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_3__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_4__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_4__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_5 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_4__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_5__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_5__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_6 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_5__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_6__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_6__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_7 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_6__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_7__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_7__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_8 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_7__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_8__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_8__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_9 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_8__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_9__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_9__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_10 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_9__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_10__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_10__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_11 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_10__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_11__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_11__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_12 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_11__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_12__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_12__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_13 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_12__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_13__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_13__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_14 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_13__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_14__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_14__prog_data)
        );
    scanchain_data_d3 i_prog_data_i_sw_bp_x0y0i0_in_15 (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_14__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_bp_x0y0i0_in_15__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_bp_x0y0i0_in_15__prog_data)
        );
    scanchain_delim i_scanchain_tail (
        .prog_clk(prog_clk)
        ,.prog_rst(_i_buf_prog_rst_l0__Q)
        ,.prog_done(_i_buf_prog_done_l0__Q)
        ,.prog_we(_i_scanchain_head__prog_we_o)
        ,.prog_din(_i_prog_data_i_sw_bp_x0y0i0_in_15__prog_dout)
        ,.prog_dout(_i_scanchain_tail__prog_dout)
        ,.prog_we_o(_i_scanchain_tail__prog_we_o)
        );
        
    assign bp_x0y0i0_in = {_i_sw_bp_x0y0i0_in_15__o,
        _i_sw_bp_x0y0i0_in_14__o,
        _i_sw_bp_x0y0i0_in_13__o,
        _i_sw_bp_x0y0i0_in_12__o,
        _i_sw_bp_x0y0i0_in_11__o,
        _i_sw_bp_x0y0i0_in_10__o,
        _i_sw_bp_x0y0i0_in_9__o,
        _i_sw_bp_x0y0i0_in_8__o,
        _i_sw_bp_x0y0i0_in_7__o,
        _i_sw_bp_x0y0i0_in_6__o,
        _i_sw_bp_x0y0i0_in_5__o,
        _i_sw_bp_x0y0i0_in_4__o,
        _i_sw_bp_x0y0i0_in_3__o,
        _i_sw_bp_x0y0i0_in_2__o,
        _i_sw_bp_x0y0i0_in_1__o,
        _i_sw_bp_x0y0i0_in_0__o};
    assign prog_dout = _i_scanchain_tail__prog_dout;
    assign prog_we_o = _i_scanchain_tail__prog_we_o;

endmodule
module slice (
    input wire [0:0] clk
    , input wire [3:0] i
    , output wire [0:0] o
    , input wire [0:0] prog_clk
    , input wire [0:0] prog_rst
    , input wire [0:0] prog_done
    , input wire [0:0] prog_we
    , input wire [0:0] prog_din
    , output wire [0:0] prog_dout
    );
    
        
    wire [0:0] _lut__out;
    wire [0:0] _ff__Q;
    wire [0:0] _i_sw_o__o;
    wire [0:0] _i_prog_data_lut__prog_dout;
    wire [16:0] _i_prog_data_lut__prog_data;
    wire [0:0] _i_prog_data_ff__prog_dout;
    wire [0:0] _i_prog_data_ff__prog_data;
    wire [0:0] _i_prog_data_i_sw_o__prog_dout;
    wire [1:0] _i_prog_data_i_sw_o__prog_data;
        
    lut4 lut (
        .in(i)
        ,.out(_lut__out)
        ,.prog_done(prog_done)
        ,.prog_data(_i_prog_data_lut__prog_data)
        );
    flipflop ff (
        .clk(clk)
        ,.D(_lut__out)
        ,.Q(_ff__Q)
        ,.prog_done(prog_done)
        ,.prog_data(_i_prog_data_ff__prog_data)
        );
    sw2 i_sw_o (
        .i({_ff__Q,
            _lut__out})
        ,.o(_i_sw_o__o)
        ,.prog_done(prog_done)
        ,.prog_data(_i_prog_data_i_sw_o__prog_data)
        );
    scanchain_data_d17 i_prog_data_lut (
        .prog_clk(prog_clk)
        ,.prog_rst(prog_rst)
        ,.prog_done(prog_done)
        ,.prog_we(prog_we)
        ,.prog_din(prog_din)
        ,.prog_dout(_i_prog_data_lut__prog_dout)
        ,.prog_data(_i_prog_data_lut__prog_data)
        );
    scanchain_data_d1 i_prog_data_ff (
        .prog_clk(prog_clk)
        ,.prog_rst(prog_rst)
        ,.prog_done(prog_done)
        ,.prog_we(prog_we)
        ,.prog_din(_i_prog_data_lut__prog_dout)
        ,.prog_dout(_i_prog_data_ff__prog_dout)
        ,.prog_data(_i_prog_data_ff__prog_data)
        );
    scanchain_data_d2 i_prog_data_i_sw_o (
        .prog_clk(prog_clk)
        ,.prog_rst(prog_rst)
        ,.prog_done(prog_done)
        ,.prog_we(prog_we)
        ,.prog_din(_i_prog_data_ff__prog_dout)
        ,.prog_dout(_i_prog_data_i_sw_o__prog_dout)
        ,.prog_data(_i_prog_data_i_sw_o__prog_data)
        );
        
    assign o = _i_sw_o__o;
    assign prog_dout = _i_prog_data_i_sw_o__prog_dout;

endmodule
module sw6 (
    input wire [5:0] i
    , output reg [0:0] o

    , input wire [0:0] prog_done
    , input wire [2:0] prog_data
    );

    always @* begin
        if (~prog_done) begin
            o = 1'b0;
        end else begin
            o = 1'b0;   // if ``prog_data == 0`` or ``prog_data`` out of bound, output 0
            case (prog_data)
                3'd1: o = i[0];
                3'd2: o = i[1];
                3'd3: o = i[2];
                3'd4: o = i[3];
                3'd5: o = i[4];
                3'd6: o = i[5];
            endcase
        end
    end

endmodule// Automatically generated by PRGA's RTL generator
module lut4 (
    input wire [3:0] in
    , output reg [0:0] out

    , input wire [0:0] prog_done
    , input wire [16:0] prog_data
        // prog_data[ 0 +: 15]: LUT content
        // prog_data[16]: LUT enabled (not disabled)
    );

    localparam  IDX_LUT_ENABLE = 16;

    always @* begin
        if (~prog_done || ~prog_data[IDX_LUT_ENABLE]) begin
            out = 1'b0;
        end else begin
            case (in)
                4'd0: out = prog_data[0];
                4'd1: out = prog_data[1];
                4'd2: out = prog_data[2];
                4'd3: out = prog_data[3];
                4'd4: out = prog_data[4];
                4'd5: out = prog_data[5];
                4'd6: out = prog_data[6];
                4'd7: out = prog_data[7];
                4'd8: out = prog_data[8];
                4'd9: out = prog_data[9];
                4'd10: out = prog_data[10];
                4'd11: out = prog_data[11];
                4'd12: out = prog_data[12];
                4'd13: out = prog_data[13];
                4'd14: out = prog_data[14];
                4'd15: out = prog_data[15];
            endcase
        end
    end

endmodule// Automatically generated by PRGA's RTL generator
module flipflop (
    input wire [0:0] clk
    , input wire [0:0] D
    , output reg [0:0] Q

    , input wire [0:0] prog_done    // programming finished
    , input wire [0:0] prog_data    // mode: enabled (not disabled)
    );

    always @(posedge clk) begin
        if (~prog_done || ~prog_data) begin
            Q <= 1'b0;
        end else begin
            Q <= D;
        end
    end

endmodule// Automatically generated by PRGA's RTL generator
module scanchain_data_d17 (
    input wire [0:0] prog_clk
    , input wire [0:0] prog_rst
    , input wire [0:0] prog_done

    , input wire [0:0] prog_we
    , input wire [1 - 1:0] prog_din

    , output reg [17 - 1:0] prog_data
    , output wire [1 - 1:0] prog_dout
    );

    localparam CHAIN_BITCOUNT = 17;
    localparam CHAIN_WIDTH = 1;

    wire [CHAIN_BITCOUNT + CHAIN_WIDTH - 1:0] prog_data_next;
    assign prog_data_next = {prog_data, prog_din};

    always @(posedge prog_clk) begin
        if (prog_rst) begin
            prog_data <= {CHAIN_BITCOUNT{1'b0}};
        end else if (~prog_done && prog_we) begin
            prog_data <= prog_data_next[0 +: CHAIN_BITCOUNT];
        end
    end

    assign prog_dout = prog_data_next[CHAIN_BITCOUNT +: CHAIN_WIDTH];

endmodule// Automatically generated by PRGA's RTL generator
