Made a number of changes to the foundry_install script to allow LEF annotation
to be used in conjunction with the "compile" or "compile-only" options,
indicating that the LEF file sources should only be used to annotate the cells
in magic, and that the LEF views generated from magic should then be used to
compile a LEF library. The Makefile was modified to use this method for the
sky130_fd_io library. Abstract views that had been staged in the custom area
as a workaround were removed.
diff --git a/common/foundry_install.py b/common/foundry_install.py
index 80e5c64..457483c 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -658,7 +658,8 @@
for option in optionlist[:]:
if option[0] == 'lef':
- have_lef = True
+ have_lefanno = True if 'annotate' in option or 'anno' in option else False
+ have_lef = True if not have_lefanno else False
if option[0] == 'techlef' or option[0] == 'techLEF':
have_techlef = True
elif option[0] == 'gds':
@@ -684,6 +685,9 @@
# Diagnostic
print("Install option: " + str(option[0]))
+ if option[0] == 'lef' and have_lefanno:
+ print("LEF files used for annotation only. Temporary install.")
+
# For ef_format: always make techlef -> techLEF and spice -> spi
if ef_format:
@@ -747,17 +751,6 @@
else:
print('Sorting files with script ' + sortscript)
- # 'anno' may be specified for LEF, in which case the LEF is used only
- # to annotate GDS and is not itself installed; this allows LEF to
- # be generated from Magic and avoids quirky use of obstruction layers.
- have_lefanno = True if 'annotate' in option or 'anno' in option else False
- if have_lefanno:
- if option[0] != 'lef':
- print("Warning: 'annotate' option specified outside of -lef. Ignoring.")
- else:
- # Mark as NOT having LEF since we want to use it only for annotation.
- have_lef = False
-
# For each library, create the library subdirectory
for library in libraries:
if len(library) == 3:
@@ -1058,6 +1051,8 @@
no_gds_convert = False
no_lef_convert = False
cdl_compile_only = False
+ lef_compile = False
+ lef_compile_only = False
cdl_exclude = []
lef_exclude = []
@@ -1105,10 +1100,18 @@
lef_reflib = '/libs.priv/'
# If CDL is marked 'compile-only' then CDL should only convert the
- # compiled file to SPICE if conversion is needed.
+ # compiled file to SPICE if conversion is needed. If LEF is marked
+ # 'compile' or 'compile-only' in annotate mode, then create a LEF
+ # library from magic LEF output.
+
if 'compile-only' in option:
if option[0] == 'cdl':
cdl_compile_only = True
+ elif option[0] == 'lef':
+ lef_compile_only = True
+ elif 'compile' in option:
+ if option[0] == 'lef':
+ lef_compile = True
# Find exclude list for any option
for item in option:
@@ -1137,7 +1140,6 @@
else:
tcllines = list(tclscript)
-
if have_gds and not no_gds_convert:
print("Migrating GDS files to layout.")
@@ -1288,10 +1290,7 @@
else:
# Use LEF files to set the port properties
if have_lefanno or have_lef:
- if have_lefanno:
- lefdirname = 'lefanno'
- else:
- lefdirname = 'lef'
+ lefdirname = 'lef'
# Find LEF file names in the source
if ef_format:
@@ -1303,7 +1302,20 @@
leffiles = os.listdir(lefsrclibdir)
leffiles = list(item for item in leffiles if os.path.splitext(item)[1] == '.lef')
- print('puts stdout "Annotating cells from LEF"', file=ofile)
+ if len(leffiles) > 0:
+ lefnames = list(os.path.split(item)[1] for item in leffiles)
+ notlefnames = []
+ for exclude in lef_exclude:
+ notlefnames.extend(fnmatch.filter(lefnames, exclude))
+
+ # Apply exclude list
+ if len(notlefnames) > 0:
+ for file in leffiles[:]:
+ if os.path.split(file)[1] in notlefnames:
+ leffiles.remove(file)
+
+ if len(leffiles) > 0:
+ print('puts stdout "Annotating cells from LEF"', file=ofile)
for leffile in leffiles:
print('lef read ' + lefsrclibdir + '/' + leffile, file=ofile)
@@ -1333,17 +1345,17 @@
if have_lefanno:
# Find LEF file names in the source
if ef_format:
- lefsrcdir = targetdir + lef_reflib + 'lefanno'
+ lefsrcdir = targetdir + lef_reflib + 'lef'
lefsrclibdir = lefsrcdir + '/' + destlib
else:
- lefsrcdir = targetdir + lef_reflib + destlib + '/lefanno'
+ lefsrcdir = targetdir + lef_reflib + destlib + '/lef'
lefsrclibdir = lefsrcdir
leffiles = os.listdir(lefsrclibdir)
leffiles = list(item for item in leffiles if os.path.splitext(item)[1] == '.lef')
# Get list of abstract views to make from LEF macros
for leffile in leffiles:
- with open(leffile, 'r') as ifile:
+ with open(lefsrclibdir + '/' + leffile, 'r') as ifile:
ltext = ifile.read()
llines = ltext.splitlines()
for lline in llines:
@@ -1467,13 +1479,18 @@
# write procedure, but we still need the pin use and class
# information from the LEF file, and maybe the bounding box.
+
+ # For annotation, the LEF file output will overwrite the
+ # original source LEF file.
+ lefdest = lefsrclibdir + '/' if have_lefanno else ''
+
for leffile in leffiles:
if have_lefanno:
print('lef read ' + lefsrclibdir + '/' + leffile, file=ofile)
for lefmacro in lefmacros:
print('if {[cellname list exists ' + lefmacro + '] != 0} {', file=ofile)
print(' load ' + lefmacro, file=ofile)
- print(' lef write ' + lefmacro + ' -hide', file=ofile)
+ print(' lef write ' + lefdest + lefmacro + ' -hide', file=ofile)
print('}', file=ofile)
print('puts stdout "Done."', file=ofile)
@@ -1498,63 +1515,9 @@
if mproc.returncode != 0:
print('ERROR: Magic exited with status ' + str(mproc.returncode))
- if not have_lef:
- print('No LEF file install; need to generate LEF.')
- # Remove the lefanno/ target and its contents.
- if have_lefanno:
- if ef_format:
- lefannosrcdir = targetdir + lef_reflib + 'lefanno'
- else:
- lefannosrcdir = targetdir + lef_reflib + destlib + '/lefanno'
- if os.path.isdir(lefannosrcdir):
- shutil.rmtree(lefannosrcdir)
-
- if ef_format:
- destlefdir = targetdir + lef_reflib + 'lef'
- destleflibdir = destlefdir + '/' + destlib
- else:
- destlefdir = targetdir + lef_reflib + destlib + '/lef'
- destleflibdir = destlefdir
-
- os.makedirs(destleflibdir, exist_ok=True)
- leflist = os.listdir(destlibdir)
- leflist = list(item for item in leflist if os.path.splitext(item)[1] == '.lef')
-
- # All macros will go into one file
- destleflib = destleflibdir + '/' + destlib + '.lef'
- # Remove any existing library file from the target directory
- if os.path.isfile(destleflib):
- print('Removing existing library ' + destleflib)
- os.remove(destleflib)
-
- first = True
- with open(destleflib, 'w') as ofile:
- for leffile in leflist:
- # Remove any existing single file from the target directory
- if os.path.isfile(destleflibdir + '/' + leffile):
- print('Removing ' + destleflibdir + '/' + leffile)
- os.remove(destleflibdir + '/' + leffile)
-
- # Append contents
- sourcelef = destlibdir + '/' + leffile
- with open(sourcelef, 'r') as ifile:
- leflines = ifile.read().splitlines()
- if not first:
- # Remove header from all but the first file
- leflines = leflines[8:]
- else:
- first = False
-
- for line in leflines:
- print(line, file=ofile)
-
- # Remove file from the source directory
- print('Removing source file ' + sourcelef)
- os.remove(sourcelef)
-
- # Set have_lef now that LEF files were made, so they
- # can be used to generate the maglef/ databases.
- have_lef = True
+ # Set have_lef now that LEF files were made, so they
+ # can be used to generate the maglef/ databases.
+ have_lef = True
elif not have_mag_8_2:
print('The installer is not able to run magic.')
@@ -1562,6 +1525,14 @@
print("Master PDK magic startup file not found. Did you install")
print("PDK tech files before PDK vendor files?")
+ if have_lefanno:
+ # LEF files were used for annotation. If "compile" or "compile-only"
+ # was also passed as an option, then build the LEF library now from
+ # the LEF output from magic.
+ print("Compiling LEF library from magic output.")
+ if lef_compile or lef_compile_only:
+ create_lef_library(lefsrclibdir, destlib, lef_compile_only, lef_exclude)
+
if have_lef and not no_lef_convert:
print("Migrating LEF files to layout.")
if ef_format:
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 5a00f22..b7b19f9 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -909,7 +909,8 @@
${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
-cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
sort=custom/scripts/sort_pdkfiles.py \
- -lef %l/latest/cells/*/*.lef anno compile-only \
+ -lef %l/latest/cells/*/*.lef annotate compile-only \
+ exclude=*.magic.lef,sky130_ef_io.lef \
sort=custom/scripts/sort_pdkfiles.py \
-doc %l/latest/cells/*/*.pdf \
-lib %l/latest/timing/*.lib \
diff --git a/sky130/custom/scripts/inc_verilog.py b/sky130/custom/scripts/inc_verilog.py
index aebce3e..e607193 100755
--- a/sky130/custom/scripts/inc_verilog.py
+++ b/sky130/custom/scripts/inc_verilog.py
@@ -47,18 +47,6 @@
# NOTE: These files are assumed not to need in-line
# includes, but includes of primitives need to be ignored.
- # Quick hack: Remove this when the filenames are corrected
- if not os.path.exists(inpath + '/' + incfilename):
- print('Detected incorrect filename')
- print(' Old filename was: ' + incfilename)
- dlist = incfilename.split('.')
- ilist = dlist[0:-3]
- ilist.append(dlist[-2])
- ilist.append(dlist[-3])
- ilist.append(dlist[-1])
- print(' New filename is: ' + incfilename)
- incfilename = '.'.join(ilist)
-
with open(inpath + '/' + incfilename, 'r') as incfile:
v2text = incfile.read()
v2lines = v2text.splitlines()
diff --git a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_gpio_ovtv2.lef b/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_gpio_ovtv2.lef
deleted file mode 100644
index 579dc09..0000000
--- a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_gpio_ovtv2.lef
+++ /dev/null
@@ -1,561 +0,0 @@
-MACRO sky130_fd_io__top_gpio_ovtv2
- CLASS PAD ;
- FOREIGN sky130_fd_io__top_gpio_ovtv2 ;
- ORIGIN 0.400 0.735 ;
- SIZE 141.455 BY 201.490 ;
- PIN VSSIO_Q
- PORT
- LAYER met5 ;
- RECT 138.730 58.335 140.000 62.585 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 58.335 1.270 62.585 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 58.235 140.000 62.685 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 58.235 1.270 62.685 ;
- END
- END VSSIO_Q
- PIN VSWITCH
- PORT
- LAYER met5 ;
- RECT 138.730 31.985 140.000 35.235 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 31.985 1.270 35.235 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 31.885 140.000 35.335 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 31.885 1.270 35.335 ;
- END
- END VSWITCH
- PIN VSSIO
- PORT
- LAYER met5 ;
- RECT 138.730 25.935 140.000 30.385 ;
- END
- PORT
- LAYER met5 ;
- RECT 138.730 175.785 140.000 200.000 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 25.935 1.270 30.385 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 175.785 1.365 200.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 175.785 140.000 200.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 25.835 140.000 30.485 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 175.785 1.365 200.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 25.835 1.270 30.485 ;
- END
- END VSSIO
- PIN VSSD
- PORT
- LAYER met5 ;
- RECT 138.730 41.685 140.000 46.135 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 41.685 1.270 46.135 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 41.585 140.000 46.235 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 41.585 1.270 46.235 ;
- END
- END VSSD
- PIN VSSA
- PORT
- LAYER met5 ;
- RECT 138.730 36.840 140.000 40.085 ;
- END
- PORT
- LAYER met5 ;
- RECT 138.730 47.735 140.000 56.735 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 36.840 1.270 40.085 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 47.735 2.040 56.735 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 51.645 140.000 52.825 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 47.735 140.000 48.065 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 56.405 140.000 56.735 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 36.735 140.000 40.185 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 51.645 2.040 52.825 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 47.735 1.270 48.065 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 56.405 1.270 56.735 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 36.735 1.270 40.185 ;
- END
- END VSSA
- PIN VDDIO_Q
- PORT
- LAYER met5 ;
- RECT 138.730 64.185 140.000 68.435 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 64.185 1.270 68.435 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 64.085 140.000 68.535 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 64.085 1.270 68.535 ;
- END
- END VDDIO_Q
- PIN VDDIO
- PORT
- LAYER met5 ;
- RECT 138.730 70.035 140.000 94.985 ;
- END
- PORT
- LAYER met5 ;
- RECT 138.730 19.885 140.000 24.335 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 70.035 1.270 94.985 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 19.885 1.270 24.335 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 19.785 140.000 24.435 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 70.035 140.000 95.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 19.785 1.270 24.435 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 70.035 1.270 95.000 ;
- END
- END VDDIO
- PIN VDDA
- PORT
- LAYER met5 ;
- RECT 139.035 15.035 140.000 18.285 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 15.035 0.965 18.285 ;
- END
- PORT
- LAYER met4 ;
- RECT 139.035 14.935 140.000 18.385 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 14.935 0.965 18.385 ;
- END
- END VDDA
- PIN VCCHIB
- PORT
- LAYER met5 ;
- RECT 138.730 2.135 140.000 7.385 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 2.135 1.270 7.385 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 2.035 140.000 7.485 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 2.035 1.270 7.485 ;
- END
- END VCCHIB
- PIN VCCD
- PORT
- LAYER met5 ;
- RECT 138.730 8.985 140.000 13.435 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 8.985 1.270 13.435 ;
- END
- PORT
- LAYER met4 ;
- RECT 138.730 8.885 140.000 13.535 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 8.885 1.270 13.535 ;
- END
- END VCCD
- PIN PAD
- PORT
- LAYER met5 ;
- RECT 17.930 117.530 86.325 162.905 ;
- END
- END PAD
- PIN AMUXBUS_A
- PORT
- LAYER met4 ;
- RECT 48.930 53.125 140.000 56.105 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 53.125 38.675 56.105 ;
- END
- END AMUXBUS_A
- PIN AMUXBUS_B
- PORT
- LAYER met4 ;
- RECT 99.710 48.365 140.000 51.345 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 48.365 85.865 51.345 ;
- END
- END AMUXBUS_B
- PIN DM[0]
- PORT
- LAYER met3 ;
- RECT 129.125 0.000 129.455 20.955 ;
- END
- END DM[0]
- PIN DM[1]
- PORT
- LAYER met3 ;
- RECT 128.275 0.000 128.605 20.180 ;
- END
- END DM[1]
- PIN DM[2]
- PORT
- LAYER met3 ;
- RECT 108.395 0.000 108.725 20.640 ;
- END
- END DM[2]
- PIN INP_DIS
- PORT
- LAYER met3 ;
- RECT 107.545 0.000 107.875 8.060 ;
- END
- END INP_DIS
- PIN VTRIP_SEL
- PORT
- LAYER met3 ;
- RECT 87.665 0.000 87.995 20.980 ;
- END
- END VTRIP_SEL
- PIN IB_MODE_SEL[0]
- PORT
- LAYER met3 ;
- RECT 86.815 0.000 87.145 20.980 ;
- END
- END IB_MODE_SEL[0]
- PIN IB_MODE_SEL[1]
- PORT
- LAYER met3 ;
- RECT 66.935 0.000 67.265 20.980 ;
- END
- END IB_MODE_SEL[1]
- PIN SLEW_CTL[0]
- PORT
- LAYER met3 ;
- RECT 66.085 0.000 66.415 20.980 ;
- END
- END SLEW_CTL[0]
- PIN SLEW_CTL[1]
- PORT
- LAYER met3 ;
- RECT 46.205 0.000 46.535 20.980 ;
- END
- END SLEW_CTL[1]
- PIN HYS_TRIM
- PORT
- LAYER met3 ;
- RECT 45.355 0.000 45.685 8.060 ;
- END
- END HYS_TRIM
- PIN HLD_OVR
- PORT
- LAYER met3 ;
- RECT 27.355 0.000 27.685 14.055 ;
- END
- END HLD_OVR
- PIN ENABLE_H
- PORT
- LAYER met3 ;
- RECT 22.135 0.000 22.465 30.150 ;
- END
- END ENABLE_H
- PIN HLD_H_N
- PORT
- LAYER met3 ;
- RECT 19.635 0.000 19.965 17.985 ;
- END
- END HLD_H_N
- PIN ENABLE_VDDA_H
- PORT
- LAYER met3 ;
- RECT 8.770 0.000 9.100 7.915 ;
- END
- END ENABLE_VDDA_H
- PIN ANALOG_EN
- PORT
- LAYER met3 ;
- RECT 8.115 0.000 8.445 14.070 ;
- END
- END ANALOG_EN
- PIN ENABLE_INP_H
- PORT
- LAYER met3 ;
- RECT 7.110 0.000 7.440 0.670 ;
- END
- END ENABLE_INP_H
- PIN IN
- PORT
- LAYER met3 ;
- RECT 20.380 0.000 20.710 11.310 ;
- END
- END IN
- PIN IN_H
- PORT
- LAYER met3 ;
- RECT 24.380 0.000 24.710 0.940 ;
- END
- END IN_H
- PIN VINREF
- PORT
- LAYER met3 ;
- RECT 44.035 0.000 44.365 4.885 ;
- END
- END VINREF
- PIN OUT
- PORT
- LAYER met3 ;
- RECT 74.125 0.000 74.455 14.865 ;
- END
- END OUT
- PIN ANALOG_POL
- PORT
- LAYER met3 ;
- RECT 65.235 0.000 65.565 1.165 ;
- END
- END ANALOG_POL
- PIN ANALOG_SEL
- PORT
- LAYER met3 ;
- RECT 51.655 0.000 51.985 8.060 ;
- END
- END ANALOG_SEL
- PIN SLOW
- PORT
- LAYER met3 ;
- RECT 125.140 0.000 125.470 11.965 ;
- END
- END SLOW
- PIN OE_N
- PORT
- LAYER met3 ;
- RECT 124.445 0.000 124.775 8.060 ;
- END
- END OE_N
- PIN TIE_HI_ESD
- PORT
- LAYER met3 ;
- RECT 129.975 0.000 130.305 61.655 ;
- END
- END TIE_HI_ESD
- PIN TIE_LO_ESD
- PORT
- LAYER met3 ;
- RECT 115.290 0.000 115.890 39.035 ;
- END
- END TIE_LO_ESD
- PIN PAD_A_ESD_0_H
- PORT
- LAYER met3 ;
- RECT 1.600 0.000 2.200 5.470 ;
- END
- END PAD_A_ESD_0_H
- PIN PAD_A_ESD_1_H
- PORT
- LAYER met3 ;
- RECT 0.330 0.000 0.930 71.380 ;
- END
- END PAD_A_ESD_1_H
- PIN PAD_A_NOESD_H
- PORT
- LAYER met3 ;
- RECT 2.885 0.000 3.485 5.900 ;
- END
- END PAD_A_NOESD_H
- PIN ENABLE_VSWITCH_H
- PORT
- LAYER met3 ;
- RECT 5.765 0.000 6.365 12.470 ;
- END
- END ENABLE_VSWITCH_H
- PIN ENABLE_VDDIO
- PORT
- LAYER met3 ;
- RECT 95.845 0.000 96.215 20.755 ;
- END
- END ENABLE_VDDIO
- OBS
- LAYER nwell ;
- RECT -0.400 10.495 11.880 11.925 ;
- RECT -0.400 1.430 1.030 10.495 ;
- RECT -0.400 0.000 11.880 1.430 ;
- LAYER li1 ;
- RECT 0.230 0.200 140.475 199.780 ;
- LAYER met1 ;
- RECT 0.080 0.000 140.475 199.810 ;
- LAYER met2 ;
- RECT 0.080 0.000 140.325 199.955 ;
- LAYER met3 ;
- RECT 0.330 71.780 140.000 199.715 ;
- RECT 1.330 62.055 140.000 71.780 ;
- RECT 1.330 39.435 129.575 62.055 ;
- RECT 1.330 30.550 114.890 39.435 ;
- RECT 1.330 18.385 21.735 30.550 ;
- RECT 1.330 14.470 19.235 18.385 ;
- RECT 1.330 12.870 7.715 14.470 ;
- RECT 1.330 6.300 5.365 12.870 ;
- RECT 1.330 5.870 2.485 6.300 ;
- RECT 3.885 0.000 5.365 6.300 ;
- RECT 6.765 1.070 7.715 12.870 ;
- RECT 8.845 8.315 19.235 14.470 ;
- RECT 20.365 11.710 21.735 18.385 ;
- RECT 9.500 0.000 19.235 8.315 ;
- RECT 21.110 0.000 21.735 11.710 ;
- RECT 22.865 21.380 114.890 30.550 ;
- RECT 22.865 14.455 45.805 21.380 ;
- RECT 22.865 1.340 26.955 14.455 ;
- RECT 22.865 0.000 23.980 1.340 ;
- RECT 25.110 0.000 26.955 1.340 ;
- RECT 28.085 8.460 45.805 14.455 ;
- RECT 46.935 8.460 65.685 21.380 ;
- RECT 28.085 5.285 44.955 8.460 ;
- RECT 28.085 0.000 43.635 5.285 ;
- RECT 44.765 0.000 44.955 5.285 ;
- RECT 46.935 0.000 51.255 8.460 ;
- RECT 52.385 1.565 65.685 8.460 ;
- RECT 67.665 15.265 86.415 21.380 ;
- RECT 52.385 0.000 64.835 1.565 ;
- RECT 67.665 0.000 73.725 15.265 ;
- RECT 74.855 0.000 86.415 15.265 ;
- RECT 88.395 21.155 114.890 21.380 ;
- RECT 88.395 0.000 95.445 21.155 ;
- RECT 96.615 21.040 114.890 21.155 ;
- RECT 96.615 8.460 107.995 21.040 ;
- RECT 96.615 0.000 107.145 8.460 ;
- RECT 109.125 0.000 114.890 21.040 ;
- RECT 116.290 21.355 129.575 39.435 ;
- RECT 116.290 20.580 128.725 21.355 ;
- RECT 116.290 12.365 127.875 20.580 ;
- RECT 116.290 8.460 124.740 12.365 ;
- RECT 116.290 0.000 124.045 8.460 ;
- RECT 125.870 0.000 127.875 12.365 ;
- RECT 130.705 0.000 140.000 62.055 ;
- LAYER met4 ;
- RECT 1.765 175.385 138.330 200.000 ;
- RECT 0.965 95.400 139.035 175.385 ;
- RECT 1.670 69.635 138.330 95.400 ;
- RECT 0.965 68.935 139.035 69.635 ;
- RECT 1.670 63.685 138.330 68.935 ;
- RECT 0.965 63.085 139.035 63.685 ;
- RECT 1.670 57.835 138.330 63.085 ;
- RECT 0.965 57.135 139.035 57.835 ;
- RECT 39.075 52.725 48.530 56.005 ;
- RECT 2.440 51.745 138.330 52.725 ;
- RECT 86.265 48.465 99.310 51.745 ;
- RECT 0.965 46.635 139.035 47.335 ;
- RECT 1.670 41.185 138.330 46.635 ;
- RECT 0.965 40.585 139.035 41.185 ;
- RECT 1.670 36.335 138.330 40.585 ;
- RECT 0.965 35.735 139.035 36.335 ;
- RECT 1.670 31.485 138.330 35.735 ;
- RECT 0.965 30.885 139.035 31.485 ;
- RECT 1.670 25.435 138.330 30.885 ;
- RECT 0.965 24.835 139.035 25.435 ;
- RECT 1.670 19.385 138.330 24.835 ;
- RECT 0.965 18.785 139.035 19.385 ;
- RECT 1.365 14.535 138.635 18.785 ;
- RECT 0.965 13.935 139.035 14.535 ;
- RECT 1.670 8.485 138.330 13.935 ;
- RECT 0.965 7.885 139.035 8.485 ;
- RECT 1.670 1.635 138.330 7.885 ;
- RECT 0.965 1.160 139.035 1.635 ;
- LAYER met5 ;
- RECT 2.965 174.185 137.130 200.000 ;
- RECT 0.000 164.505 140.000 174.185 ;
- RECT 0.000 115.930 16.330 164.505 ;
- RECT 87.925 115.930 140.000 164.505 ;
- RECT 0.000 96.585 140.000 115.930 ;
- RECT 2.870 58.335 137.130 96.585 ;
- RECT 3.640 46.135 137.130 58.335 ;
- RECT 2.870 18.285 137.130 46.135 ;
- RECT 2.565 15.035 137.435 18.285 ;
- RECT 2.870 2.135 137.130 15.035 ;
- END
-END sky130_fd_io__top_gpio_ovtv2
-END LIBRARY
-
diff --git a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_xres4v2.lef b/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_xres4v2.lef
deleted file mode 100644
index 03fcde4..0000000
--- a/sky130/custom/sky130_fd_io/lef/sky130_fd_io__top_xres4v2.lef
+++ /dev/null
@@ -1,477 +0,0 @@
-MACRO sky130_fd_io__top_xres4v2
- CLASS PAD ;
- FOREIGN sky130_fd_io__top_xres4v2 ;
- ORIGIN 0.515 0.000 ;
- SIZE 76.135 BY 200.000 ;
- PIN PAD_A_ESD_H
- PORT
- LAYER met3 ;
- RECT 17.245 0.000 18.910 0.565 ;
- END
- PORT
- LAYER met2 ;
- RECT 17.245 0.000 18.910 0.565 ;
- END
- END PAD_A_ESD_H
- PIN XRES_H_N
- PORT
- LAYER met3 ;
- RECT 28.935 0.000 29.665 0.330 ;
- END
- PORT
- LAYER met2 ;
- RECT 28.935 0.000 29.665 0.330 ;
- END
- END XRES_H_N
- PIN FILT_IN_H
- PORT
- LAYER met3 ;
- RECT 20.075 0.000 21.225 1.410 ;
- END
- PORT
- LAYER met2 ;
- RECT 20.075 0.000 21.225 1.410 ;
- END
- END FILT_IN_H
- PIN ENABLE_VDDIO
- PORT
- LAYER met3 ;
- RECT 8.400 0.000 8.920 0.330 ;
- END
- PORT
- LAYER met2 ;
- RECT 8.425 0.000 8.895 0.330 ;
- END
- END ENABLE_VDDIO
- PIN TIE_WEAK_HI_H
- PORT
- LAYER met3 ;
- RECT 72.190 0.000 73.260 0.330 ;
- END
- PORT
- LAYER met2 ;
- RECT 72.215 0.000 73.235 0.330 ;
- END
- END TIE_WEAK_HI_H
- PIN ENABLE_H
- PORT
- LAYER met2 ;
- RECT 12.285 0.000 12.545 0.330 ;
- END
- PORT
- LAYER met1 ;
- RECT 12.285 0.000 12.545 0.330 ;
- END
- END ENABLE_H
- PIN PULLUP_H
- PORT
- LAYER met2 ;
- RECT 14.555 0.000 15.135 0.330 ;
- END
- PORT
- LAYER met1 ;
- RECT 14.555 0.000 15.135 0.330 ;
- END
- END PULLUP_H
- PIN EN_VDDIO_SIG_H
- PORT
- LAYER met2 ;
- RECT 22.360 0.000 22.660 0.330 ;
- END
- PORT
- LAYER met1 ;
- RECT 22.360 0.000 22.660 0.330 ;
- END
- END EN_VDDIO_SIG_H
- PIN TIE_LO_ESD
- PORT
- LAYER met2 ;
- RECT 27.580 0.000 28.230 0.330 ;
- END
- PORT
- LAYER met1 ;
- RECT 27.580 0.000 28.230 0.330 ;
- END
- END TIE_LO_ESD
- PIN TIE_HI_ESD
- PORT
- LAYER met2 ;
- RECT 30.505 0.000 31.155 0.330 ;
- END
- PORT
- LAYER met1 ;
- RECT 30.505 0.000 31.155 0.330 ;
- END
- END TIE_HI_ESD
- PIN DISABLE_PULLUP_H
- PORT
- LAYER met2 ;
- RECT 32.760 0.000 33.020 0.330 ;
- END
- PORT
- LAYER met1 ;
- RECT 32.760 0.000 33.020 0.330 ;
- END
- END DISABLE_PULLUP_H
- PIN INP_SEL_H
- PORT
- LAYER met1 ;
- RECT 24.905 0.000 25.135 9.975 ;
- END
- END INP_SEL_H
- PIN VSSIO
- PORT
- LAYER met4 ;
- RECT 0.000 175.785 1.270 200.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 73.730 25.835 75.000 30.485 ;
- END
- PORT
- LAYER met4 ;
- RECT 73.730 175.785 75.000 200.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 25.835 1.270 30.485 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 175.785 1.270 200.000 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 25.935 75.000 30.385 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 175.785 75.000 200.000 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 25.935 1.270 30.385 ;
- END
- END VSSIO
- PIN VSSA
- PORT
- LAYER met4 ;
- RECT 73.730 36.735 75.000 40.185 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 56.405 75.000 56.735 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 47.735 75.000 48.065 ;
- END
- PORT
- LAYER met4 ;
- RECT 73.730 51.645 75.000 52.825 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 36.735 1.270 40.185 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 56.405 1.270 56.735 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 47.735 1.270 48.065 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 51.645 1.270 52.825 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 47.735 75.000 56.735 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 36.840 75.000 40.085 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 36.840 1.270 40.085 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 47.735 1.270 56.735 ;
- END
- END VSSA
- PIN VSSD
- PORT
- LAYER met4 ;
- RECT 73.730 41.585 75.000 46.235 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 41.585 1.270 46.235 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 41.685 75.000 46.135 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 41.685 1.270 46.135 ;
- END
- END VSSD
- PIN AMUXBUS_B
- PORT
- LAYER met4 ;
- RECT 0.000 48.365 75.000 51.345 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 48.365 1.270 51.345 ;
- END
- END AMUXBUS_B
- PIN AMUXBUS_A
- PORT
- LAYER met4 ;
- RECT 0.000 53.125 75.000 56.105 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 53.125 1.270 56.105 ;
- END
- END AMUXBUS_A
- PIN VDDIO_Q
- PORT
- LAYER met4 ;
- RECT 73.730 64.085 75.000 68.535 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 64.085 1.270 68.535 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 64.185 75.000 68.435 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 64.185 1.270 68.435 ;
- END
- END VDDIO_Q
- PIN VDDIO
- PORT
- LAYER met4 ;
- RECT 73.730 70.035 75.000 95.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 73.730 19.785 75.000 24.435 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 70.035 1.270 95.000 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 19.785 1.270 24.435 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 19.885 75.000 24.335 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 70.035 75.000 94.985 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 70.035 1.270 94.985 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 19.885 1.270 24.335 ;
- END
- END VDDIO
- PIN VSWITCH
- PORT
- LAYER met4 ;
- RECT 73.730 31.885 75.000 35.335 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 31.885 1.270 35.335 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 31.985 75.000 35.235 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 31.985 1.270 35.235 ;
- END
- END VSWITCH
- PIN VDDA
- PORT
- LAYER met4 ;
- RECT 74.035 14.935 75.000 18.385 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 14.935 0.965 18.385 ;
- END
- PORT
- LAYER met5 ;
- RECT 74.035 15.035 75.000 18.285 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 15.035 0.965 18.285 ;
- END
- END VDDA
- PIN VCCD
- PORT
- LAYER met4 ;
- RECT 73.730 8.885 75.000 13.535 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 8.885 1.270 13.535 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 8.985 75.000 13.435 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 8.985 1.270 13.435 ;
- END
- END VCCD
- PIN VCCHIB
- PORT
- LAYER met4 ;
- RECT 73.730 2.035 75.000 7.485 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 2.035 1.270 7.485 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 2.135 75.000 7.385 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 2.135 1.270 7.385 ;
- END
- END VCCHIB
- PIN VSSIO_Q
- PORT
- LAYER met4 ;
- RECT 73.730 58.235 75.000 62.685 ;
- END
- PORT
- LAYER met4 ;
- RECT 0.000 58.235 1.270 62.685 ;
- END
- PORT
- LAYER met5 ;
- RECT 73.730 58.335 75.000 62.585 ;
- END
- PORT
- LAYER met5 ;
- RECT 0.000 58.335 1.270 62.585 ;
- END
- END VSSIO_Q
- PIN PAD
- PORT
- LAYER met5 ;
- RECT 17.250 108.455 54.435 164.285 ;
- END
- END PAD
- OBS
- LAYER nwell ;
- RECT -0.515 168.515 75.620 170.210 ;
- RECT -0.515 146.690 1.675 168.515 ;
- RECT -0.515 144.880 75.620 146.690 ;
- LAYER li1 ;
- RECT -0.265 0.185 75.160 199.220 ;
- LAYER met1 ;
- RECT -0.145 10.255 75.145 199.210 ;
- RECT -0.145 0.610 24.625 10.255 ;
- RECT -0.145 0.185 12.005 0.610 ;
- RECT 12.825 0.185 14.275 0.610 ;
- RECT 15.415 0.185 22.080 0.610 ;
- RECT 22.940 0.185 24.625 0.610 ;
- RECT 25.415 0.610 75.145 10.255 ;
- RECT 25.415 0.185 27.300 0.610 ;
- RECT 28.510 0.185 30.225 0.610 ;
- RECT 31.435 0.185 32.480 0.610 ;
- RECT 33.300 0.185 75.145 0.610 ;
- LAYER met2 ;
- RECT 0.340 1.690 74.915 199.210 ;
- RECT 0.340 0.845 19.795 1.690 ;
- RECT 0.340 0.610 16.965 0.845 ;
- RECT 0.340 0.000 8.145 0.610 ;
- RECT 9.175 0.000 12.005 0.610 ;
- RECT 12.825 0.000 14.275 0.610 ;
- RECT 15.415 0.000 16.965 0.610 ;
- RECT 19.190 0.000 19.795 0.845 ;
- RECT 21.505 0.610 74.915 1.690 ;
- RECT 21.505 0.000 22.080 0.610 ;
- RECT 22.940 0.000 27.300 0.610 ;
- RECT 28.510 0.000 28.655 0.610 ;
- RECT 29.945 0.000 30.225 0.610 ;
- RECT 31.435 0.000 32.480 0.610 ;
- RECT 33.300 0.000 71.935 0.610 ;
- RECT 73.515 0.000 74.915 0.610 ;
- LAYER met3 ;
- RECT 0.965 1.810 74.700 200.000 ;
- RECT 0.965 0.965 19.675 1.810 ;
- RECT 0.965 0.730 16.845 0.965 ;
- RECT 0.965 0.330 8.000 0.730 ;
- RECT 9.320 0.330 16.845 0.730 ;
- RECT 19.310 0.330 19.675 0.965 ;
- RECT 21.625 0.730 74.700 1.810 ;
- RECT 21.625 0.330 28.535 0.730 ;
- RECT 30.065 0.330 71.790 0.730 ;
- RECT 73.660 0.330 74.700 0.730 ;
- LAYER met4 ;
- RECT 1.670 175.385 73.330 200.000 ;
- RECT 0.965 95.400 74.035 175.385 ;
- RECT 1.670 69.635 73.330 95.400 ;
- RECT 0.965 68.935 74.035 69.635 ;
- RECT 1.670 63.685 73.330 68.935 ;
- RECT 0.965 63.085 74.035 63.685 ;
- RECT 1.670 57.835 73.330 63.085 ;
- RECT 0.965 57.135 74.035 57.835 ;
- RECT 1.670 51.745 73.330 52.725 ;
- RECT 0.965 46.635 74.035 47.335 ;
- RECT 1.670 41.185 73.330 46.635 ;
- RECT 0.965 40.585 74.035 41.185 ;
- RECT 1.670 36.335 73.330 40.585 ;
- RECT 0.965 35.735 74.035 36.335 ;
- RECT 1.670 31.485 73.330 35.735 ;
- RECT 0.965 30.885 74.035 31.485 ;
- RECT 1.670 25.435 73.330 30.885 ;
- RECT 0.965 24.835 74.035 25.435 ;
- RECT 1.670 19.385 73.330 24.835 ;
- RECT 0.965 18.785 74.035 19.385 ;
- RECT 1.365 14.535 73.635 18.785 ;
- RECT 0.965 13.935 74.035 14.535 ;
- RECT 1.670 8.485 73.330 13.935 ;
- RECT 0.965 7.885 74.035 8.485 ;
- RECT 1.670 2.035 73.330 7.885 ;
- LAYER met5 ;
- RECT 2.870 174.185 72.130 200.000 ;
- RECT 0.000 165.885 75.000 174.185 ;
- RECT 0.000 106.855 15.650 165.885 ;
- RECT 56.035 106.855 75.000 165.885 ;
- RECT 0.000 96.585 75.000 106.855 ;
- RECT 2.870 18.285 72.130 96.585 ;
- RECT 2.565 15.035 72.435 18.285 ;
- RECT 2.870 2.135 72.130 15.035 ;
- END
-END sky130_fd_io__top_xres4v2
-END LIBRARY
-