cleanup according to the reviews
- moved the script to sky130/custom/scripts
- removed the vnb/vpb fix since it's comming soon to the skywater repo
diff --git a/common/fix_missing_lef.py b/common/fix_missing_lef.py
deleted file mode 100644
index f63c68e..0000000
--- a/common/fix_missing_lef.py
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env python3
-
-from os import path
-import argparse
-import subprocess
-
-parser = argparse.ArgumentParser(
- 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')
-
-parser.add_argument('--modify_hs_ms_diodes', '-mhmd',action='store_true', default=False,
- help="modifies the hs and ms diode information.")
-
-parser.add_argument('--modify_vnb_vpb', '-mvv',action='store_true', default=False,
- help="modifies the vnb and vpb of all cells in all libraries.")
-
-
-args = parser.parse_args()
-skywater_path = args.skywater_path
-modify_hs_ms_diodes = args.modify_hs_ms_diodes
-modify_vnb_vpb = args.modify_vnb_vpb
-
-libraries = ['sky130_fd_sc_hd','sky130_fd_sc_hdll','sky130_fd_sc_hs','sky130_fd_sc_ms','sky130_fd_sc_ls']
-
-if modify_vnb_vpb:
- for lib in libraries:
- 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\\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\\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\\n DIRECTION INOUT ;\\n USE GROUND ;/g' {lef} ".format(
- lef= skywater_path+"/"+lib+"/*/cells/*/*.magic.lef"
- )
- print(modify_vnb_result_cmd)
- subprocess.call([modify_vnb_result_cmd], shell=True)
-
-if modify_hs_ms_diodes:
- hs_lef = str(skywater_path)+"/sky130_fd_sc_hs/latest/cells/diode/sky130_fd_sc_hs__diode_2.magic.lef"
-
- hs_lef_FileOpener = open(hs_lef, "r")
- if(path.exists(hs_lef)):
- if hs_lef_FileOpener.mode == 'r':
- 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("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()
-
-
- ms_lef = str(skywater_path)+"/sky130_fd_sc_ms/latest/cells/diode/sky130_fd_sc_ms__diode_2.magic.lef"
-
- ms_lef_FileOpener = open(ms_lef, "r")
- if(path.exists(ms_lef)):
- if ms_lef_FileOpener.mode == 'r':
- 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("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/Makefile.in b/sky130/Makefile.in
index 82237d0..9f7ff4e 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -358,7 +358,7 @@
vendor-a:
# Modify the LEF files to update hs and ms libraries
- python3 ../common/fix_missing_lef.py --modify_hs_ms_diodes --modify_vnb_vpb --skywater_path ${SKYWATER_PATH}
+ python3 ./custom/scripts/fix_missing_diodes_lef.py --skywater_path ${SKYWATER_PATH}
# Install device subcircuits from vendor files
${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
-ngspice sky130_fd_pr/latest/models/* \
diff --git a/sky130/custom/scripts/fix_missing_diodes_lef.py b/sky130/custom/scripts/fix_missing_diodes_lef.py
new file mode 100644
index 0000000..4702b40
--- /dev/null
+++ b/sky130/custom/scripts/fix_missing_diodes_lef.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+
+from os import path
+import argparse
+import subprocess
+
+parser = argparse.ArgumentParser(
+ description='This file fixes the missing diode information from the LEF files of the ms and hs')
+
+parser.add_argument('--skywater_path', '-sp',required=True,
+ help='skywater path')
+
+
+args = parser.parse_args()
+skywater_path = args.skywater_path
+
+
+hs_lef = str(skywater_path)+"/sky130_fd_sc_hs/latest/cells/diode/sky130_fd_sc_hs__diode_2.magic.lef"
+
+hs_lef_FileOpener = open(hs_lef, "r")
+if(path.exists(hs_lef)):
+ if hs_lef_FileOpener.mode == 'r':
+ 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("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()
+
+
+ms_lef = str(skywater_path)+"/sky130_fd_sc_ms/latest/cells/diode/sky130_fd_sc_ms__diode_2.magic.lef"
+
+ms_lef_FileOpener = open(ms_lef, "r")
+if(path.exists(ms_lef)):
+ if ms_lef_FileOpener.mode == 'r':
+ 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("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()