cleanups and using hs/ms diodes in openlane
- modified openlane configs to include the diodes of hs and ms
- better formatting in the output LEFs
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*"