diff --git a/verilog/dv/prga/Makefile b/verilog/dv/prga/Makefile
new file mode 100644
index 0000000..3fd0b56
--- /dev/null
+++ b/verilog/dv/prga/Makefile
@@ -0,0 +1,32 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+
+ 
+PWDD := $(shell pwd)
+BLOCKS := $(shell basename $(PWDD))
+
+# ---- Include Partitioned Makefiles ----
+
+CONFIG = caravel_user_project
+
+
+include $(MCW_ROOT)/verilog/dv/make/env.makefile
+include $(MCW_ROOT)/verilog/dv/make/var.makefile
+include $(MCW_ROOT)/verilog/dv/make/cpu.makefile
+include $(MCW_ROOT)/verilog/dv/make/sim.makefile
+
+
diff --git a/verilog/dv/prga/prga.c b/verilog/dv/prga/prga.c
new file mode 100644
index 0000000..c316f0d
--- /dev/null
+++ b/verilog/dv/prga/prga.c
@@ -0,0 +1,103 @@
+/*
+ * SPDX-FileCopyrightText: 2020 Efabless Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+// This include is relative to $CARAVEL_PATH (see Makefile)
+#include <defs.h>
+#include <stub.c>
+
+/*
+	IO Test:
+		- Configures MPRJ lower 8-IO pins as outputs
+		- Observes counter value through the MPRJ lower 8 IO pins (in the testbench)
+*/
+
+void main()
+{
+	/* 
+	IO Control Registers
+	| DM     | VTRIP | SLOW  | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+	| 3-bits | 1-bit | 1-bit | 1-bit  | 1-bit  | 1-bit | 1-bit   | 1-bit   | 1-bit | 1-bit | 1-bit   |
+
+	Output: 0000_0110_0000_1110  (0x1808) = GPIO_MODE_USER_STD_OUTPUT
+	| DM     | VTRIP | SLOW  | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+	| 110    | 0     | 0     | 0      | 0      | 0     | 0       | 1       | 0     | 0     | 0       |
+	
+	 
+	Input: 0000_0001_0000_1111 (0x0402) = GPIO_MODE_USER_STD_INPUT_NOPULL
+	| DM     | VTRIP | SLOW  | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+	| 001    | 0     | 0     | 0      | 0      | 0     | 0       | 0       | 0     | 1     | 0       |
+
+	*/
+
+	/* Set up the housekeeping SPI to be connected internally so	*/
+	/* that external pin changes don't affect it.			*/
+
+	// reg_spi_enable = 1;
+	// reg_spimaster_cs = 0x10001;
+	// reg_spimaster_control = 0x0801;
+
+	// reg_spimaster_control = 0xa002;	// Enable, prescaler = 2,
+                                        // connect to housekeeping SPI
+
+	// Connect the housekeeping SPI to the SPI master
+	// so that the CSB line is not left floating.  This allows
+	// all of the GPIO pins to be used for user functions.
+
+	// Configure lower 8-IOs as user output
+	// Observe counter value in the testbench
+	//reg_mprj_io_0 =  GPIO_MODE_USER_STD_OUTPUT;
+	//reg_mprj_io_1 =  GPIO_MODE_USER_STD_OUTPUT;
+	//reg_mprj_io_2 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_3 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_4 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_5 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_6 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_7 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_8 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_9 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_10 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_11 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_12 =  GPIO_MODE_USER_STD_OUTPUT;        
+	reg_mprj_io_13 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_14 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_15 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_16 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_17 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_18 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_19 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_20 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_21 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_22 =  GPIO_MODE_USER_STD_OUTPUT;        
+	reg_mprj_io_23 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_24 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_25 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_26 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_27 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_28 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_29 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_30 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_31 =  GPIO_MODE_USER_STD_OUTPUT;
+	reg_mprj_io_32 =  GPIO_MODE_USER_STD_OUTPUT;        
+	reg_mprj_io_33 =  GPIO_MODE_USER_STD_OUTPUT;
+
+
+        
+	/* Apply configuration */
+	reg_mprj_xfer = 1;
+	while (reg_mprj_xfer == 1);
+}
+
diff --git a/verilog/dv/prga/prga_tb.v b/verilog/dv/prga/prga_tb.v
new file mode 100644
index 0000000..ca03e76
--- /dev/null
+++ b/verilog/dv/prga/prga_tb.v
@@ -0,0 +1,171 @@
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+`default_nettype none
+
+`timescale 1 ns / 1 ps
+
+module prga_tb;
+	reg clock;
+	reg RSTB;
+	reg CSB;
+	reg power1, power2;
+	reg power3, power4;
+
+	wire gpio;
+	wire [37:0] mprj_io;
+	wire [7:0] mprj_io_0;
+
+	assign mprj_io_0 = mprj_io[7:0];
+	// assign mprj_io_0 = {mprj_io[8:4],mprj_io[2:0]};
+
+	assign mprj_io[3] = (CSB == 1'b1) ? 1'b1 : 1'bz;
+	// assign mprj_io[3] = 1'b1;
+
+	// External clock is used by default.  Make this artificially fast for the
+	// simulation.  Normally this would be a slow clock and the digital PLL
+	// would be the fast clock.
+
+	always #12.5 clock <= (clock === 1'b0);
+
+	initial begin
+		clock = 0;
+	end
+
+	initial begin
+		$dumpfile("prga.vcd");
+		$dumpvars(0, prga_tb);
+
+		// Repeat cycles of 1000 clock edges as needed to complete testbench
+		repeat (25) begin
+			repeat (1000) @(posedge clock);
+			// $display("+1000 cycles");
+		end
+		$display("%c[1;31m",27);
+		`ifdef GL
+			$display ("Monitor: Timeout, Test Mega-Project IO Ports (GL) Failed");
+		`else
+			$display ("Monitor: Timeout, Test Mega-Project IO Ports (RTL) Failed");
+		`endif
+		$display("%c[0m",27);
+		$finish;
+	end
+
+	initial begin
+	    // Observe Output pins [7:0]
+		wait(mprj_io_0 == 8'h01);
+		wait(mprj_io_0 == 8'h02);
+		wait(mprj_io_0 == 8'h03);
+		wait(mprj_io_0 == 8'h04);
+		wait(mprj_io_0 == 8'h05);
+		wait(mprj_io_0 == 8'h06);
+		wait(mprj_io_0 == 8'h07);
+		wait(mprj_io_0 == 8'h08);
+		wait(mprj_io_0 == 8'h09);
+		wait(mprj_io_0 == 8'h0A);   
+		wait(mprj_io_0 == 8'hFF);
+		wait(mprj_io_0 == 8'h00);
+		
+		`ifdef GL
+	    	$display("Monitor: Test 1 Mega-Project IO (GL) Passed");
+		`else
+		    $display("Monitor: Test 1 Mega-Project IO (RTL) Passed");
+		`endif
+	    $finish;
+	end
+
+	initial begin
+		RSTB <= 1'b0;
+		CSB  <= 1'b1;		// Force CSB high
+		#2000;
+		RSTB <= 1'b1;	    	// Release reset
+		#300000;
+		CSB = 1'b0;		// CSB can be released
+	end
+
+	initial begin		// Power-up sequence
+		power1 <= 1'b0;
+		power2 <= 1'b0;
+		power3 <= 1'b0;
+		power4 <= 1'b0;
+		#100;
+		power1 <= 1'b1;
+		#100;
+		power2 <= 1'b1;
+		#100;
+		power3 <= 1'b1;
+		#100;
+		power4 <= 1'b1;
+	end
+
+	always @(mprj_io) begin
+		#1 $display("MPRJ-IO state = %b ", mprj_io[7:0]);
+	end
+
+	wire flash_csb;
+	wire flash_clk;
+	wire flash_io0;
+	wire flash_io1;
+
+	wire VDD3V3;
+	wire VDD1V8;
+	wire VSS;
+	
+	assign VDD3V3 = power1;
+	assign VDD1V8 = power2;
+	assign VSS = 1'b0;
+
+	caravel uut (
+		.vddio	  (VDD3V3),
+		.vddio_2  (VDD3V3),
+		.vssio	  (VSS),
+		.vssio_2  (VSS),
+		.vdda	  (VDD3V3),
+		.vssa	  (VSS),
+		.vccd	  (VDD1V8),
+		.vssd	  (VSS),
+		.vdda1    (VDD3V3),
+		.vdda1_2  (VDD3V3),
+		.vdda2    (VDD3V3),
+		.vssa1	  (VSS),
+		.vssa1_2  (VSS),
+		.vssa2	  (VSS),
+		.vccd1	  (VDD1V8),
+		.vccd2	  (VDD1V8),
+		.vssd1	  (VSS),
+		.vssd2	  (VSS),
+		.clock    (clock),
+		.gpio     (gpio),
+		.mprj_io  (mprj_io),
+		.flash_csb(flash_csb),
+		.flash_clk(flash_clk),
+		.flash_io0(flash_io0),
+		.flash_io1(flash_io1),
+		.resetb	  (RSTB)
+	);
+
+	spiflash #(
+		.FILENAME("prga.hex")
+	) spiflash (
+		.csb(flash_csb),
+		.clk(flash_clk),
+		.io0(flash_io0),
+		.io1(flash_io1),
+		.io2(),			// not used
+		.io3()			// not used
+	);
+
+endmodule
+`default_nettype wire
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project
index 31ab09b..29e120f 100644
--- a/verilog/includes/includes.rtl.caravel_user_project
+++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -1,5 +1,4 @@
 # Caravel user project includes
 -v $(USER_PROJECT_VERILOG)/rtl/user_project_wrapper.v	     
--v $(USER_PROJECT_VERILOG)/rtl/user_proj_example.v
-
- 
\ No newline at end of file
+-v $(USER_PROJECT_VERILOG)/rtl/top.pickled.v
+-v $(USER_PROJECT_VERILOG)/rtl/tile_clb.pickled.reduced.v
diff --git a/verilog/rtl/tile_clb.pickled.reduced.v b/verilog/rtl/tile_clb.pickled.reduced.v
new file mode 100644
index 0000000..547d788
--- /dev/null
+++ b/verilog/rtl/tile_clb.pickled.reduced.v
@@ -0,0 +1,1813 @@
+// 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
