diff --git a/common/fix_missing_lef.py b/common/fix_missing_lef.py
index f38fc15..f63c68e 100644
--- a/common/fix_missing_lef.py
+++ b/common/fix_missing_lef.py
@@ -5,7 +5,7 @@
 import subprocess
 
 parser = argparse.ArgumentParser(
-    description='This file fixes the missing')
+    description='This file fixes the missing information from the LEF files of the cells')
 
 parser.add_argument('--skywater_path', '-sp',required=True,
                     help='skywater path')
@@ -26,25 +26,25 @@
 
 if modify_vnb_vpb:
     for lib in libraries:
-        revert_modify_vpb_result_cmd = "sed -i 's/PIN VPB\\nDIRECTION INOUT ;\\nUSE POWER ;/PIN VPB/g' {lef} ".format(
+        revert_modify_vpb_result_cmd = "sed -i 's/PIN VPB\\n    DIRECTION INOUT ;\\n    USE POWER ;/PIN VPB/g' {lef} ".format(
             lef= skywater_path+"/"+lib+"/*/cells/*/*.magic.lef"
             )
         print(revert_modify_vpb_result_cmd)
         subprocess.call([revert_modify_vpb_result_cmd], shell=True)
         
-        modify_vpb_result_cmd = "sed -i 's/PIN VPB/PIN VPB\\nDIRECTION INOUT ;\\nUSE POWER ;/g' {lef} ".format(
+        modify_vpb_result_cmd = "sed -i 's/PIN VPB/PIN VPB\\n    DIRECTION INOUT ;\\n    USE POWER ;/g' {lef} ".format(
             lef= skywater_path+"/"+lib+"/*/cells/*/*.magic.lef"
             )
         print(modify_vpb_result_cmd)
         subprocess.call([modify_vpb_result_cmd], shell=True)
 
-        revert_modify_vnb_result_cmd = "sed -i 's/PIN VNB\\nDIRECTION INOUT ;\\nUSE GROUND ;/PIN VNB/g' {lef} ".format(
+        revert_modify_vnb_result_cmd = "sed -i 's/PIN VNB\\n    DIRECTION INOUT ;\\n    USE GROUND ;/PIN VNB/g' {lef} ".format(
             lef= skywater_path+"/"+lib+"/*/cells/*/*.magic.lef"
             )
         print(revert_modify_vnb_result_cmd)
         subprocess.call([revert_modify_vnb_result_cmd], shell=True)
         
-        modify_vnb_result_cmd = "sed -i 's/PIN VNB/PIN VNB\\nDIRECTION INOUT ;\\nUSE GROUND ;/g' {lef} ".format(
+        modify_vnb_result_cmd = "sed -i 's/PIN VNB/PIN VNB\\n    DIRECTION INOUT ;\\n    USE GROUND ;/g' {lef} ".format(
             lef= skywater_path+"/"+lib+"/*/cells/*/*.magic.lef"
             )
         print(modify_vnb_result_cmd)
@@ -59,10 +59,8 @@
             hs_lef_Content = hs_lef_FileOpener.read()
         hs_lef_FileOpener.close()
         hs_lef_Content = hs_lef_Content.replace("CLASS BLOCK","CLASS CORE ANTENNACELL")
-        if hs_lef_Content.find("SYMMETRY X Y ;") == -1:
-            hs_lef_Content = hs_lef_Content.replace("MACRO sky130_fd_sc_hs__diode_2","MACRO sky130_fd_sc_hs__diode_2\nSYMMETRY X Y ;\nSITE unit ;\n")
-        if hs_lef_Content.find("PIN DIODE\nDIRECTION INPUT ;") == -1:
-            hs_lef_Content = hs_lef_Content.replace("PIN DIODE","PIN DIODE\nDIRECTION INPUT ;\nUSE SIGNAL ;\n")
+        if hs_lef_Content.find("PIN DIODE\n    DIRECTION INPUT ;") == -1:
+            hs_lef_Content = hs_lef_Content.replace("PIN DIODE","SYMMETRY X Y ;\n  SITE unit ;\n  PIN DIODE\n    DIRECTION INPUT ;\n    USE SIGNAL ;")
         hs_lef_FileOpener = open(hs_lef,"w")
         hs_lef_FileOpener.write(hs_lef_Content)
         hs_lef_FileOpener.close()
@@ -76,10 +74,8 @@
             ms_lef_Content = ms_lef_FileOpener.read()
         ms_lef_FileOpener.close()
         ms_lef_Content = ms_lef_Content.replace("CLASS BLOCK","CLASS CORE ANTENNACELL")
-        if ms_lef_Content.find("SYMMETRY X Y ;") == -1:
-            ms_lef_Content = ms_lef_Content.replace("MACRO sky130_fd_sc_ms__diode_2","MACRO sky130_fd_sc_ms__diode_2\nSYMMETRY X Y ;\nSITE unit ;\n")
-        if ms_lef_Content.find("PIN DIODE\nDIRECTION INPUT ;") == -1:
-            ms_lef_Content = ms_lef_Content.replace("PIN DIODE","PIN DIODE\nDIRECTION INPUT ;\nUSE SIGNAL ;\n")
+        if ms_lef_Content.find("PIN DIODE\n    DIRECTION INPUT ;") == -1:
+            ms_lef_Content = ms_lef_Content.replace("PIN DIODE","SYMMETRY X Y ;\n  SITE unit ;\n  PIN DIODE\n    DIRECTION INPUT ;\n    USE SIGNAL ;")
         ms_lef_FileOpener = open(ms_lef,"w")
         ms_lef_FileOpener.write(ms_lef_Content)
         ms_lef_FileOpener.close()
diff --git a/sky130/openlane/sky130_fd_sc_hs/config.tcl b/sky130/openlane/sky130_fd_sc_hs/config.tcl
index cbf48b3..6d1b9ba 100755
--- a/sky130/openlane/sky130_fd_sc_hs/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_hs/config.tcl
@@ -45,10 +45,8 @@
 set ::env(DECAP_CELL) "sky130_fd_sc_hs__decap_"
 
 # Diode insertaion
-set ::env(DIODE_CELL) ""
-set ::env(FAKEDIODE_CELL) ""
-set ::env(DIODE_CELL_PIN) ""
-set ::env(DIODE_INSERTION_STRATEGY) 0
+set ::env(DIODE_CELL) "sky130_fd_sc_hs__diode_2"
+set ::env(DIODE_CELL_PIN) "DIODE"
 
 set ::env(CELL_PAD) 8
 set ::env(CELL_PAD_EXCLUDE) "sky130_fd_sc_hs__tap* sky130_fd_sc_hs__decap* sky130_fd_sc_hs__fill*"
diff --git a/sky130/openlane/sky130_fd_sc_ms/config.tcl b/sky130/openlane/sky130_fd_sc_ms/config.tcl
index a41b28d..7b00a53 100755
--- a/sky130/openlane/sky130_fd_sc_ms/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_ms/config.tcl
@@ -46,10 +46,8 @@
 set ::env(RE_BUFFER_CELL) "sky130_fd_sc_ms__buf_4"
 
 # Diode insertaion
-set ::env(DIODE_CELL) ""
-set ::env(FAKEDIODE_CELL) ""
-set ::env(DIODE_CELL_PIN) ""
-set ::env(DIODE_INSERTION_STRATEGY) 0 
+set ::env(DIODE_CELL) "sky130_fd_sc_ms__diode_2"
+set ::env(DIODE_CELL_PIN) "DIODE"
 
 set ::env(CELL_PAD) 8
 set ::env(CELL_PAD_EXCLUDE) "$::env(STD_CELL_LIBRARY)__tap* $::env(STD_CELL_LIBRARY)__decap* $::env(STD_CELL_LIBRARY)__fill*"
