cfg: Experimenting with SRAM IP config
diff --git a/openlane/tiny_user_project/config.tcl b/openlane/tiny_user_project/config.tcl
index f09173b..8a33cad 100644
--- a/openlane/tiny_user_project/config.tcl
+++ b/openlane/tiny_user_project/config.tcl
@@ -20,42 +20,43 @@
 
 set ::env(PDK) "gf180mcuC"
 set ::env(STD_CELL_LIBRARY) "gf180mcu_fd_sc_mcu7t5v0"
+set ::env(RT_MAX_LAYER) "Metal4"
 
 set ::env(RUN_KLAYOUT) 		0
-set ::env(CLOCK_TREE_SYNTH) 0
+set ::env(CLOCK_TREE_SYNTH) 1
 set ::env(CLOCK_PORT) 		{io_in[8]}
 #set ::env(CLOCK_NET) ""
-set ::env(CLOCK_PERIOD) 	"45"
+set ::env(CLOCK_PERIOD) 	50
+set ::env(SYNTH_MAX_FANOUT) 16
 
 set ::env(FP_IO_HLENGTH) 2
 set ::env(FP_IO_VLENGTH) 2
 
 ## Floorplan
 set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 700 500"
-
+set ::env(DIE_AREA) "0 0 800 700"
 
 ## Placement
 set ::env(PL_BASIC_PLACEMENT) 0
 set ::env(PL_TARGET_DENSITY) 0.55
 
-set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 1
+# Enable all optimizations
+set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
 set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 1
+set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) 1
 
-## Diode Insertion
-set ::env(DIODE_INSERTION_STRATEGY) 		4
+# Diode insertion strategy number 4 for gf-180mcu
+set ::env(DIODE_INSERTION_STRATEGY) 4
 
-# connect to first digital rails
-set ::env(VDD_NETS) [list {VDD}]
-set ::env(GND_NETS) [list {VSS}]
+set ::env(VDD_NETS) [list {vdd}]
+set ::env(GND_NETS) [list {vss}]
 
-
-# save some time
-set ::env(RUN_KLAYOUT_XOR) 0
-set ::env(RUN_KLAYOUT_DRC) 0
-
-# don't put clock buffers on the outputs
-set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) 0
+## Internal Macros
+### Macro PDN Connections
+set ::env(FP_PDN_MACRO_HOOKS) "\
+	mod.u_cpu.rf_ram.RAM0 vdd vss vdd vss"
+set ::env(FP_PDN_MACROS) "\
+	mod.u_cpu.rf_ram.RAM0"
     
 ## Internal Macros
 set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro.cfg
@@ -91,8 +92,8 @@
     $::env(DESIGN_DIR)/blocks/serv/servant/servant_gpio.v"
 
 set ::env(VERILOG_FILES_BLACKBOX) "\
-	$::env(DESIGN_DIR)/rtl/gf180mcu_fd_sc_mcu7t5v0_bb.v \
-	$::env(PDK_ROOT)/$::env(PDK)/libs.ref/gf180mcu_fd_ip_sram/verilog/gf180mcu_fd_ip_sram__sram256x8m8wm1.v"
+	$::env(DESIGN_DIR)/rtl/gf180mcu_fd_sc_mcu7t5v0_bb.v"
+#	$::env(PDK_ROOT)/$::env(PDK)/libs.ref/gf180mcu_fd_ip_sram/verilog/gf180mcu_fd_ip_sram__sram256x8m8wm1.v"
 
 set ::env(EXTRA_LEFS) "\
 	$::env(PDK_ROOT)/$::env(PDK)/libs.ref/gf180mcu_fd_ip_sram/lef/gf180mcu_fd_ip_sram__sram256x8m8wm1.lef"
@@ -101,16 +102,26 @@
 set ::env(EXTRA_LIBS) "\
     $::env(PDK_ROOT)/$::env(PDK)/libs.ref/gf180mcu_fd_ip_sram/liberty/gf180mcu_fd_ip_sram__sram256x8m8wm1__tt_025C_1v80.lib"
 
-set ::env(FP_PDN_MACRO_HOOKS) "\
-  u_cpu.rf_ram.RAM0 VDD VSS VDD VSS
-  "
+set ::env(QUIT_ON_MISMATCHES) 0
 
-#set ::env(PDN_CFG) $script_dir/pdn.tcl
+## PDN
+set ::env(PDN_CFG) $script_dir/pdn.tcl
+set ::env(FP_PDN_ENABLE_MACROS_GRID) 1
 set ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) 1
 
+## PDN
+set ::env(FP_PDN_VPITCH) 30
+#set ::env(FP_PDN_HPITCH) 30
+
+set ::env(FP_PDN_VWIDTH) 3
+#set ::env(FP_PDN_CORE_RING_VWIDTH) 1.6
+
 ## LVS
 set ::env(MAGIC_DRC_USE_GDS) 0
 set ::env(RUN_MAGIC_DRC) 0
 set ::env(QUIT_ON_MAGIC_DRC) 0
 
+set ::env(RUN_CVC) 0
+
+# Temporary ignore
 set ::env(QUIT_ON_LVS_ERROR) 0
\ No newline at end of file
diff --git a/openlane/tiny_user_project/macro.cfg b/openlane/tiny_user_project/macro.cfg
index ac06333..2a86b9f 100644
--- a/openlane/tiny_user_project/macro.cfg
+++ b/openlane/tiny_user_project/macro.cfg
@@ -1 +1 @@
-mod.u_cpu.rf_ram.RAM0 50 50 FS
+mod.u_cpu.rf_ram.RAM0 120 120 W
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
index d4e4d14..4a3872c 100644
--- a/openlane/user_project_wrapper/config.tcl
+++ b/openlane/user_project_wrapper/config.tcl
@@ -83,5 +83,13 @@
 set ::env(RUN_TAP_DECAP_INSERTION) 0
 set ::env(CLOCK_TREE_SYNTH) 0
 
+## DRC skips due to SRAM IP
+set ::env(MAGIC_DRC_USE_GDS) 0
+set ::env(RUN_MAGIC_DRC) 0
+set ::env(QUIT_ON_MAGIC_DRC) 0
+
+# Temporary ignore
+set ::env(QUIT_ON_LVS_ERROR) 0
+
 # YOU ARE NOT ALLOWED TO CHANGE ANY VARIABLES DEFINED IN THE FIXED WRAPPER CFGS 
 source $::env(DESIGN_DIR)/fixed_dont_change/fixed_wrapper_cfgs.tcl
diff --git a/verilog/rtl/gf180mcu_fd_sc_mcu7t5v0_bb.v b/verilog/rtl/gf180mcu_fd_sc_mcu7t5v0_bb.v
index 2a0fbda..e1546cb 100644
--- a/verilog/rtl/gf180mcu_fd_sc_mcu7t5v0_bb.v
+++ b/verilog/rtl/gf180mcu_fd_sc_mcu7t5v0_bb.v
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-
+(*blackbox*)
 module gf180mcu_fd_sc_mcu7t5v0__sdffq_1( SE, SI, D, CLK, Q, VDD, VSS );
 input CLK, D, SE, SI;
 inout VDD, VSS;
@@ -21,27 +21,46 @@
 reg notifier;
 endmodule
 
+(*blackbox*)
 module gf180mcu_fd_sc_mcu7t5v0__buf_1( I, Z, VDD, VSS );
 input I;
 inout VDD, VSS;
 output Z;
 endmodule
 
+(*blackbox*)
 module gf180mcu_fd_sc_mcu7t5v0__buf_2( I, Z, VDD, VSS );
 input I;
 inout VDD, VSS;
 output Z;
 endmodule
 
+(*blackbox*)
 module gf180mcu_fd_sc_mcu7t5v0__buf_4( I, Z, VDD, VSS );
 input I;
 inout VDD, VSS;
 output Z;
 endmodule
 
+(*blackbox*)
 module gf180mcu_fd_sc_mcu7t5v0__dffnq_1( CLKN, D, Q, VDD, VSS );
 input CLKN, D;
 inout VDD, VSS;
 output Q;
 reg notifier;
 endmodule
+
+(*blackbox*)
+module gf180mcu_fd_ip_sram__sram256x8m8wm1 (
+input           CLK,
+input           CEN,    //Chip Enable
+input           GWEN,   //Global Write Enable
+input   [7:0]  	WEN,    //Write Enable
+input   [7:0]   A,
+input   [7:0]  	D,
+output	[7:0]	Q,
+inout		VDD,
+inout		VSS
+);
+
+endmodule
\ No newline at end of file
diff --git a/verilog/rtl/serv_rf_ram_gf180.v b/verilog/rtl/serv_rf_ram_gf180.v
index 653eaa2..af0a910 100644
--- a/verilog/rtl/serv_rf_ram_gf180.v
+++ b/verilog/rtl/serv_rf_ram_gf180.v
@@ -1,5 +1,5 @@
 module serv_rf_ram
-  #(parameter width=0,
+  #(parameter width=8,
     parameter csr_regs=4,
     parameter depth=32*(32+csr_regs)/width)
    (input wire i_clk,
@@ -9,22 +9,22 @@
     input wire [$clog2(depth)-1:0] i_raddr,
     output wire [width-1:0] 	   o_rdata);
 
-//   reg [width-1:0] 		   memory [0:depth-1];
+  wire [width-1:0] 		 data ;
+  reg [width-1:0] 		   rdata ;
 
-   wire [width-1:0] 		 data ;
-   reg [width-1:0] 		   rdata ;
-
+  wire [$clog2(depth)-1:0] addr;
+  assign addr = i_wen ? i_waddr : i_raddr;
 
 gf180mcu_fd_ip_sram__sram256x8m8wm1 RAM0 (
 	.CLK(i_clk),
 	.CEN(1'b0), // Active LOW chip enable
 	.GWEN(~i_wen), // Active LOW Write enable
 	.WEN({8{~i_wen}}), // Active LOW
-	.A(i_wen ? i_waddr : i_raddr),
+	.A(addr),
 	.D(i_wdata),
 	.Q(data),
-	.VDD(1'b1),
-	.VSS(1'b0)
+	.VDD(),
+	.VSS()
 );
 
    /* Reads from reg x0 needs to return 0