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
-