Replaced all the "s8" references in the custom seal ring generator scripts to "sky130".
diff --git a/VERSION b/VERSION index 46354d7..b649b91 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.52 +1.0.53
diff --git a/sky130/custom/scripts/seal_ring_generator/s8_gen_sealring.py b/sky130/custom/scripts/run_drc.py similarity index 100% rename from sky130/custom/scripts/seal_ring_generator/s8_gen_sealring.py rename to sky130/custom/scripts/run_drc.py
diff --git a/sky130/custom/scripts/seal_ring_generator/README b/sky130/custom/scripts/seal_ring_generator/README index af48894..fff8902 100644 --- a/sky130/custom/scripts/seal_ring_generator/README +++ b/sky130/custom/scripts/seal_ring_generator/README
@@ -1,24 +1,24 @@ -# This directory contains a seal ring generator for SkyWater s8 using magic. -# Because the seal ring contains many layers that do not appear in standard -# layout editing, they are all specially implemented in the s8seal_ring.tech -# file in this directory. +# This directory contains a seal ring generator for the Googl/SkyWater +# sky130 PDK using magic. Because the seal ring contains many layers that +# do not appear in standard layout editing, they are all specially implemented +# in the sky130seal_ring.tech file in this directory. # # An example seal ring was generated by SkyWater and imported using magic's # gdsquery.sh script. It was then hand-edited to contain only the bottom # quarter. Then it was saved in .mag databases. # -# The generator script s8_gen_sealring.py calls magic using the s8seal_ring.tech -# file, and automatically modifies the geometry to stretch to the half width -# and height of the specified dimensions. Then the lower-left cells are -# copied and folded over the centerline to make the complete seal ring. -# The seal ring is then written out in GDS format. Then a simplified magic -# view is generated in the usual user-facing s8 technology file, with the -# GDS_FILE property pointing to the seal ring GDS. This layout and GDS can -# then be imported into a layout. +# The generator script sky130_gen_sealring.py calls magic using the +# sky130seal_ring.tech file, and automatically modifies the geometry to +# stretch to the half width and height of the specified dimensions. Then +# the lower-left cells are copied and folded over the centerline to make +# the complete seal ring. The seal ring is then written out in GDS format. +# Then a simplified magic view is generated in the usual user-facing +# sky130 technology file, with the GDS_FILE property pointing to the seal +# ring GDS. This layout and GDS can then be imported into a layout. # # Usage: # -# s8_gen_sealring.py width height target_dir [-force] [-outer] +# sky130_gen_sealring.py width height target_dir [-force] [-outer] # # Where: # width = the full-chip layout width
diff --git a/sky130/custom/scripts/seal_ring_generator/generate_gds.tcl b/sky130/custom/scripts/seal_ring_generator/generate_gds.tcl index 9aedf7b..eda12e0 100644 --- a/sky130/custom/scripts/seal_ring_generator/generate_gds.tcl +++ b/sky130/custom/scripts/seal_ring_generator/generate_gds.tcl
@@ -1,5 +1,5 @@ # Tcl script input to magic to generate seal ring GDS -tech load s8seal_ring -noprompt +tech load sky130seal_ring -noprompt drc off load advSeal_6um_gen select top cell
diff --git a/sky130/custom/scripts/seal_ring_generator/nikon_sealring_shape.mag b/sky130/custom/scripts/seal_ring_generator/nikon_sealring_shape.mag index caf7cc9..ecffd92 100644 --- a/sky130/custom/scripts/seal_ring_generator/nikon_sealring_shape.mag +++ b/sky130/custom/scripts/seal_ring_generator/nikon_sealring_shape.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << checkpaint >> rect 0 0 400 400
diff --git a/sky130/custom/scripts/seal_ring_generator/seal_ring_corner.mag b/sky130/custom/scripts/seal_ring_generator/seal_ring_corner.mag index e15ffc8..25de9fc 100644 --- a/sky130/custom/scripts/seal_ring_generator/seal_ring_corner.mag +++ b/sky130/custom/scripts/seal_ring_generator/seal_ring_corner.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584562315 << type81_52 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/seal_ring_slots_array.mag b/sky130/custom/scripts/seal_ring_generator/seal_ring_slots_array.mag index f38f77c..0330c8b 100644 --- a/sky130/custom/scripts/seal_ring_generator/seal_ring_slots_array.mag +++ b/sky130/custom/scripts/seal_ring_generator/seal_ring_slots_array.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584629764 use sealring_slots sealring_slots_Y
diff --git a/sky130/custom/scripts/seal_ring_generator/sealring_slots.mag b/sky130/custom/scripts/seal_ring_generator/sealring_slots.mag index c3ee669..972bb26 100644 --- a/sky130/custom/scripts/seal_ring_generator/sealring_slots.mag +++ b/sky130/custom/scripts/seal_ring_generator/sealring_slots.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584628639 << checkpaint >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py b/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py new file mode 100755 index 0000000..ff0cdbd --- /dev/null +++ b/sky130/custom/scripts/seal_ring_generator/sky130_gen_sealring.py
@@ -0,0 +1,350 @@ +#!/bin/env python3 +#------------------------------------------------------------------------- +# sky130_gen_sealring.py --- a seal ring generator for the Google/SkyWater +# sky130 PDK using magic. +# +# Because the seal ring contains many layers that do not appear in standard +# layout editing, they are all specially implemented in the sky130seal_ring.tech +# file in this directory. +# +# An example seal ring was generated by SkyWater and imported using magic's +# gdsquery.sh script. It was then hand-edited to contain only the bottom +# quarter. Then it was saved in .mag databases. +# +# The generator script sky130_gen_sealring.py calls magic using the +# sky130seal_ring.tech file, and automatically modifies the geometry to +# stretch to the half width and height of the specified dimensions. Then +# the lower-left cells are copied and folded over the centerline to make +# the complete seal ring. The seal ring is then written out in GDS format. +# Then a simplified magic view is generated in the usual user-facing sky130 +# technology file, with the GDS_FILE property pointing to the seal ring GDS. +# This layout and GDS can then be imported into a layout. +# +# Usage: +# +# sky130_gen_sealring.py width height target_dir [-force] [-outer] [-keep] +# +# Where: +# width = the full-chip layout width +# height = the full-chip layout height +# target_dir = location of the full-chip layout +# +# -force = overwrite any existing files at the target +# -outer = width and height are the seal ring outer edge, not the chip area +# -keep = keep local working directory of results +# +# Results: +# Files advSeal_6um_gen.mag and advSeal_6um_gen.gds are generated and placed in +# target_dir. advSeal_6um_gen.mag is an "abstract" view that represents the +# seal ring in diffusion and the nikon cross in metal1, and references +# the advSeal_6um_gen.gds file in the same directory as a GDS_FILE property. +#------------------------------------------------------------------------- + +import subprocess +import shutil +import sys +import os +import re + +def generate_sealring(width, height, target_dir, force, keep): + + # All files of interest are listed below. + + script = 'generate_gds.tcl' + tech = 'sky130seal_ring.tech' + corner = 'seal_ring_corner.mag' + abstract = 'seal_ring_corner_abstract.mag' + slots = 'sealring_slots.mag' + array = 'seal_ring_slots_array.mag' + nikon = 'nikon_sealring_shape.mag' + polygons = ['sr_polygon00007.mag', + 'sr_polygon00027.mag', 'sr_polygon00011.mag', 'sr_polygon00028.mag', + 'sr_polygon00001.mag', 'sr_polygon00015.mag', 'sr_polygon00031.mag', + 'sr_polygon00002.mag', 'sr_polygon00016.mag', 'sr_polygon00032.mag', + 'sr_polygon00003.mag', 'sr_polygon00019.mag', 'sr_polygon00035.mag', + 'sr_polygon00004.mag', 'sr_polygon00020.mag', 'sr_polygon00036.mag', + 'sr_polygon00005.mag', 'sr_polygon00023.mag', 'sr_polygon00039.mag', + 'sr_polygon00006.mag', 'sr_polygon00024.mag'] + + + # Create temporary directory + if os.path.exists('temp'): + print('temp/ directory exists. Please remove it before running.') + sys.exit(0) + + os.makedirs('temp') + os.chdir('temp') + + # Copy all .mag files, .magicrc file, and sky130seal_ring.tech file to temp/ + files_to_copy = polygons[:] + files_to_copy.append(nikon) + files_to_copy.append(slots) + files_to_copy.append(array) + files_to_copy.append(corner) + files_to_copy.append(abstract) + files_to_copy.append(tech) + files_to_copy.append(script) + + for file in files_to_copy: + shutil.copy('../' + file, '.') + + # Seal ring is placed 6um outside of the chip, so add 12um to width and height + fwidth = float(width) + 12 + fheight = float(height) + 12 + + dbhwidth = int(fwidth * 100) + dbhheight = int(fheight * 100) + + swidth = str(dbhwidth) + sheight = str(dbhheight) + + swidthx5 = str(dbhwidth * 5) + + dwidth = str(int(fwidth * 200)) + dheight = str(int(fheight * 200)) + + # Modify every polygon to half width and height + + for file in polygons: + with open(file, 'r') as ifile: + maglines = ifile.read().splitlines() + + with open(file, 'w') as ofile: + for line in maglines: + newline = re.sub('51200', swidth, line) + newline = re.sub('51210', sheight, newline) + # NOTE: polygon 39 is at scale 10, not 2, due to + # corner positions of 45 degree angled geometry. + newline = re.sub('256000', swidthx5, newline) + print(newline, file=ofile) + + # Abstract corner view gets the same treatment + + qwidth = str(int(fwidth * 50)) + qheight = str(int(fheight * 50)) + + with open(abstract, 'r') as ifile: + maglines = ifile.read().splitlines() + + with open(abstract, 'w') as ofile: + for line in maglines: + newline = re.sub('25600', qwidth, line) + newline = re.sub('25605', qheight, newline) + print(newline, file=ofile) + + # Slots arrays are recalculated to span the width and height + + with open(array, 'r') as ifile: + maglines = ifile.read().splitlines() + + slotsX = False + with open(array, 'w') as ofile: + for line in maglines: + newline = line + if 'slots_X' in line: + slotsX = True + elif 'array 0' in line: + if slotsX: + nslots = int((fwidth - 25.0) / 25.0) - 1 + newline = 'array 0 ' + str(nslots) + ' 5000 0 0 430' + else: + nslots = int((fheight - 25.0) / 25.0) - 1 + newline = 'array 0 ' + str(nslots) + ' 5000 0 0 430' + + print(newline, file=ofile) + + # Corner cell changes bounding boxes to half width and height. + + with open(corner, 'r') as ifile: + maglines = ifile.read().splitlines() + + slotsX = False + with open(corner, 'w') as ofile: + for line in maglines: + newline = re.sub('51200', swidth, line) + newline = re.sub('51210', sheight, newline) + print(newline, file=ofile) + + # Create a new top-level layout called 'advSeal_6um_gen.mag' + # Mirrors uses in X and Y, and adds slots arrays at lower left + # and upper right + + with open('advSeal_6um_gen.mag', 'w') as ofile: + print('magic', file=ofile) + print('tech sky130seal_ring', file=ofile) + print('magscale 1 2', file=ofile) + print('timestamp 1584630000', file=ofile) + + # Lower left original + print('use seal_ring_corner seal_ring_corner_0', file=ofile) + print('timestamp 1584562315', file=ofile) + print('transform 1 0 0 0 1 0', file=ofile) + print('box -30480 -30480 ' + swidth + ' ' + sheight, file=ofile) + + # Mirrored in X + print('use seal_ring_corner seal_ring_corner_3', file=ofile) + print('timestamp 1584562315', file=ofile) + print('transform -1 0 ' + dwidth + ' 0 1 0', file=ofile) + print('box -30480 -30480 ' + swidth + ' ' + sheight, file=ofile) + + # Mirrored in Y + print('use seal_ring_corner seal_ring_corner_1', file=ofile) + print('timestamp 1584562315', file=ofile) + print('transform 1 0 0 0 -1 ' + dheight, file=ofile) + print('box -30480 -30480 ' + swidth + ' ' + sheight, file=ofile) + + # Mirrored in both X and Y + print('use seal_ring_corner seal_ring_corner_2', file=ofile) + print('timestamp 1584562315', file=ofile) + print('transform -1 0 ' + dwidth + ' 0 -1 ' + dheight, file=ofile) + print('box -30480 -30480 ' + swidth + ' ' + sheight, file=ofile) + + # Lower left slot arrays (bottom and left sides slots) + print('use seal_ring_slots_array seal_ring_slots_array_0', file=ofile) + print('timestamp 1584629764', file=ofile) + print('transform 1 0 0 0 1 0', file=ofile) + print('box 285 285 ' + swidth + ' ' + sheight, file=ofile) + + # Upper right slot arrays (top and right sides slots) + print('use seal_ring_slots_array seal_ring_slots_array_1', file=ofile) + print('timestamp 1584629764', file=ofile) + print('transform -1 0 ' + dwidth + ' 0 -1 ' + dheight, file=ofile) + print('box 285 285 ' + swidth + ' ' + sheight, file=ofile) + + print('<< end >>', file=ofile) + + # Create a new abstract layout TO BE called 'advSeal_6um_gen.mag' + # This is the view in technology EFS8A. Since there is already + # a cell with this name that is used to generate GDS, the cell + # will be called "seal_ring.mag" and copied to "advSeal_6um_gen.mag" + # in the target directory. + + xwidth = str(dbhwidth) + xheight = str(dbhheight) + + with open('seal_ring.mag', 'w') as ofile: + print('magic', file=ofile) + print('tech EFS8A', file=ofile) + print('timestamp 1584566829', file=ofile) + + # Lower left original + print('use seal_ring_corner_abstract seal_ring_corner_abstract_0', file=ofile) + print('timestamp 1584566221', file=ofile) + print('transform 1 0 0 0 1 0', file=ofile) + print('box 0 0 ' + qwidth + ' ' + qheight, file=ofile) + + # Mirrored in X + print('use seal_ring_corner_abstract seal_ring_corner_abstract_3', file=ofile) + print('timestamp 1584566221', file=ofile) + print('transform -1 0 ' + xwidth + ' 0 1 0', file=ofile) + print('box 0 0 ' + qwidth + ' ' + qheight, file=ofile) + + # Mirrored in Y + print('use seal_ring_corner_abstract seal_ring_corner_abstract_1', file=ofile) + print('timestamp 1584566221', file=ofile) + print('transform 1 0 0 0 -1 ' + xheight, file=ofile) + print('box 0 0 ' + qwidth + ' ' + qheight, file=ofile) + + # Mirrored in both X and Y + print('use seal_ring_corner_abstract seal_ring_corner_abstract_2', file=ofile) + print('timestamp 1584566221', file=ofile) + print('transform -1 0 ' + xwidth + ' 0 -1 ' + xheight, file=ofile) + print('box 0 0 ' + qwidth + ' ' + qheight, file=ofile) + + print('<< properties >>', file=ofile) + print('string LEFview no_prefix', file=ofile) + print('string GDS_FILE advSeal_6um_gen.gds', file=ofile) + print('string GDS_START 0', file=ofile) + print('string FIXED_BBOX 0 0 ' + swidth + ' ' + sheight, file=ofile) + + print('<< end >>', file=ofile) + + # Create the GDS of the seal ring + + mproc = subprocess.run(['magic', '-dnull', '-noconsole', + 'generate_gds.tcl'], + stdin = subprocess.DEVNULL, stdout = subprocess.PIPE, + stderr = subprocess.PIPE, universal_newlines = True) + if mproc.stdout: + for line in mproc.stdout.splitlines(): + print(line) + if mproc.stderr: + print('Error message output from magic:') + for line in mproc.stderr.splitlines(): + print(line) + if mproc.returncode != 0: + print('ERROR: Magic exited with status ' + str(mproc.returncode)) + + # Copy the GDS file and the abstract view to the target directory + + os.chdir('..') + + if not os.path.exists(target_dir): + os.makedirs(target_dir) + + print('Installing files to ' + target_dir) + if force or not os.path.exists(target_dir + '/advSeal_6um_gen.gds'): + shutil.copy('temp/advSeal_6um_gen.gds', target_dir) + else: + print('ERROR: advSeal_6um_gen.gds already exists at target! Use -force to overwrite.') + if force or not os.path.exists(target_dir + '/advSeal_6um_gen.mag'): + shutil.copy('temp/seal_ring.mag', target_dir + '/advSeal_6um_gen.mag') + else: + print('ERROR: advSeal_6um_gen.mag already exists at target! Use -force to overwrite.') + if force or not os.path.exists(target_dir + '/seal_ring_corner_abstract.mag'): + shutil.copy('temp/seal_ring_corner_abstract.mag', target_dir) + else: + print('ERROR: seal_ring_corner_abstract.mag already exists at target! Use -force to overwrite.') + + # Remove the temporary directory and its contents + + if not keep: + shutil.rmtree('temp') + else: + print('Retaining generated files in temp/ directory') + + # Done! + print('Done generating files advSeal_6um_gen.gds and advSeal_6um_gen.mag in ' + target_dir) + print('Place the seal ring cell in the final layout at (0um, 0um) before generating GDS.') + print('The top level layout minus seal ring must have a lower left corner of (6um, 6um)') + +# If called as main, run generate_sealring() + +if __name__ == '__main__': + + # Divide up command line into options and arguments + options = [] + arguments = [] + for item in sys.argv[1:]: + if item.find('-', 0) == 0: + options.append(item) + else: + arguments.append(item) + + force = True if '-force' in options else False + keep = True if '-keep' in options else False + outer = True if '-outer' in options else False + + # Need one argument: path to verilog netlist + # If two arguments, then 2nd argument is the output file. + + if len(arguments) == 3: + width = arguments[0] + height = arguments[1] + target_dir = arguments[2] + + # Seal ring is 12um thick, so if "outer" option is used, subtract 12um + # from both width and height. + if outer: + width = str(float(width) - 12.0) + height = str(float(height) - 12.0) + + generate_sealring(width, height, target_dir, force, keep) + else: + print("Usage: sky130_gen_sealring.py <width> <height> <target_dir> [options]") + print("Options:") + print(" -outer : Width and height are seal ring outer edge, not chip area") + print(" -force : Overwrite any existing files at <target_dir>") + print(" -keep : Keep generated files in temp/ directory") + +
diff --git a/sky130/custom/scripts/seal_ring_generator/s8seal_ring.tech b/sky130/custom/scripts/seal_ring_generator/sky130seal_ring.tech similarity index 98% rename from sky130/custom/scripts/seal_ring_generator/s8seal_ring.tech rename to sky130/custom/scripts/seal_ring_generator/sky130seal_ring.tech index e5d37f3..8b3ad58 100644 --- a/sky130/custom/scripts/seal_ring_generator/s8seal_ring.tech +++ b/sky130/custom/scripts/seal_ring_generator/sky130seal_ring.tech
@@ -1,11 +1,11 @@ tech 30 - s8seal_ring + sky130seal_ring end version version 0.0 - description "Auto-generated techfile for unknown GDS read-in" + description "Auto-generated techfile for sky130 seal ring GDS read-in" end planes
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00001.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00001.mag index e7c32b8..c1784bc 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00001.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00001.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type48 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00002.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00002.mag index 51355fa..f0542e6 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00002.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00002.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type25 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00003.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00003.mag index 7c2dd29..2043db2 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00003.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00003.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type20 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00004.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00004.mag index 7721108..80a8750 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00004.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00004.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type39 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00005.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00005.mag index 27e8081..6093018 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00005.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00005.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type11 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00006.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00006.mag index 8b44cb9..c3a13f6 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00006.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00006.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type49 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00007.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00007.mag index 89547c6..4ede940 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00007.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00007.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring timestamp 1584558468 << type37 >> tri 0 283 117 400 se
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00011.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00011.mag index 47854ae..f26a866 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00011.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00011.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 10 timestamp 1584558468 << type81_51 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00015.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00015.mag index d91c7fb..a6afa05 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00015.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00015.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558468 << type37 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00016.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00016.mag index 7aa89fc..1e405f6 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00016.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00016.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00019.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00019.mag index b316735..9418687 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00019.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00019.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00020.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00020.mag index 9e328f8..b62281c 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00020.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00020.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00023.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00023.mag index fe8335d..2a4ec4b 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00023.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00023.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00024.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00024.mag index eb9f364..efde77f 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00024.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00024.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00027.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00027.mag index c6d2ad1..1223830 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00027.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00027.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00028.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00028.mag index 3db918a..95c27cd 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00028.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00028.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00031.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00031.mag index 1eb8648..e9b327e 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00031.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00031.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type65_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00032.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00032.mag index 395db17..87b2f9a 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00032.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00032.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type61_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00035.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00035.mag index 934e4e1..a113b26 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00035.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00035.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type61_20 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00036.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00036.mag index 7e944a4..5d64185 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00036.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00036.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 2 timestamp 1584558827 << type81_1 >>
diff --git a/sky130/custom/scripts/seal_ring_generator/sr_polygon00039.mag b/sky130/custom/scripts/seal_ring_generator/sr_polygon00039.mag index 24dfe83..4fb6f27 100644 --- a/sky130/custom/scripts/seal_ring_generator/sr_polygon00039.mag +++ b/sky130/custom/scripts/seal_ring_generator/sr_polygon00039.mag
@@ -1,5 +1,5 @@ magic -tech s8seal_ring +tech sky130seal_ring magscale 1 10 timestamp 1584558827 << type81_1 >>