primitive_config -> standalone_test
diff --git a/verilog/dv/caravel/fpga_250/primitive_config/fpga250_tb.v b/verilog/dv/caravel/fpga_250/primitive_config/fpga250_tb.v
deleted file mode 100644
index 3279887..0000000
--- a/verilog/dv/caravel/fpga_250/primitive_config/fpga250_tb.v
+++ /dev/null
@@ -1,304 +0,0 @@
-// This is an adaptation of [fabric_team]/testbench/fpga_test_harness.v for
-// the user_project_wrapper in Caravel.
-
-`timescale 1ns/1ns
-
-//`include "consts.vh"
-//`define DEBUG_CONFIG
-
-module fpga250_tb();
-
-  reg clk, rst;
-
-  localparam FABRIC_CLOCK_PERIOD = 10; // 100 MHz
-
-  initial clk = 0;
-  always #(FABRIC_CLOCK_PERIOD/2) clk = ~clk;
-
-  wire 
-
-  user_project_wrapper #(
-    .BITS(32)
-  ) dut (
-    .wb_clk_i(clk),
-    .wb_rst_i(rst),
-
-    // Wishbone signals
-    .wbs_stb_i(wbs_stb_i),   // input
-    .wbs_cyc_i(wbs_cyc_i),   // input
-    .wbs_we_i(wbs_we_i),     // input
-    // Write mask
-    .wbs_sel_i(wbs_sel_i),   // input
-    .wbs_dat_i(wbs_data_i),  // input
-    .wbs_adr_i(wbs_addr_i),  // input
-    .wbs_ack_o(wbs_ack_o),   // output
-    .wbs_data_o(wbs_data_o)  // output
-
-    .io_in,
-    .io_out(),
-    .io_oeb(),
-    .la_data_in(),
-    .la_data_out(),
-    .la_oen(),
-    .analog_io(),
-    .user_clock2()
-  );
-
-  reg [31:0] address = 32'h3000_0000;
-  reg [31:0] write_data = 0;
-  reg transact = 0;
-  reg we = 0;
-  // FIXME: assume the fabric has 4 columns for now
-  reg [3:0] select = 4'b1111;
-
-  wire ack;
-  wire [31:0] read_data;
-
-  assign wbs_stb_i  = transact;
-  assign wbs_cyc_i  = transact;
-  assign wbs_we_i   = we;
-  assign wbs_sel_i  = select;
-  assign wbs_data_i = write_data;
-  assign wbs_addr_i = address;
-  assign ack        = wbs_ack_o;
-  assign read_data  = wbs_data_o;
-
-  reg fabric_reset;
-  assign gpio_north[9] = fabric_reset;
-
-  // MSB<[bitstream(0,0), bitstream(1,0), ..., bitstream(N-1,0)],
-  //     [bitstream(0,1), bitstream(1,1), ..., bitstream(N-1,1)],
-  //     ...
-  //     [bitstream(0,N-1), bitstream(1,N-1), ..., bitstream(N-1,N-1)]>LSB
-
-  localparam COL_BITS  = `CLB_TILE_BITSTREAM_SIZE * MY;
-  localparam FPGA_BITS = COL_BITS * MX;
-  reg [FPGA_BITS-1:0] bitstream[1];
-  reg [8*MX*MY-1:0]   gold_sync_output[1];
-  reg [8*MX*MY-1:0]   gold_comb_output[1];
-
-  reg [1023:0] load_config = 0;
-  reg [1023:0] load_sync_output = 0;
-  reg [1023:0] load_comb_output = 0;
-
-  initial begin
-    $value$plusargs("load_config=%s",      load_config);
-    $value$plusargs("load_sync_output=%s", load_sync_output);
-    $value$plusargs("load_comb_output=%s", load_comb_output);
-
-    #1 $readmemb(load_config, bitstream);
-    #1 $readmemb(load_sync_output, gold_sync_output);
-    #1 $readmemb(load_comb_output, gold_comb_output);
-  end
-
-  wire [COL_BITS-1:0] col_bitstream [MX-1:0];
-
-  genvar k, x, y;
-  generate
-    for (k = 0; k < MX; k = k + 1) begin
-      assign col_bitstream[MX-1-k] = bitstream[0][COL_BITS * (k + 1) - 1: COL_BITS * k];
-    end
-  endgenerate
-
-  wire [8*MX*MY-1:0] fabric_sync_output;
-  wire [8*MX*MY-1:0] fabric_comb_output;
-
-  // Extract the current registers' states from the Fabric
-  // They will be compared against the golden registers' states given by a test
-  generate
-    for (x = 0; x < MX; x = x + 1) begin
-      for (y = 0; y < MY; y = y + 1) begin
-        assign fabric_sync_output[x * MY * 8 + y * 8 +: 8] = dut.fpga.X[MX-1-x].Y[MY-1-y].clb.slice.sync_output;
-        assign fabric_comb_output[x * MY * 8 + y * 8 +: 8] = dut.fpga.X[MX-1-x].Y[MY-1-y].clb.slice.comb_output;
-      end
-    end
-  endgenerate
-
-  reg debug_config = 0;
-  reg failed_tests = 0;
-
-  localparam NUM_BYTES = COL_BITS / 8;
-  localparam REM_BITS  = COL_BITS - NUM_BYTES * 8;
-  integer i, j;
-  initial begin
-    $dumpfile("fpga_test_harness.vcd");
-    $dumpvars;
-
-    rst = 1'b1;
-    fabric_reset= 1'b1;
-    repeat (10) @(posedge clk);
-
-    @(negedge clk);
-    rst = 1'b0;
-    fabric_reset = 1'b0;
-
-    address <= 32'h3000_0001;
-    write_data <= {8'hFF, 8'hFF, 8'hFF, 8'hFF};
-    we <= 1;
-    transact <= 1;
-
-    @(posedge ack);
-    transact <= 0;
-    we <= 0;
-    @(negedge ack);
-
-    repeat(5) @(posedge clk);
-
-    for (i = 0; i < NUM_BYTES; i = i + 1) begin
-      // sending the bits
-      address <= 32'h3000_0002;
-      for (j = 0; j < MX; j = j + 1) begin
-        write_data[j * 8 +: 8] <= col_bitstream[j][i * 8 +: 8];
-      end
-      we <= 1;
-      transact <= 1;
-
-      @(posedge ack);
-      transact <= 0;
-      we <= 0;
-      @(negedge ack);
-    repeat(5) @(posedge clk);
-
-    end
-
-    // Send the remaining bits
-    address <= 32'h3000_0001;
-    write_data <= {8'hFF, 8'hFF, 8'hFF, 8'hFF};
-    for (i = 0; i < MX; i = i + 1) begin
-      write_data[i * 8 +: 8] <= REM_BITS;
-    end
-
-    we <= 1;
-    transact <= 1;
-
-    @(posedge ack);
-    transact <= 0;
-    we <= 0;
-    @(negedge ack);
-
-    repeat(5) @(posedge clk);
-
-    // sending the bits
-    address <= 32'h3000_0002;
-    for (i = 0; i < MX; i = i + 1) begin
-      write_data[i * 8 +: 8] <= col_bitstream[i][COL_BITS - 1 : NUM_BYTES * 8];
-    end
-    we <= 1;
-    transact <= 1;
-
-    @(posedge ack);
-    transact <= 0;
-    we <= 0;
-    @(negedge ack);
-
-    repeat(5) @(posedge clk);
-
-    $display("Configuration done!");
-
-    repeat (100) @(posedge clk);
-
-    $display("Number of bits per column: %d\n", COL_BITS);
-    $display("Bitstream size: %d\n", FPGA_BITS);
-
-`ifdef DEBUG_CONFIG
-    @(negedge clk);
-    debug_config = 1'b1;
-    @(negedge clk);
-    debug_config = 1'b0;
-`endif
-
-    $display("GPIO_NORTH=%b", gpio_north);
-    $display("GPIO_SOUTH=%b", gpio_south);
-    $display("GPIO_EAST=%b", gpio_east);
-    $display("GPIO_WEST=%b", gpio_west);
-
-    $display("fabric_sync_output = %b", fabric_sync_output);
-    $display("gold_sync_output   = %b", gold_sync_output[0]);
-
-    $display("fabric_comb_output = %b", fabric_comb_output);
-    $display("gold_comb_output   = %b", gold_comb_output[0]);
-
-    if (fabric_sync_output === gold_sync_output[0])
-      $display("[sync test] PASSED!");
-    else begin
-      $display("[sync test] FAILED: sync_output mismatch!");
-      failed_tests = failed_tests + 1;
-    end
-
-    if (fabric_comb_output === gold_comb_output[0])
-      $display("[comb test] PASSED!");
-    else begin
-      $display("[comb test] FAILED: comb_output mismatch!");
-      failed_tests = failed_tests + 1;
-    end
-
-    #100;
-    $display("Fabric test done! Num tests failed: %d", failed_tests);
-    $finish;
-  end
-
-`ifdef DEBUG_CONFIG
-  // Print the config states of all the tiles for debuggging
-  generate
-    for (x = 0; x < 2; x = x + 1) begin
-      for (y = 0; y < 1; y = y + 1) begin
-        always @(posedge clk) begin
-          if (debug_config === 1'b1) begin
-
-            $display("X[%d]Y[%d] S44_0 config: split=%b, LUT_1=%h, LUT_0=%h",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[0].lut.split,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[0].lut.second_lut.latches0.mem,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[0].lut.first_lut.latches0.mem,
-            );
-
-            $display("X[%d]Y[%d] S44_1 config: split=%b, LUT_1=%h, LUT_0=%h",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[1].lut.split,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[1].lut.second_lut.latches0.mem,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[1].lut.first_lut.latches0.mem,
-            );
-
-            $display("X[%d]Y[%d] S44_2 config: split=%b, LUT_1=%h, LUT_0=%h",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[2].lut.split,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[2].lut.second_lut.latches0.mem,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[2].lut.first_lut.latches0.mem,
-            );
-
-            $display("X[%d]Y[%d] S44_3 config: split=%b, LUT_1=%h, LUT_0=%h",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[3].lut.split,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[3].lut.second_lut.latches0.mem,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.genblk1[3].lut.first_lut.latches0.mem,
-            );
-
-            $display("X[%d]Y[%d] clb_inter_lut_mux_config = %b",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.muxes.config_state);
-            $display("X[%d]Y[%d] clb_config_use_cc = %b",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.use_cc);
-            $display("X[%d]Y[%d] clb_regs_config_in = %b",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.slice.sliceluroni.sync_out);
-
-            $display("X[%d]Y[%d] cb_east_config_bits = %b",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.cb_east.inst.connectaroni.c);
-
-            $display("X[%d]Y[%d] cb_north_config_bits = %b",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.cb_north.inst.connectaroni.c);
-
-            $display("X[%d]Y[%d] sb_config_bits = %b",
-              x, y,
-              dut.fpga.X[x].Y[y].clb.sb.switcharoni.c);
-          end
-        end
-      end
-    end
-  endgenerate
-`endif
-
-endmodule
diff --git a/verilog/dv/caravel/fpga_250/standalone_test/bitstream.txt b/verilog/dv/caravel/fpga_250/standalone_test/bitstream.txt
new file mode 100644
index 0000000..7a5f7dd
--- /dev/null
+++ b/verilog/dv/caravel/fpga_250/standalone_test/bitstream.txt
@@ -0,0 +1 @@
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000010000000000000000100000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000001100000000000000010000000000000001000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/verilog/dv/caravel/fpga_250/standalone_test/comb_output.txt b/verilog/dv/caravel/fpga_250/standalone_test/comb_output.txt
new file mode 100644
index 0000000..c17f38b
--- /dev/null
+++ b/verilog/dv/caravel/fpga_250/standalone_test/comb_output.txt
@@ -0,0 +1 @@
+xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx11xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
\ No newline at end of file
diff --git a/verilog/dv/caravel/fpga_250/standalone_test/fpga_consts.vh b/verilog/dv/caravel/fpga_250/standalone_test/fpga_consts.vh
new file mode 100644
index 0000000..4523ef2
--- /dev/null
+++ b/verilog/dv/caravel/fpga_250/standalone_test/fpga_consts.vh
@@ -0,0 +1,187 @@
+
+// CLB Tile: {CLB, CB, CB, SB, CFG}
+//
+// Example: 2x2 array of CLB Tiles
+// ______________  ______________
+// | CB1 -- SW  |  | CB1 -- SW  |
+// | CLB -- CB0 |  | CLB -- CB0 |
+// |    CFG     |  |    CFG     |
+// |____________|  |____________|
+// ______________  ______________
+// | CB1 --  SW |  | CB1 --  SW |
+// | CLB -- CB0 |  | CLB -- CB0 |
+// |    CFG     |  |    CFG     |
+// |____________|  |____________|
+//
+
+// Array dimension
+`define NUM_ROWS 8
+`define NUM_COLS 7
+
+// LUT parameters
+`define S_XX_BASE 4
+`define NUM_LUTS 4
+
+// Interconnect parameters
+`define WS 4
+`define WD 8
+`define WG 0
+`define CLBOS 4
+`define CLBOD 4
+`define CLBX 1
+
+
+`define NUM_CLB_TILES (`NUM_ROWS * `NUM_COLS)
+`define LUT_CFG_SIZE  (2 * (2 ** `S_XX_BASE) + 1)
+`define MUX_LVLS      $clog2(`NUM_LUTS)
+
+// 1x S44 LUT inputs, Inter-LUT MUX inputs, reg_ce
+`define NUM_CLB_INS  10 // (2 * `S_XX_BASE + `MUX_LVLS + 1)
+
+// 2x Comb. outputs, Sync. outputs
+`define NUM_CLB_OUTS 5 // (2 * 2)
+
+`define SWITCH_PER_IN  (`WS + `WD + `WG + `CLBX * `NUM_CLB_OUTS)
+`define SWITCH_PER_OUT (`CLBOS + `CLBOD)
+
+`define CLB_COMB_CFG_SIZE      (`LUT_CFG_SIZE * `NUM_LUTS + `MUX_LVLS + 1)
+`define CLB_MEM_CFG_SIZE       (2 * `NUM_LUTS)
+`define CB_CFG_SIZE            (2 * (`NUM_CLB_INS * `SWITCH_PER_IN + `NUM_CLB_OUTS * `SWITCH_PER_OUT))
+
+`define SB_CFG_SIZE            (`WS + `WD / 2) * 6
+`define CLB_TILE_COMB_CFG_SIZE (`CLB_COMB_CFG_SIZE + `SB_CFG_SIZE + `CB_CFG_SIZE * 2)
+`define CLB_TILE_MEM_CFG_SIZE  (`CLB_MEM_CFG_SIZE)
+
+`define CLB_TILE_BITSTREAM_SIZE (`CLB_TILE_COMB_CFG_SIZE + `CLB_TILE_MEM_CFG_SIZE + 2 + 2 + 2 + 2)
+
+// Define the sequence of configuration bits for a tile
+`define CFG_MEM_START_BIT      0
+`define CFG_MEM_END_BIT        `CFG_MEM_START_BIT + `CLB_MEM_CFG_SIZE - 1
+`define CFG_USE_CC_START_BIT   0
+`define CFG_USE_CC_END_BIT     `CFG_USE_CC_START_BIT + 1 - 1
+`define CFG_IXLUTMUX_START_BIT `CFG_USE_CC_END_BIT + 1
+`define CFG_IXLUTMUX_END_BIT   `CFG_IXLUTMUX_START_BIT + `MUX_LVLS - 1
+`define CFG_LUTS_START_BIT     `CFG_IXLUTMUX_END_BIT + 1
+`define CFG_LUTS_END_BIT       `CFG_LUTS_START_BIT + `LUT_CFG_SIZE * `NUM_LUTS - 1
+`define CFG_CB0_START_BIT      `CFG_LUTS_END_BIT + 1
+`define CFG_CB0_END_BIT        `CFG_CB0_START_BIT + `CB_CFG_SIZE - 1
+`define CFG_CB1_START_BIT      `CFG_CB0_END_BIT + 1
+`define CFG_CB1_END_BIT        `CFG_CB1_START_BIT + `CB_CFG_SIZE - 1
+`define CFG_SB_START_BIT       `CFG_CB1_END_BIT + 1
+`define CFG_SB_END_BIT         `CFG_SB_START_BIT + `SB_CFG_SIZE - 1
+
+`define CB_OFFSET0 (`NUM_CLB_INS * `SWITCH_PER_IN)
+`define CB_OFFSET1 (`CB_OFFSET0 + `NUM_CLB_OUTS * `SWITCH_PER_OUT)
+`define CB_OFFSET2 (`CB_OFFSET1 + `NUM_CLB_INS * `SWITCH_PER_IN)
+`define SB_OFFSET0 (12 * (`WS / 2))
+
+// Helper functions for switching connectivity
+
+// SINGLE WIRES
+// Connect wire single0[m] of Connection Block to CLB input n (from the same tile)
+`define CB_SINGLE0_TO_CLB0_IN(m, n)  (`SWITCH_PER_IN * n + m)
+// Connect CLB output m to wire single0[n] of Connection Block (from the same tile)
+`define CLB0_OUT_TO_CB_SINGLE0(m, n) (`CB_OFFSET0 + `SWITCH_PER_OUT * m + n)
+// Connect wire single0[m] of Connection Block to CLB input m (from an adjacent tile)
+`define CB_SINGLE0_TO_CLB1_IN(m, n)  (`CB_OFFSET1 + `SWITCH_PER_IN * n + m)
+// Connect CLB output m to wire single0[n] of Connection Block (from an adjacent tile)
+`define CLB1_OUT_TO_CB_SINGLE0(m, n) (`CB_OFFSET2 + `SWITCH_PER_OUT * m + n)
+
+// DOUBLE WIRES
+// Note that with CLBOD = 4, only double[3], double[2], double[1], double[0] wires
+// can be connect to CLB output pins
+// Reference: ix_yukio/src/connection_block.v
+// Connect wire single0[m] of Connection Block to CLB input n (from the same tile)
+`define CB_DOUBLE0_TO_CLB0_IN(m, n)  (`SWITCH_PER_IN * n + `WS + m)
+// Connect CLB output m to wire single0[n] of Connection Block (from the same tile)
+`define CLB0_OUT_TO_CB_DOUBLE0(m, n) (`CB_OFFSET0 + `SWITCH_PER_OUT * m + `CLBOS + n)
+// Connect wire single0[m] of Connection Block to CLB input m (from an adjacent tile)
+`define CB_DOUBLE0_TO_CLB1_IN(m, n)  (`CB_OFFSET1 + `SWITCH_PER_IN * n + `WS + m)
+// Connect CLB output m to wire single0[n] of Connection Block (from an adjacent tile)
+`define CLB1_OUT_TO_CB_DOUBLE0(m, n) (`CB_OFFSET2 + `SWITCH_PER_OUT * m + `CLBOS + n)
+
+// Connect CLB output m (from an adjacent tile) to CLB input n
+`define CLB1_OUT_TO_CLB0_IN(m, n) (`SWITCH_PER_IN * m + `WS + `WD + n)
+// Connect CLB output m to CLB input (from an adjacent tile)
+`define CLB0_OUT_TO_CLB1_IN(m, n) (`CB_OFFSET1 + `SWITCH_PER_IN * m + `WS + `WD + n)
+
+// Indices of Config bits for Switchbox PIPs
+// Reference: ix_yukio/src/switch_box_element_two.v
+//
+// Convention: {Dir1}{Wire1}{Dir2}{Wire2}: enabling the connectivity of
+// wire `Wire1` coming from `Dir1` and wire `Wire2` coming from `Dir2`
+//
+// Wire1 = {0, 1}, Wire2 = {0, 1}, Dir1 = {N, S, E, W}, Dir2 = {N, S, E, W}
+//
+// Note that {Dir1}{Wire1}{Dir2}{Wire2} and {Dir2}{Wire2}{Dir1}{Wire1} are
+// the same (bi-directional)
+//
+// Each wire connects to three different directions => 8 * 3 / 2 = 12 PIPs inside
+// switch_box_element_two (SBE2)
+
+`define NUM_SBE2_PIPS 12
+
+`define SINGLE_N0E0(x) (`NUM_SBE2_PIPS * x + 0)
+`define SINGLE_N0S0(x) (`NUM_SBE2_PIPS * x + 4)
+`define SINGLE_N0W1(x) (`NUM_SBE2_PIPS * x + 11)
+
+`define SINGLE_N1E1(x) (`NUM_SBE2_PIPS * x + 8)
+`define SINGLE_N1S1(x) (`NUM_SBE2_PIPS * x + 6)
+`define SINGLE_N1W0(x) (`NUM_SBE2_PIPS * x + 3)
+
+`define SINGLE_E0W0(x) (`NUM_SBE2_PIPS * x + 7)
+`define SINGLE_E0N0(x) (`NUM_SBE2_PIPS * x + 0)
+`define SINGLE_E0S1(x) (`NUM_SBE2_PIPS * x + 9)
+
+`define SINGLE_E1W1(x) (`NUM_SBE2_PIPS * x + 5)
+`define SINGLE_E1N1(x) (`NUM_SBE2_PIPS * x + 8)
+`define SINGLE_E1S0(x) (`NUM_SBE2_PIPS * x + 1)
+
+`define SINGLE_S0W0(x) (`NUM_SBE2_PIPS * x + 10)
+`define SINGLE_S0N0(x) (`NUM_SBE2_PIPS * x + 4)
+`define SINGLE_S0E1(x) (`NUM_SBE2_PIPS * x + 1)
+
+`define SINGLE_S1W1(x) (`NUM_SBE2_PIPS * x + 2)
+`define SINGLE_S1N1(x) (`NUM_SBE2_PIPS * x + 6)
+`define SINGLE_S1E0(x) (`NUM_SBE2_PIPS * x + 9)
+
+`define SINGLE_W0E0(x) (`NUM_SBE2_PIPS * x + 7)
+`define SINGLE_W0S0(x) (`NUM_SBE2_PIPS * x + 10)
+`define SINGLE_W0N1(x) (`NUM_SBE2_PIPS * x + 3)
+
+`define SINGLE_W1E1(x) (`NUM_SBE2_PIPS * x + 5)
+`define SINGLE_W1S1(x) (`NUM_SBE2_PIPS * x + 2)
+`define SINGLE_W1N0(x) (`NUM_SBE2_PIPS * x + 11)
+
+`define DOUBLE_N0E0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 0)
+`define DOUBLE_N0S0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 4)
+`define DOUBLE_N0W1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 11)
+
+`define DOUBLE_N1E1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 8)
+`define DOUBLE_N1S1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 6)
+`define DOUBLE_N1W0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 3)
+
+`define DOUBLE_E0W0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 7)
+`define DOUBLE_E0N0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 0)
+`define DOUBLE_E0S1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 9)
+
+`define DOUBLE_E1W1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 5)
+`define DOUBLE_E1N1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 8)
+`define DOUBLE_E1S0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 1)
+
+`define DOUBLE_S0W0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 10)
+`define DOUBLE_S0N0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 4)
+`define DOUBLE_S0E1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 1)
+
+`define DOUBLE_S1W1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 2)
+`define DOUBLE_S1N1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 6)
+`define DOUBLE_S1E0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 9)
+
+`define DOUBLE_W0E0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 7)
+`define DOUBLE_W0S0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 10)
+`define DOUBLE_W0N1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 3)
+
+`define DOUBLE_W1E1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 5)
+`define DOUBLE_W1S1(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 2)
+`define DOUBLE_W1N0(x) ((`WS / 2) * `NUM_SBE2_PIPS + `NUM_SBE2_PIPS * x + 11)
+
diff --git a/verilog/dv/caravel/fpga_250/standalone_test/gpio_output.txt b/verilog/dv/caravel/fpga_250/standalone_test/gpio_output.txt
new file mode 100644
index 0000000..33c5a38
--- /dev/null
+++ b/verilog/dv/caravel/fpga_250/standalone_test/gpio_output.txt
@@ -0,0 +1 @@
+0zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
\ No newline at end of file
diff --git a/verilog/dv/caravel/fpga_250/standalone_test/sync_output.txt b/verilog/dv/caravel/fpga_250/standalone_test/sync_output.txt
new file mode 100644
index 0000000..960b8a7
--- /dev/null
+++ b/verilog/dv/caravel/fpga_250/standalone_test/sync_output.txt
@@ -0,0 +1 @@
+0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/verilog/dv/caravel/fpga_250/standalone_test/user_project_wrapper_tb.v b/verilog/dv/caravel/fpga_250/standalone_test/user_project_wrapper_tb.v
new file mode 100644
index 0000000..cf32091
--- /dev/null
+++ b/verilog/dv/caravel/fpga_250/standalone_test/user_project_wrapper_tb.v
@@ -0,0 +1,343 @@
+// This is an adaptation of [fabric_team]/testbench/fpga_test_harness.v for
+// the user_project_wrapper in Caravel.
+
+`timescale 1ns/1ns
+
+`include "defines.v"
+
+`include "libs.ref/sky130_fd_sc_hd/verilog/primitives.v"
+`include "libs.ref/sky130_fd_sc_hd/verilog/sky130_fd_sc_hd.v"
+
+`include "fpga_consts.vh"
+`include "user_project_wrapper.v"
+
+module user_project_wrapper_tb();
+
+  reg clk, rst;
+
+  localparam CLOCK_PERIOD = 12.5;
+
+  initial clk = 0;
+  always #(CLOCK_PERIOD/2) clk = ~clk;
+
+  // Array is 8 rows x 7 columns of CLB tiles
+  localparam MX = 7;
+  localparam MY = 8;
+
+  // We use two Wishbone modules to load the bitstream
+  localparam NUM_CONFIG_REGIONS = 2;
+
+  // Wishbone signals
+  wire wbs_stb_i;
+  wire wbs_cyc_i;
+  wire wbs_we_i;
+
+  // Write mask
+  wire [3:0] wbs_sel_i;
+  wire [31:0] wbs_data_i;
+  wire [31:0] wbs_addr_i;
+  wire wbs_ack_o;
+  wire [31:0] wbs_data_o;
+
+  // mprj_io ~ io_in ~ io_out (bidir)
+  wire [`MPRJ_IO_PADS-1:0] io_in;
+  wire [`MPRJ_IO_PADS-1:0] io_out;
+
+  user_project_wrapper dut (
+    .wb_clk_i(clk),
+    .wb_rst_i(rst),
+
+    // Wishbone signals
+    .wbs_stb_i(wbs_stb_i),   // input
+    .wbs_cyc_i(wbs_cyc_i),   // input
+    .wbs_we_i(wbs_we_i),     // input
+    // Write mask
+    .wbs_sel_i(wbs_sel_i),   // input
+    .wbs_dat_i(wbs_data_i), // input
+    .wbs_adr_i(wbs_addr_i),  // input
+    .wbs_ack_o(wbs_ack_o),   // output
+    .wbs_dat_o(wbs_data_o),  // output
+
+     // IOs
+    .io_in(io_in),
+    .io_out(io_out),
+    .io_oeb(),
+
+     // Logic Analyzer Signals
+    .la_data_in(),
+    .la_data_out(),
+    .la_oen(),
+
+    .analog_io(),
+    .user_clock2()
+  );
+
+  reg [31:0] address = 32'h3000_0000;
+  reg [31:0] write_data = 0;
+  reg transact = 0;
+  reg we = 0;
+  reg [3:0] select = 4'b1111;
+
+  wire [1:0] ack;
+  wire [31:0] read_data;
+
+  assign wbs_stb_i  = transact;
+  assign wbs_cyc_i  = transact;
+  assign wbs_we_i   = we;
+  assign wbs_sel_i  = select;
+  assign wbs_data_i = write_data;
+  assign wbs_addr_i = address;
+  assign ack        = wbs_ack_o;
+  assign read_data  = wbs_data_o;
+
+  reg fabric_reset;
+  assign io_in[10] = fabric_reset;
+
+  // MSB<[bitstream(0,0), bitstream(1,0), ..., bitstream(N-1,0)],
+  //     [bitstream(0,1), bitstream(1,1), ..., bitstream(N-1,1)],
+  //     ...
+  //     [bitstream(0,N-1), bitstream(1,N-1), ..., bitstream(N-1,N-1)]>LSB
+
+  localparam COL_BITS  = `CLB_TILE_BITSTREAM_SIZE * MY;
+  localparam FPGA_BITS = COL_BITS * MX;
+  reg [FPGA_BITS-1:0]     bitstream[1];
+  reg [8*MX*MY-1:0]       gold_sync_output[1];
+  reg [8*MX*MY-1:0]       gold_comb_output[1];
+  reg [`MPRJ_IO_PADS-1:0] gold_gpio_output[1];
+
+  reg [1023:0] load_config = 0;
+  reg [1023:0] load_sync_output = 0;
+  reg [1023:0] load_comb_output = 0;
+  reg [1023:0] load_gpio_output = 0;
+  reg status = 0;
+  initial begin
+    #0.1 status = $value$plusargs("load_config=%s",      load_config);
+    #0.1 status = $value$plusargs("load_sync_output=%s", load_sync_output);
+    #0.1 status = $value$plusargs("load_comb_output=%s", load_comb_output);
+    #0.1 status = $value$plusargs("load_gpio_output=%s", load_gpio_output);
+
+    #1;
+    $readmemb(load_config, bitstream);
+    $readmemb(load_sync_output, gold_sync_output);
+    $readmemb(load_comb_output, gold_comb_output);
+    $readmemb(load_gpio_output, gold_gpio_output);
+  end
+
+  wire [COL_BITS-1:0] col_bitstream [MX-1:0];
+
+  genvar k, x, y;
+  generate
+    for (k = 0; k < MX; k = k + 1) begin
+      assign col_bitstream[MX-1-k] = bitstream[0][COL_BITS * (k + 1) - 1: COL_BITS * k];
+    end
+  endgenerate
+
+  wire [8*MX*MY-1:0] fabric_sync_output;
+  wire [8*MX*MY-1:0] fabric_comb_output;
+
+  // Extract the current registers' states from the Fabric
+  // They will be compared against the golden registers' states given by a test
+  generate
+    for (x = 0; x < MX; x = x + 1) begin
+      for (y = 0; y < MY; y = y + 1) begin
+`ifndef GATE_LV
+        assign fabric_sync_output[x * MY * 8 + y * 8 +: 8] = dut.fpga250.X[MX-1-x].Y[MY-1-y].clb.slice.sync_output;
+        assign fabric_comb_output[x * MY * 8 + y * 8 +: 8] = dut.fpga250.X[MX-1-x].Y[MY-1-y].clb.slice.comb_output;
+`endif
+      end
+    end
+  endgenerate
+
+//  always @(posedge clk) begin
+//    $display("[At %t] TEST shift00=%b cen00=%b set_out00=%b, shift10=%b, cen10=%b, set_out10=%b", $time,
+//      dut.fpga250.wishbonatron_00.shift_out,
+//      dut.fpga250.wishbonatron_00.cen,
+//      dut.fpga250.wishbonatron_00.set_out,
+//
+//      dut.fpga250.wishbonatron_10.shift_out,
+//      dut.fpga250.wishbonatron_10.cen,
+//      dut.fpga250.wishbonatron_10.set_out);
+//  end
+
+  reg failed_tests = 0;
+
+  localparam NUM_BYTES = COL_BITS / 8;
+  localparam REM_BITS  = COL_BITS - NUM_BYTES * 8;
+  integer i, j, z, wb;
+  initial begin
+    //$dumpfile("fpga_test_harness.vcd");
+    //$dumpvars;
+
+    rst = 1'b1;
+    fabric_reset= 1'b1;
+    repeat (10) @(posedge clk);
+
+    @(negedge clk);
+    rst = 1'b0;
+    fabric_reset = 1'b0;
+
+    for (wb = 0; wb < NUM_CONFIG_REGIONS; wb = wb + 1) begin
+      // Wishbone wb
+      address <= 32'h3000_0004 + (wb << 4);
+      write_data <= {8'hFF, 8'hFF, 8'hFF, 8'hFF};
+      we <= 1;
+      transact <= 1;
+
+      @(posedge ack);
+      transact <= 0;
+      we <= 0;
+
+      @(negedge ack);
+    end
+
+    for (wb = 0; wb < NUM_CONFIG_REGIONS; wb = wb + 1) begin
+      for (i = 0; i < NUM_BYTES; i = i + 1) begin
+        // sending the bits
+        address <= 32'h3000_0008 + (wb << 4);
+        for (j = wb * 4; j < wb * 4 + 4; j = j + 1) begin
+          if (j < MX)
+            write_data[(j % 4) * 8 +: 8] <= col_bitstream[j][i * 8 +: 8];
+        end
+        we <= 1;
+        transact <= 1;
+
+        @(posedge ack);
+        transact <= 0;
+        we <= 0;
+        @(negedge ack);
+
+        repeat(5) @(posedge clk);
+      end
+    end
+
+    if (REM_BITS > 0) begin
+    // Send the remaining bits
+      for (wb = 0; wb < NUM_CONFIG_REGIONS; wb = wb + 1) begin
+        address <= 32'h3000_0004 + (wb << 4);
+        for (i = wb * 4; i < wb * 4 + 4; i = i + 1) begin
+          if (i < MX)
+            write_data[(i % 4) * 8 +: 8] <= REM_BITS;
+        end
+
+        we <= 1;
+        transact <= 1;
+
+        @(posedge ack);
+        transact <= 0;
+        we <= 0;
+        @(negedge ack);
+
+        repeat(5) @(posedge clk);
+      end
+
+      for (wb = 0; wb < NUM_CONFIG_REGIONS; wb = wb + 1) begin
+        // sending the bits
+        address <= 32'h3000_0008 + (wb << 4);
+        for (i = wb * 4; i < wb * 4 + 4; i = i + 1) begin
+          if (i < MX)
+            for (z = 0; z < REM_BITS; z = z + 1)
+              write_data[(i % 4) * 8 + z] <= col_bitstream[i][NUM_BYTES * 8 + z];
+        end
+        we <= 1;
+        transact <= 1;
+
+        @(posedge ack);
+        transact <= 0;
+        we <= 0;
+        @(negedge ack);
+
+        repeat(5) @(posedge clk);
+      end
+    end
+    else begin
+      // Set the counters to 0 to fire cen
+      for (wb = 0; wb < NUM_CONFIG_REGIONS; wb = wb + 1) begin
+        address <= 32'h3000_0004 + (wb << 4);
+        write_data = {8'h00, 8'h00, 8'h00, 8'h00};
+
+        we <= 1;
+        transact <= 1;
+
+        @(posedge ack);
+        transact <= 0;
+        we <= 0;
+        @(negedge ack);
+
+        repeat(5) @(posedge clk);
+      end
+
+      for (wb = 0; wb < NUM_CONFIG_REGIONS; wb = wb + 1) begin
+        // We don't actually send anything here
+        address <= 32'h3000_0008 + (wb << 4);
+        we <= 1;
+        transact <= 1;
+
+        @(posedge ack);
+        transact <= 0;
+        we <= 1;
+        @(negedge ack);
+
+        repeat(5) @(posedge clk);
+      end
+    end
+
+    repeat(5) @(posedge clk);
+
+    $display("Configuration done!");
+
+    repeat (100) @(posedge clk);
+
+    $display("Number of bits per column: %d\n", COL_BITS);
+    $display("Bitstream size: %d\n", FPGA_BITS);
+
+    $display("GPIO_NORTH=%b", dut.fpga250.gpio_north);
+    $display("GPIO_SOUTH=%b", dut.fpga250.gpio_south);
+    $display("GPIO_EAST=%b",  dut.fpga250.gpio_east);
+    $display("GPIO_WEST=%b",  dut.fpga250.gpio_west);
+
+    $display("fabric_gpio_output = %b",
+      {dut.fpga250.gpio_north,
+       dut.fpga250.gpio_south,
+       dut.fpga250.gpio_east,
+       dut.fpga250.gpio_west});
+    $display("gold_gpio_output   = %b", gold_gpio_output[0]);
+
+    if ({dut.fpga250.gpio_north,
+         dut.fpga250.gpio_south,
+         dut.fpga250.gpio_east,
+         dut.fpga250.gpio_west} === gold_gpio_output[0])
+       $display("[gpio test] PASSED!");
+    else begin
+       $display("[gpio test] FAILED: gpio_output mismatch!");
+       failed_tests = failed_tests + 1;
+    end
+
+`ifndef GATE_LV
+
+    $display("fabric_sync_output = %b", fabric_sync_output);
+    $display("gold_sync_output   = %b", gold_sync_output[0]);
+
+    $display("fabric_comb_output = %b", fabric_comb_output);
+    $display("gold_comb_output   = %b", gold_comb_output[0]);
+
+    if (fabric_sync_output === gold_sync_output[0])
+      $display("[sync test] PASSED!");
+    else begin
+      $display("[sync test] FAILED: sync_output mismatch!");
+      failed_tests = failed_tests + 1;
+    end
+
+    if (fabric_comb_output === gold_comb_output[0])
+      $display("[comb test] PASSED!");
+    else begin
+      $display("[comb test] FAILED: comb_output mismatch!");
+      failed_tests = failed_tests + 1;
+    end
+`endif
+
+    #100;
+    $display("Fabric test done! Num tests failed: %d", failed_tests);
+    $finish;
+  end
+
+endmodule