k
diff --git a/openlane/matrix_multiply/config.json b/openlane/matrix_multiply/config.json
new file mode 100644
index 0000000..367234a
--- /dev/null
+++ b/openlane/matrix_multiply/config.json
@@ -0,0 +1,50 @@
+{
+    "DESIGN_NAME": "matrix_multiply",
+    "DESIGN_IS_CORE": 0,
+    "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/matrix_multiply.v"],
+    "CLOCK_PERIOD": 30,
+    "CLOCK_PORT": "clk",
+    "CLOCK_NET": "clk",
+    "FP_SIZING": "absolute",
+    "DIE_AREA": "0 0 400 400",
+    "FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
+    "PL_BASIC_PLACEMENT": 0,
+    "PL_TARGET_DENSITY": 0.45,
+    "VDD_NETS": ["vccd1"],
+    "GND_NETS": ["vssd1"],
+    "DIODE_INSERTION_STRATEGY": 4,
+    "RUN_CVC": 0,
+    "PL_RESIZER_HOLD_MAX_BUFFER_PERCENT": 80,
+	"PL_RESIZER_HOLD_SLACK_MARGIN": 0.8,
+	"GLB_RESIZER_HOLD_MAX_BUFFER_PERCENT": 80,
+	"GLB_RESIZER_HOLD_SLACK_MARGIN": 0.8,
+    "pdk::sky130*": {
+        "FP_CORE_UTIL": 45,
+        "RT_MAX_LAYER": "met4",
+        "scl::sky130_fd_sc_hd": {
+            "CLOCK_PERIOD": 30
+        },
+        "scl::sky130_fd_sc_hdll": {
+            "CLOCK_PERIOD": 20
+        },
+        "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
+        
+    }
+}
diff --git a/openlane/matrix_multiply/pin_order.cfg b/openlane/matrix_multiply/pin_order.cfg
new file mode 100644
index 0000000..9af1ddd
--- /dev/null
+++ b/openlane/matrix_multiply/pin_order.cfg
@@ -0,0 +1,13 @@
+
+#S
+in.*
+ou.*
+clken
+rst
+#N
+io_.*
+reset.*
+execute.*
+clk.*
+sel_.*
+