Add pins to sides of block.
diff --git a/openlane/openram_testchip/pin_order.cfg b/openlane/openram_testchip/pin_order.cfg
new file mode 100644
index 0000000..bbd4cba
--- /dev/null
+++ b/openlane/openram_testchip/pin_order.cfg
@@ -0,0 +1,46 @@
+#BUS_SORT
+#NR
+in_select
+gpio.*
+
+#S
+reset.*
+la_.*
+
+#E
+sram0_clk
+sram0.*
+sram1_clk
+sram1.*
+sram2_clk
+sram2.*
+sram3_clk
+sram3.*
+right.*
+sram4_clk
+sram4.*
+sram5_clk
+sram5.*
+sram6_clk
+sram6.*
+sram7_clk
+sram7.*
+
+#WR
+sram8_clk
+sram8.*
+sram9_clk
+sram9.*
+sram10_clk
+sram10.*
+sram11_clk
+sram11.*
+left.*
+sram12_clk
+sram12.*
+sram13_clk
+sram13.*
+sram14_clk
+sram14.*
+sram15_clk
+sram15.*
\ No newline at end of file
diff --git a/verilog/rtl/openram_defines.v b/verilog/rtl/openram_defines.v
new file mode 100644
index 0000000..ff695e8
--- /dev/null
+++ b/verilog/rtl/openram_defines.v
@@ -0,0 +1,7 @@
+`define WMASK_SIZE 4
+`define ADDR_SIZE 16
+`define DATA_SIZE 32
+`define SELECT_SIZE 4
+`define MAX_CHIPS 16
+`define PORT_SIZE `DATA_SIZE+`DATA_SIZE+`WMASK_SIZE+2
+`define TOTAL_SIZE 2*`PORT_SIZE + `SELECT_SIZE
diff --git a/verilog/rtl/openram_testchip.v b/verilog/rtl/openram_testchip.v
index d363874..f8aa54e 100644
--- a/verilog/rtl/openram_testchip.v
+++ b/verilog/rtl/openram_testchip.v
@@ -1,10 +1,4 @@
-`define WMASK_SIZE 4
-`define ADDR_SIZE 16
-`define DATA_SIZE 32
-`define SELECT_SIZE 4
-`define MAX_CHIPS 16
-`define PORT_SIZE `DATA_SIZE+`DATA_SIZE+`WMASK_SIZE+2
-`define TOTAL_SIZE 2*`PORT_SIZE + `SELECT_SIZE
+`include "openram_defines.v"
 
 module openram_testchip(
 `ifdef USE_POWER_PINS
@@ -68,17 +62,26 @@
 			input  [`DATA_SIZE-1:0] sram15_dout1,
 			
 			// Shared control/data to the SRAMs
-			output reg [`ADDR_SIZE-1:0] addr0,
-			output reg [`DATA_SIZE-1:0] din0,
-			output reg 	  web0,
-			output reg [`WMASK_SIZE-1:0]  wmask0,
-			output reg [`ADDR_SIZE-1:0] addr1,
-			output reg [`DATA_SIZE-1:0] din1,
-			output reg 	  web1,
-			output reg [`WMASK_SIZE-1:0]  wmask1,
+			output reg [`ADDR_SIZE-1:0] left_addr0,
+			output reg [`DATA_SIZE-1:0] left_din0,
+			output reg 	  left_web0,
+			output reg [`WMASK_SIZE-1:0]  left_wmask0,
+			output reg [`ADDR_SIZE-1:0] left_addr1,
+			output reg [`DATA_SIZE-1:0] left_din1,
+			output reg 	  left_web1,
+			output reg [`WMASK_SIZE-1:0]  left_wmask1,
 			// One CSB for each SRAM
-			output reg [`ADDR_SIZE-1:0] csb0,
-			output reg [`ADDR_SIZE-1:0] csb1,
+			// One CSB for each SRAM
+			output reg [`MAX_CHIPS-1:0] left_csb0,
+			output reg [`MAX_CHIPS-1:0] left_csb1,
+
+			// Shared control/data to the SRAMs
+			output [`ADDR_SIZE-1:0] right_addr0,
+			output [`DATA_SIZE-1:0] right_din0,
+			output  	  right_web0,
+			output [`WMASK_SIZE-1:0]  right_wmask0,
+			// One CSB for each SRAM
+			output [`MAX_CHIPS-1:0] right_csb0,
 			
 			// Clocks for each SRAM
 			output reg sram0_clk,
@@ -144,14 +147,23 @@
    reg [`DATA_SIZE-1:0] sram15_data0;
    reg [`DATA_SIZE-1:0] sram15_data1;
 
-// Mux output to connect final output data
-// into sram_register
+   // Mux output to connect final output data
+   // into sram_register
    reg [`DATA_SIZE-1:0] read_data0;
    reg [`DATA_SIZE-1:0] read_data1;
 
-// SRAM input connections
+   // SRAM input connections
    reg [`SELECT_SIZE-1:0]  chip_select;
 
+   // Duplicate pins on other side
+   wire [`ADDR_SIZE-1:0] right_addr0 = left_addr0;
+   wire [`DATA_SIZE-1:0] right_din0 = left_din0;
+   wire 		   right_web0 = left_web0;
+   wire [`WMASK_SIZE-1:0] right_wmask0 = left_wmask0;
+   wire [`MAX_CHIPS-1:0]  right_csb0 = left_csb0;
+   
+   
+
 //Selecting clock pin
 always @(*) begin
     clk = in_select ? gpio_clk : la_clk;
@@ -202,17 +214,17 @@
    // TODO: Use defines for these
    chip_select = sram_register[`TOTAL_SIZE-1:108];
    
-   addr0 = sram_register[107:92];
-   din0 = sram_register[91:60];
+   left_addr0 = sram_register[107:92];
+   left_din0 = sram_register[91:60];
    csb0_temp = sram_register[59];
-   web0 = sram_register[58];
-   wmask0 = sram_register[57:54];
+   left_web0 = sram_register[58];
+   left_wmask0 = sram_register[57:54];
    
-   addr1 = sram_register[`PORT_SIZE-1:`DATA_SIZE+`WMASK_SIZE+2];
-   din1 = sram_register[`DATA_SIZE+`WMASK_SIZE+1:`WMASK_SIZE+2];
-   csb1_temp = sram_register[`WMASK_SIZE+1];
-   web1 = sram_register[`WMASK_SIZE];
-   wmask1 = sram_register[`WMASK_SIZE-1:0];
+   left_addr1 = sram_register[`PORT_SIZE-1:`DATA_SIZE+`WMASK_SIZE+2];
+   left_din1 = sram_register[`DATA_SIZE+`WMASK_SIZE+1:`WMASK_SIZE+2];
+   left_csb1_temp = sram_register[`WMASK_SIZE+1];
+   left_web1 = sram_register[`WMASK_SIZE];
+   left_wmask1 = sram_register[`WMASK_SIZE-1:0];
 end 
    
 // Apply the correct CSB
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 986b543..86c92de 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -14,6 +14,7 @@
 // SPDX-License-Identifier: Apache-2.0
 
 `default_nettype none
+`include "openram_defines.v"
 /*
  *-------------------------------------------------------------
  *
@@ -78,40 +79,69 @@
     output [2:0] user_irq
 );
 
-wire [55:0] sram0_connections;
-wire [55:0] sram1_connections;
-wire [48:0] io_sram2_connections;
-wire [46:0] io_sram3_connections;
-wire [47:0] io_sram4_connections;
-wire [83:0] io_sram5_connections;
+   // Shared control/data to the SRAMs
+   wire [`ADDR_SIZE-1:0] addr0;
+   wire [`DATA_SIZE-1:0] din0;
+   wire 		 web0;
+   wire [`WMASK_SIZE-1:0] wmask0;
+   wire [`ADDR_SIZE-1:0]  addr1;
+   wire [`DATA_SIZE-1:0]  din1;
+   wire 		  web1;
+   wire [`WMASK_SIZE-1:0] wmask1;
+   // One CSB for each SRAM
+   wire [`MAX_CHIPS-1:0]  csb0;
+   wire [`MAX_CHIPS-1:0]  csb1;
+   
 
 
-wire [31:0] sram0_rw_out;
-wire [31:0] sram0_ro_out;
-wire [31:0] sram1_rw_out;
-wire [31:0] sram1_ro_out;
-wire [31:0] sram2_rw_out;
-wire [31:0] sram3_rw_out;
-wire [31:0] sram4_rw_out;
-wire [63:0] sram5_rw_out;
-
+wire [31:0] sram0_dout0;
+wire [31:0] sram0_dout1;
+wire [31:0] sram1_dout0;
+wire [31:0] sram1_dout1;
+wire [31:0] sram2_dout0;
+wire [31:0] sram2_dout1;
+wire [31:0] sram3_dout0;
+wire [31:0] sram3_dout1;
+wire [31:0] sram4_dout0;
+wire [31:0] sram4_dout1;
+wire [31:0] sram5_dout0;
+wire [31:0] sram5_dout1;
+wire [31:0] sram6_dout0;
+wire [31:0] sram6_dout1;
+wire [31:0] sram7_dout0;
+wire [31:0] sram7_dout1;
+wire [31:0] sram8_dout0;
+wire [31:0] sram8_dout1;
+wire [31:0] sram9_dout0;
+wire [31:0] sram9_dout1;
+wire [31:0] sram10_dout0;
+wire [31:0] sram10_dout1;
+wire [31:0] sram11_dout0;
+wire [31:0] sram11_dout1;
+wire [31:0] sram12_dout0;
+wire [31:0] sram12_dout1;
+wire [31:0] sram13_dout0;
+wire [31:0] sram13_dout1;
+wire [31:0] sram14_dout0;
+wire [31:0] sram14_dout1;
 			
 			
    
 openram_testchip CONTROL_LOGIC(
-			       .reset(wb_rst_i),
-			       .in_select(io_in[0]),
-			       .gpio_clk(io_in[1]),
-			       .gpio_sram_clk(io_in[2]),
-			       .gpio_scan(io_in[3]),
-			       .gpio_sram_load(io_in[4]),
+			       .reset(io_in[15]|~wb_rst_i),
+			       .in_select(io_in[16]),
+			       .gpio_clk(io_in[17]),
+			       .gpio_sram_clk(io_in[18]),
+			       .gpio_scan(io_in[19]),
+			       .gpio_sram_load(io_in[20]),
+			       
 			       .la_clk(la_data_in[127]),
 			       .la_sram_clk(la_data_in[126]),
 			       .la_in_load(la_data_in[125]),
 			       .la_sram_load(la_data_in[124]),
 			       .la_data_in(la_data_in[111:0]),
 			       .la_data_out(la_data_out[111:0]),
-			       .gpio_out(io_out[0]),
+			       .gpio_out(io_out[21]),
 
 			       // Shared control/data to the SRAMs
 			       .addr0(addr0),
@@ -224,7 +254,9 @@
    wire [31:0] sram14_dout1;
    wire [31:0] sram15_dout0;
    wire [31:0] sram15_dout1;
-   
+
+   // Only io_out[27] is output
+   assgin io_oeb = 1'b1 << 21;
 
 // Not working yet
 // sky130_sram_1kbyte_1r1w_8x1024_8 SRAM0