Script now checks if '/tmp' is available instead of 'tmp'
diff --git a/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py b/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py
index 888b484..7e270c1 100755
--- a/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py
+++ b/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py
@@ -53,10 +53,12 @@
def generate_sealring(width, height, target_dir, force, keep):
+ starting_dir=os.getcwd()
+
# Find directory where the script and relevant files exists
abspath = os.path.abspath(__file__)
- dname = os.path.dirname(abspath)
+ script_dir = os.path.dirname(abspath)
# All files of interest are listed below.
@@ -75,29 +77,38 @@
'sr_polygon00004.mag', 'sr_polygon00020.mag', 'sr_polygon00036.mag',
'sr_polygon00005.mag', 'sr_polygon00023.mag', 'sr_polygon00039.mag',
'sr_polygon00006.mag', 'sr_polygon00024.mag']
-
- # Check if working directory is writable
-
- if not os.access(os.getcwd(), os.W_OK):
- print('Write access is not given. Please make sure the working directory is writable.')
- sys.exit(0)
- # Create temporary directory
+ # Tries to create 'temp' directory
- temp_names=['temp','tmp']
- temp_dir=''
-
- for i in temp_names:
- if not os.path.exists(i):
- temp_dir=i
- break
+ temp_dir='temp'
- if temp_dir=='':
- print('The following directories already exist: '+str(temp_names)+'. Please remove one of them before running.')
- sys.exit(0)
+ if os.path.exists('temp'):
+ print('temp/ directory already exists, trying to create /tmp/sky130_sealring...')
+ temp_dir='/tmp/sky130_sealring'
+ else:
+ try:
+ os.makedirs('temp')
+ except:
+ print('Couldn\'t create the temp/ directory, trying to create /tmp/sky130_sealring...')
+ temp_dir='/tmp/sky130_sealring'
+
+ # Tries to create /tmp/sky130_sealring if 'temp' is unavailable
+
+ if temp_dir!='temp':
+ try:
+ if os.path.exists(temp_dir):
+ error='Couldn\'t delete files from /tmp/sky130_sealring'
+ for filename in os.listdir(temp_dir):
+ file_path = os.path.join(temp_dir, filename)
+ os.unlink(file_path)
+ else:
+ error='Couldn\'t create /tmp/sky130_sealring'
+ os.makedirs(temp_dir)
+ except:
+ print(error)
+ sys.exit(1)
- os.makedirs(temp_dir)
os.chdir(temp_dir)
# Copy all .mag files, .magicrc file, and sky130seal_ring.tech file to temp/
@@ -111,7 +122,7 @@
files_to_copy.append(script)
for file in files_to_copy:
- shutil.copy(dname +"/" + file, '.')
+ shutil.copy(script_dir +"/" + file, '.')
# Seal ring is placed 6um outside of the chip, so add 12um to width and height
fwidth = float(width) + 12
@@ -302,7 +313,7 @@
# Copy the GDS file and the abstract view to the target directory
- os.chdir('..')
+ os.chdir(starting_dir)
if not os.path.exists(target_dir):
os.makedirs(target_dir)