Add configurations
diff --git a/openlane/leorv32/config.json b/openlane/leorv32/config.json
new file mode 100644
index 0000000..0fd5a13
--- /dev/null
+++ b/openlane/leorv32/config.json
@@ -0,0 +1,33 @@
+{
+    "DESIGN_NAME": "leorv32",
+    "DESIGN_IS_CORE": 0,
+    "VERILOG_FILES": [
+        "dir::../../verilog/rtl/defines.v",
+        "dir::../../verilog/rtl/leorv-fpga/leorv32/rtl/leorv32_pkg.sv",
+        "dir::../../verilog/rtl/leorv-fpga/leorv32/rtl/leorv32.sv"
+    ],
+    "CLOCK_PORT": "clk",
+    "CLOCK_NET": "clk",
+    "FP_SIZING": "absolute",
+    "DIE_AREA": "0 0 500 500",
+    "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
+    "PL_BASIC_PLACEMENT": 0,
+    "PL_TARGET_DENSITY": 0.55,
+    "VDD_NETS": ["vccd1"],
+    "GND_NETS": ["vssd1"],
+    "DIODE_INSERTION_STRATEGY": 4,
+    "RUN_CVC": 1,
+    "pdk::sky130*": {
+        "FP_CORE_UTIL": 45,
+        "RT_MAX_LAYER": "met4",
+        "CLOCK_PERIOD": 20
+    },
+    "pdk::gf180mcuC": {
+        "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
+        "CLOCK_PERIOD": 24.0,
+        "FP_CORE_UTIL": 40,
+        "RT_MAX_LAYER": "Metal4",
+        "SYNTH_MAX_FANOUT": 4,
+        "PL_TARGET_DENSITY": 0.45
+    }
+}
diff --git a/openlane/leorv32/pin_order.cfg b/openlane/leorv32/pin_order.cfg
new file mode 100644
index 0000000..dcad451
--- /dev/null
+++ b/openlane/leorv32/pin_order.cfg
@@ -0,0 +1,24 @@
+#BUS_SORT
+
+#N
+
+mem_addr.*
+
+#E
+
+mem_wdata.*
+mem_wmask.*
+
+#S
+
+clk
+reset
+mhartid_0
+
+mem_rstrb
+mem_rbusy
+mem_wbusy
+
+#W
+
+mem_rdata.*
diff --git a/openlane/soc/config.json b/openlane/soc/config.json
new file mode 100644
index 0000000..ac808c1
--- /dev/null
+++ b/openlane/soc/config.json
@@ -0,0 +1,71 @@
+{
+    "DESIGN_NAME": "soc",
+    "DESIGN_IS_CORE": false,
+    "FP_PDN_CORE_RING": false,
+    "VERILOG_FILES": [
+        "dir::../../verilog/rtl/defines.v",
+        "dir::../../verilog/rtl/leorv-fpga/soc/rtl/dual_soc_svga.sv",
+        "dir::../../verilog/rtl/leorv-fpga/sram/rtl/sram.sv",
+        "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen.sv",
+        "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen_top.sv",
+        "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_rx.sv",
+        "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_tx.sv",
+        "dir::../../verilog/rtl/leorv-fpga/util/rtl/synchronizer.sv"
+    ],
+    "CLOCK_PORT": "clk",
+    "FP_PDN_MACRO_HOOKS": [
+        "leorv32_core0 vccd1 vssd1 vccd1 vssd1,",
+        "leorv32_core1 vccd1 vssd1 vccd1 vssd1"
+    ],
+    "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
+    "VERILOG_FILES_BLACKBOX": [
+        "dir::../../verilog/rtl/defines.v",
+        "dir::../../verilog/gl/leorv32.v",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v"
+    ],
+    "EXTRA_LEFS": [
+        "dir::../../lef/leorv32.lef",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef"
+    ],
+    "EXTRA_GDS_FILES": [
+        "dir::../../gds/leorv32.gds",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds"
+    ],
+    "FP_SIZING": "absolute",
+    "DIE_AREA": "0 0 2350 1400",
+    "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
+    "PL_BASIC_PLACEMENT": 0,
+    "PL_TARGET_DENSITY": 0.55,
+    "VDD_NETS": ["vccd1"],
+    "GND_NETS": ["vssd1"],
+    "DIODE_INSERTION_STRATEGY": 4,
+    "RUN_CVC": 1,
+    "pdk::sky130*": {
+        "FP_CORE_UTIL": 45,
+        "RT_MAX_LAYER": "met4",
+        "CLOCK_PERIOD": 20
+    },
+    "pdk::gf180mcuC": {
+        "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
+        "CLOCK_PERIOD": 24.0,
+        "FP_CORE_UTIL": 40,
+        "RT_MAX_LAYER": "Metal4",
+        "SYNTH_MAX_FANOUT": 4,
+        "PL_TARGET_DENSITY": 0.45
+    },
+    
+    "LVS_CONNECT_BY_LABEL": 1,
+    "MAGIC_DRC_USE_GDS": 0,
+    "RUN_MAGIC_DRC": 0,
+    "QUIT_ON_MAGIC_DRC": 0,
+    "RUN_KLAYOUT_XOR": 0,
+    "ROUTING_CORES": 6,
+    "FP_PDN_VWIDTH": 3.1,
+    "FP_PDN_HWIDTH": 3.1,
+    "FP_PDN_VOFFSET": 5,
+    "FP_PDN_HOFFSET": 5,
+    "FP_PDN_VPITCH": 180,
+    "FP_PDN_HPITCH": 180,
+    "FP_PDN_VSPACING": "expr::(5 * $FP_PDN_VWIDTH)",
+    "FP_PDN_HSPACING": "expr::(5 * $FP_PDN_HWIDTH)"
+}
diff --git a/openlane/soc/macro.cfg b/openlane/soc/macro.cfg
new file mode 100644
index 0000000..32c0461
--- /dev/null
+++ b/openlane/soc/macro.cfg
@@ -0,0 +1,6 @@
+#wram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8 100 100 E
+#wram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8 650 100 E
+leorv32_core0 300 500 N
+leorv32_core1 1400 500 N
+#svga_gen_top.vram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8 100 1700 E
+#svga_gen_top.vram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8 650 1700 E
diff --git a/openlane/soc/pin_order.cfg b/openlane/soc/pin_order.cfg
new file mode 100644
index 0000000..35d29b3
--- /dev/null
+++ b/openlane/soc/pin_order.cfg
@@ -0,0 +1,53 @@
+#BUS_SORT
+
+#N
+
+vram_select_instance_0.*
+vram_select_instance_1.*
+
+vram_web0
+vram_wmask0.*
+
+vram_addr0.*
+vram_addr1.*
+
+vram_din0.*
+
+vram_select_dout0.*
+vram_select_dout1.*
+
+#E
+
+blink
+clk
+
+reset
+uart_rx
+uart_tx
+
+#S
+
+wram_select_instance_0.*
+wram_select_instance_1.*
+
+wram_web0
+wram_wmask0.*
+
+wram_addr0.*
+wram_addr1.*
+
+wram_din0.*
+
+wram_select_dout0.*
+wram_select_dout1.*
+
+#W
+
+dvi_clk
+dvi_de
+dvi_hsync
+dvi_vsync
+
+dvi_b.*
+dvi_g.*
+dvi_r.*
diff --git a/openlane/user_proj_example/config.json b/openlane/user_proj_example/config.json
deleted file mode 100644
index 370d74c..0000000
--- a/openlane/user_proj_example/config.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-    "DESIGN_NAME": "user_proj_example",
-    "DESIGN_IS_CORE": 0,
-    "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
-    "CLOCK_PERIOD": 10,
-    "CLOCK_PORT": "wb_clk_i",
-    "CLOCK_NET": "counter.clk",
-    "FP_SIZING": "absolute",
-    "DIE_AREA": "0 0 900 600",
-    "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
-    "PL_BASIC_PLACEMENT": 0,
-    "PL_TARGET_DENSITY": 0.55,
-    "VDD_NETS": ["vccd1"],
-    "GND_NETS": ["vssd1"],
-    "DIODE_INSERTION_STRATEGY": 4,
-    "RUN_CVC": 1,
-    "pdk::sky130*": {
-        "FP_CORE_UTIL": 45,
-        "RT_MAX_LAYER": "met4",
-        "scl::sky130_fd_sc_hd": {
-            "CLOCK_PERIOD": 10
-        },
-        "scl::sky130_fd_sc_hdll": {
-            "CLOCK_PERIOD": 10
-        },
-        "scl::sky130_fd_sc_hs": {
-            "CLOCK_PERIOD": 8
-        },
-        "scl::sky130_fd_sc_ls": {
-            "CLOCK_PERIOD": 10,
-            "SYNTH_MAX_FANOUT": 5
-        },
-        "scl::sky130_fd_sc_ms": {
-            "CLOCK_PERIOD": 10
-        }
-    },
-    "pdk::gf180mcuC": {
-        "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
-        "CLOCK_PERIOD": 24.0,
-        "FP_CORE_UTIL": 40,
-        "RT_MAX_LAYER": "Metal4",
-        "SYNTH_MAX_FANOUT": 4,
-        "PL_TARGET_DENSITY": 0.45
-    }
-}
\ No newline at end of file
diff --git a/openlane/user_proj_example/pin_order.cfg b/openlane/user_proj_example/pin_order.cfg
deleted file mode 100644
index 2fda806..0000000
--- a/openlane/user_proj_example/pin_order.cfg
+++ /dev/null
@@ -1,10 +0,0 @@
-#BUS_SORT
-
-#S
-wb_.*
-wbs_.*
-la_.*
-irq.*
-
-#N
-io_.*
diff --git a/openlane/user_project_wrapper/config.json b/openlane/user_project_wrapper/config.json
index 22a00ee..c24df5e 100644
--- a/openlane/user_project_wrapper/config.json
+++ b/openlane/user_project_wrapper/config.json
@@ -1,27 +1,59 @@
 {
     "DESIGN_NAME": "user_project_wrapper",
-    "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_project_wrapper.v"],
-    "CLOCK_PERIOD": 10,
-    "CLOCK_PORT": "user_clock2",
-    "CLOCK_NET": "mprj.clk",
-    "FP_PDN_MACRO_HOOKS": "mprj vccd1 vssd1 vccd1 vssd1",
+    "VERILOG_FILES": [
+        "dir::../../verilog/rtl/defines.v",
+        "dir::../../verilog/rtl/user_project_wrapper.v",
+        "dir::../../verilog/rtl/leorv-fpga/soc/rtl/dual_soc_svga.sv",
+        "dir::../../verilog/rtl/leorv-fpga/sram/rtl/sram.sv",
+        "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen.sv",
+        "dir::../../verilog/rtl/leorv-fpga/svga/rtl/svga_gen_top.sv",
+        "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_rx.sv",
+        "dir::../../verilog/rtl/leorv-fpga/uart/rtl/my_uart_tx.sv",
+        "dir::../../verilog/rtl/leorv-fpga/util/rtl/synchronizer.sv",
+        "dir::../../verilog/rtl/leorv-fpga/wb_memory/rtl/wb_memory.sv",
+        "dir::../../verilog/rtl/leorv-fpga/mem_port_switch/rtl/mem_port_switch.sv"
+    ],
+
+    "CLOCK_PORT": "wb_clk_i",
+    "FP_PDN_MACRO_HOOKS": [
+        "soc_inst.leorv32_core0 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.leorv32_core1 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.wram.mem0 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.wram.mem1 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.wram.mem2 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.wram.mem3 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.svga_gen_top.vram.mem0 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.svga_gen_top.vram.mem1 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.svga_gen_top.vram.mem2 vccd1 vssd1 vccd1 vssd1,",
+        "soc_inst.svga_gen_top.vram.mem3 vccd1 vssd1 vccd1 vssd1"
+    ],
     "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
-    "VERILOG_FILES_BLACKBOX": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
-    "EXTRA_LEFS": "dir::../../lef/user_proj_example.lef",
-    "EXTRA_GDS_FILES": "dir::../../gds/user_proj_example.gds",
-    "FP_PDN_CHECK_NODES": 0,
-    "SYNTH_ELABORATE_ONLY": 1,
-    "PL_RANDOM_GLB_PLACEMENT": 1,
-    "PL_RESIZER_DESIGN_OPTIMIZATIONS": 0,
-    "PL_RESIZER_TIMING_OPTIMIZATIONS": 0,
-    "PL_RESIZER_BUFFER_INPUT_PORTS": 0,
-    "FP_PDN_ENABLE_RAILS": 0,
-    "DIODE_INSERTION_STRATEGY": 0,
-    "RUN_FILL_INSERTION": 0,
-    "RUN_TAP_DECAP_INSERTION": 0,
+    "VERILOG_FILES_BLACKBOX": [
+        "dir::../../verilog/rtl/defines.v",
+        "dir::../../verilog/gl/leorv32.v",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v"
+    ],
+    "EXTRA_LEFS": [
+        "dir::../../lef/leorv32.lef",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef"
+    ],
+    "EXTRA_GDS_FILES": [
+        "dir::../../gds/leorv32.gds",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds"
+    ],
+    "EXTRA_LIBS": [
+        "dir::../../lib/leorv32.lib",
+        "dir::../../../dependencies/pdks/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib"
+    ],
+    "FP_PDN_CHECK_NODES": 1,
+    "CLOCK_TREE_SYNTH": 1,
+    "DIODE_INSERTION_STRATEGY": 4,
+    "RUN_FILL_INSERTION": 1,
+    "RUN_TAP_DECAP_INSERTION": 1,
+    "PL_TARGET_DENSITY": 0.6,
+
     "FP_PDN_VPITCH": 180,
     "FP_PDN_HPITCH": 180,
-    "CLOCK_TREE_SYNTH": 0,
     "FP_PDN_VOFFSET": 5,
     "FP_PDN_HOFFSET": 5,
     "MAGIC_ZEROIZE_ORIGIN": 0,
@@ -52,22 +84,7 @@
         "RT_MAX_LAYER": "met4",
         "DIE_AREA": "0 0 2920 3520",
         "FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
-        "scl::sky130_fd_sc_hd": {
-            "CLOCK_PERIOD": 10
-        },
-        "scl::sky130_fd_sc_hdll": {
-            "CLOCK_PERIOD": 10
-        },
-        "scl::sky130_fd_sc_hs": {
-            "CLOCK_PERIOD": 8
-        },
-        "scl::sky130_fd_sc_ls": {
-            "CLOCK_PERIOD": 10,
-            "SYNTH_MAX_FANOUT": 5
-        },
-        "scl::sky130_fd_sc_ms": {
-            "CLOCK_PERIOD": 10
-        }
+        "CLOCK_PERIOD": 25
      },
     "pdk::gf180mcuC": {
         "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
@@ -81,5 +98,12 @@
         "FP_PDN_CHECK_NODES": 0,
         "MAGIC_WRITE_FULL_LEF": 0,
         "FP_PDN_ENABLE_RAILS": 0
-   }
+   },
+    "MAGIC_DRC_USE_GDS": 0,
+    "RUN_MAGIC_DRC": 0,
+    "QUIT_ON_MAGIC_DRC": 0,
+    "RUN_KLAYOUT_XOR": 0,
+    "ROUTING_CORES": 12,
+    "PL_ESTIMATE_PARASITICS": 0,
+    "MAGIC_WRITE_FULL_LEF": 0
 }
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index a7365ab..d9c373d 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1 +1,27 @@
-mprj 1175 1690 N
+# LeoRV Cores
+soc_inst.leorv32_core0 500 1510 N
+soc_inst.leorv32_core1 1900 1510 N
+
+# WRAM
+#soc_inst.wram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8  300 300 N
+#soc_inst.wram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8  300 950 N
+#soc_inst.wram.memory\[2\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 300 N
+#soc_inst.wram.memory\[3\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 950 N
+
+# VRAM
+#soc_inst.svga_gen_top.vram.memory\[0\].sky130_sram_2kbyte_1rw1r_32x512_8  300 2250 N
+#soc_inst.svga_gen_top.vram.memory\[1\].sky130_sram_2kbyte_1rw1r_32x512_8  300 2900 N
+#soc_inst.svga_gen_top.vram.memory\[2\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 2250 N
+#soc_inst.svga_gen_top.vram.memory\[3\].sky130_sram_2kbyte_1rw1r_32x512_8 1900 2900 N
+
+# WRAM
+soc_inst.wram.mem0  300 300 N
+soc_inst.wram.mem1  300 950 N
+soc_inst.wram.mem2 1900 300 N
+soc_inst.wram.mem3 1900 950 N
+
+# VRAM
+soc_inst.svga_gen_top.vram.mem0  300 2250 N
+soc_inst.svga_gen_top.vram.mem1  300 2900 N
+soc_inst.svga_gen_top.vram.mem2 1900 2250 N
+soc_inst.svga_gen_top.vram.mem3 1900 2900 N