Add the custom DFF RAM
diff --git a/openlane/DFFRAM/config.tcl b/openlane/DFFRAM/config.tcl
new file mode 100644
index 0000000..7782cee
--- /dev/null
+++ b/openlane/DFFRAM/config.tcl
@@ -0,0 +1,25 @@
+set script_dir [file dirname [file normalize [info script]]]
+# User config
+set ::env(DESIGN_NAME) DFFRAM
+
+# Change if needed
+set ::env(VERILOG_FILES) $script_dir/../../verilog/gl/DFFRAM.gl.v
+set ::env(SYNTH_TOP_LEVEL) 1
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+# Fill this
+set ::env(CLOCK_PERIOD) "10"
+set ::env(CLOCK_PORT) "CLK"
+set ::env(CLOCK_TREE_SYNTH) 0
+
+set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
+
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 630 630"
+
+set ::env(PDN_CFG) $script_dir/pdn.tcl
+
+set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 0
+set ::env(PL_TARGET_DENSITY) 0.85
+
+set ::env(CELL_PAD) 0
+set ::env(DIODE_INSERTION_STRATEGY) 0
diff --git a/openlane/DFFRAM/pdn.tcl b/openlane/DFFRAM/pdn.tcl
new file mode 100644
index 0000000..947bd06
--- /dev/null
+++ b/openlane/DFFRAM/pdn.tcl
@@ -0,0 +1,27 @@
+# Power nets
+set ::power_nets $::env(VDD_PIN)
+set ::ground_nets $::env(GND_PIN)
+
+
+pdngen::specify_grid stdcell {
+ name grid
+ rails {
+ met1 {width 0.48 pitch $::env(PLACE_SITE_HEIGHT) offset 0}
+ }
+ straps {
+ met4 {width 1.6 pitch $::env(FP_PDN_VPITCH) offset $::env(FP_PDN_VOFFSET)}
+ }
+ connect {{met1 met4}}
+}
+
+
+set ::halo 0
+
+# Metal layer for rails on every row
+set ::rails_mlayer "met1" ;
+
+# POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area
+set ::rails_start_with "POWER" ;
+
+# POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area
+set ::stripes_start_with "POWER" ;
diff --git a/openlane/DFFRAM/pin_order.cfg b/openlane/DFFRAM/pin_order.cfg
new file mode 100644
index 0000000..297844f
--- /dev/null
+++ b/openlane/DFFRAM/pin_order.cfg
@@ -0,0 +1,12 @@
+#N
+Di.*
+
+#W
+A.*
+CLK
+WE.*
+EN
+
+
+#S
+Do.*
diff --git a/openlane/mgmt_core/config.tcl b/openlane/mgmt_core/config.tcl
index 51987a9..3f86edc 100644
--- a/openlane/mgmt_core/config.tcl
+++ b/openlane/mgmt_core/config.tcl
@@ -11,13 +11,13 @@
set ::env(FP_VERTICAL_HALO) 6
set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 1800 1900"
+set ::env(DIE_AREA) "0 0 2600 1100"
set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro_placement.cfg
set ::env(PL_TARGET_DENSITY) 0.37
-set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 0
-set ::env(CELL_PAD) 10
+set ::env(PL_OPENPHYSYN_OPTIMIZATIONS) 1
+set ::env(CELL_PAD) 8
set ::env(GLB_RT_ADJUSTMENT) 0
set ::env(GLB_RT_TILES) 14
@@ -34,10 +34,13 @@
$script_dir/../../verilog/rtl/housekeeping_spi.v"
set ::env(VERILOG_FILES_BLACKBOX) "\
+ $script_dir/../../verilog/gl/DFFRAM.gl.v
$script_dir/../../verilog/rtl/digital_pll.v"
set ::env(EXTRA_LEFS) "\
+ $script_dir/../../lef/DFFRAM.lef
$script_dir/../../lef/digital_pll.lef"
set ::env(EXTRA_GDS_FILES) "\
+ $script_dir/../../gds/DFFRAM.gds
$script_dir/../../gds/digital_pll.gds"
diff --git a/openlane/mgmt_core/macro_placement.cfg b/openlane/mgmt_core/macro_placement.cfg
index c81fd53..a1f7dde 100644
--- a/openlane/mgmt_core/macro_placement.cfg
+++ b/openlane/mgmt_core/macro_placement.cfg
@@ -1 +1,2 @@
-pll 15.225 1159.305 N
+pll 14.360 501.110 N
+soc.soc_mem.mem.SRAM 395.345 191.120 N
diff --git a/openlane/mgmt_core/pdn.tcl b/openlane/mgmt_core/pdn.tcl
index 5ed65a9..b74f931 100644
--- a/openlane/mgmt_core/pdn.tcl
+++ b/openlane/mgmt_core/pdn.tcl
@@ -17,7 +17,6 @@
}
pdngen::specify_grid macro {
- instance "pll"
power_pins "VPWR"
ground_pins "VGND"
blockages "li1 met1 met2 met3 met4"