diff --git a/VERSION b/VERSION
index c313ca4..d32a2cd 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.541
+1.0.542
diff --git a/common/compare_dirs.py b/common/compare_dirs.py
index 21f8dc6..fa6a1d5 100755
--- a/common/compare_dirs.py
+++ b/common/compare_dirs.py
@@ -5,8 +5,6 @@
 #
 # Compare the format subdirectories of <path> and report on which files do not appear
 # in all of them.  If a directory has no files in it, then it is ignored.
-#
-# NOTE:  This script was not designed for files in the "ef_format" file structure.
 
 import os
 import sys
diff --git a/common/foundry_install.py b/common/foundry_install.py
index 5a53278..33c8c12 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -7,8 +7,6 @@
 # should be a staging area, not a place where files are kept permanently.
 #
 # Options:
-#    -ef_format		Use efabless naming (libs.ref/techLEF),
-#			otherwise use generic naming (libs.tech/lef)
 #    -timestamp <value>	Pass a timestamp to use for stamping GDS and MAG files
 #    -clean		Clear out and remove target directory before starting
 #    -source <path>	Path to source data top level directory
@@ -58,13 +56,11 @@
 # 	-liberty x/y/z/PVT_*/*.lib
 #
 # would install all .lib files directly into libs.ref/<libname>/liberty/*.lib
-# (if "-ef_format" option specified, then: libs.ref/<libname>/liberty/*.lib)
 # while
 #
 # 	-liberty x/y/z/PVT_*/*.lib up=1
 #
 # would install all .lib files into libs.ref/liberty/<libname>/PVT_*/*.lib
-# (if "-ef_format" option specified, then: libs.ref/<libname>/liberty/PVT_*/*.lib)
 #
 # Please note that the INSTALL variable in the Makefile starts with "set -f"
 # to suppress the OS from doing wildcard substitution;  otherwise the
@@ -212,7 +208,6 @@
 def usage():
     print("foundry_install.py [options...]")
     print("   -copy             Copy files from source to target (default)")
-    print("   -ef_format        Use efabless naming conventions for local directories")
     print("   -timestamp <value> Use <value> for timestamping files")
     print("")
     print("   -source <path>    Path to top of source directory tree")
@@ -482,7 +477,7 @@
 # script using the "filter" option.
 #----------------------------------------------------------------------------
 
-def tfilter(targetroot, filterscript, ef_format=False, outfile=[]):
+def tfilter(targetroot, filterscript, outfile=[]):
     filterroot = os.path.split(filterscript)[1]
     if os.path.isfile(targetroot):
         print('   Filtering file ' + targetroot + ' with ' + filterroot)
@@ -494,8 +489,6 @@
             makeuserwritable(outfile)
 
         arguments = [filterscript, targetroot, outfile]
-        if ef_format:
-            arguments.append('-ef_format')
 
         subprocess_run('filter', arguments)
 
@@ -524,7 +517,6 @@
     sourcedir = None
     targetdir = None
 
-    ef_format = False
     do_timestamp = False
     timestamp_value = 0
     do_clean = False
@@ -563,14 +555,13 @@
             optionlist.remove(option)
             libraries.append(option[1:]) 
 
-    # Check for option "ef_format" or "std_format" or "clean"
+    # Check for option "clean" or "timestamp".
     for option in optionlist[:]:
+        #  These options are deprecated.
         if option[0] == 'ef_naming' or option[0] == 'ef_names' or option[0] == 'ef_format':
             optionlist.remove(option)
-            ef_format = True
         elif option[0] == 'std_naming' or option[0] == 'std_names' or option[0] == 'std_format':
             optionlist.remove(option)
-            ef_format = False
         elif option[0] == 'timestamp':
             optionlist.remove(option)
             if len(option) > 1:
@@ -647,12 +638,7 @@
     os.makedirs(targetdir + '/libs.tech', exist_ok=True)
     os.makedirs(targetdir + '/libs.ref', exist_ok=True)
 
-    # Path to magic techfile depends on ef_format
-
-    if ef_format == True:
-        mag_current = '/libs.tech/magic/current/'
-    else:
-        mag_current = '/libs.tech/magic/'
+    mag_current = '/libs.tech/magic/'
 
     # Check for magic version and set flag if it does not exist or if
     # it has the wrong version.
@@ -729,10 +715,7 @@
                     if item.split('=')[0] == 'filter':
                         filter_scripts.append(item.split('=')[1])
 
-                if ef_format:
-                    techlefdir = targetdir + '/libs.ref/' + 'techLEF'
-                else:
-                    techlefdir = targetdir + '/libs.tech/lef'
+                techlefdir = targetdir + '/libs.tech/lef'
 
                 os.makedirs(techlefdir, exist_ok=True)
                 # All techlef files should be copied, so use "glob" on the wildcards
@@ -749,7 +732,7 @@
 
                     for filter_script in filter_scripts:
                         # Apply filter script to all files in the target directory
-                        tfilter(targname, filter_script, ef_format)
+                        tfilter(targname, filter_script)
 
                 optionlist.remove(option)
 
@@ -810,7 +793,7 @@
 
                             for filter_script in filter_scripts:
                                 # Apply filter script to all files in the target directory
-                                tfilter(subtargname, filter_script, ef_format)
+                                tfilter(subtargname, filter_script)
 
                     else:
                         # Remove any existing file
@@ -826,7 +809,7 @@
 
                         for filter_script in filter_scripts:
                             # Apply filter script to all files in the target directory
-                            tfilter(targname, filter_script, ef_format)
+                            tfilter(targname, filter_script)
 
                 optionlist.remove(option)
 
@@ -889,17 +872,6 @@
         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:
-            if option[0] == 'techlef':
-                option[0] = 'techLEF'
-            elif option[0] == 'spice':
-                option[0] = 'spi'
-
-            destdir = targetdir + '/libs.ref/' + option[0]
-            os.makedirs(destdir, exist_ok=True)
-
         # If the option is followed by the keyword "up" and a number, then
         # the source should be copied (or linked) from <number> levels up
         # in the hierarchy (see below).
@@ -995,11 +967,8 @@
             else:
                 destlib = library[1]
 
-            if ef_format:
-                destlibdir = destdir + '/' + destlib
-            else:
-                destdir = targetdir + '/libs.ref/' + destlib + '/' + option[0]
-                destlibdir = destdir
+            destdir = targetdir + '/libs.ref/' + destlib + '/' + option[0]
+            destlibdir = destdir
 
             os.makedirs(destlibdir, exist_ok=True)
 
@@ -1124,7 +1093,7 @@
                 elif option[0] == 'liberty' or option[0] == 'lib':
                     fileext = '.lib'
                 elif option[0] == 'spice' or option[0] == 'spi':
-                    fileext = '.spice' if not ef_format else '.spi'
+                    fileext = '.spice'
                 elif option[0] == 'techlef':
                     fileext = '.lef'
                 else:
@@ -1207,7 +1176,7 @@
 
                 for filter_script in local_filter_scripts:
                     # Apply filter script to all files in the target directory
-                    tfilter(targname, filter_script, ef_format)
+                    tfilter(targname, filter_script)
 
                 destfilelist.append(os.path.split(targname)[1])
 
@@ -1288,7 +1257,7 @@
                     # then compile one, because one does not want to have to have
                     # an include line for every single cell used in a design.
 
-                    spiext = '.spice' if not ef_format else '.spi'
+                    spiext = '.spice'
                     create_spice_library(destlibdir, compname, spiext, do_compile_only, do_stub, excludelist)
 
                 elif option[0] == 'cdl':
@@ -1344,21 +1313,14 @@
             # Diagnostic
             print("Install option: " + str(option[0]))
 
-            if ef_format == True:
-                os.makedirs(targetdir + '/libs.priv', exist_ok=True)
-
             for library in libraries:
                 if len(library) == 3:
                     destlib = library[2]
                 else:
                     destlib = library[1]
 
-                if ef_format:
-                    srclibdir = targetdir + '/libs.ref/' + option[0] + '/' + destlib
-                    destlibdir = targetdir + '/libs.priv/' + option[0] + '/' + destlib
-                else:
-                    srclibdir = targetdir + '/libs.ref/' + destlib + '/' + option[0]
-                    destlibdir = targetdir + '/libs.priv/' + destlib + '/' + option[0]
+                srclibdir = targetdir + '/libs.ref/' + destlib + '/' + option[0]
+                destlibdir = targetdir + '/libs.priv/' + destlib + '/' + option[0]
 
                 if not os.path.exists(destlibdir):
                     os.makedirs(destlibdir)
@@ -1505,15 +1467,6 @@
     if have_gds and not no_gds_convert:
         print("Migrating GDS files to layout.")
 
-        if ef_format:
-            destdir = targetdir + gds_reflib + 'mag'
-            srcdir = targetdir + gds_reflib + 'gds'
-            vdir = targetdir + '/libs.ref/' + 'verilog'
-            cdir = targetdir + cdl_reflib + 'cdl'
-            sdir = targetdir + cdl_reflib + 'spi'
-
-            os.makedirs(destdir, exist_ok=True)
-
         # For each library, create the library subdirectory
         for library in libraries:
             if len(library) == 3:
@@ -1521,23 +1474,16 @@
             else:
                 destlib = library[1]
 
-            if ef_format:
-                destlibdir = destdir + '/' + destlib
-                srclibdir = srcdir + '/' + destlib
-                vlibdir = vdir + '/' + destlib
-                clibdir = cdir + '/' + destlib
-                slibdir = sdir + '/' + destlib
-            else:
-                destdir = targetdir + gds_reflib + destlib + '/mag'
-                srcdir = targetdir + gds_reflib + destlib + '/gds'
-                vdir = targetdir + '/libs.ref/' + destlib + '/verilog'
-                cdir = targetdir + cdl_reflib + destlib + '/cdl'
-                sdir = targetdir + cdl_reflib + destlib + '/spice'
-                destlibdir = destdir
-                srclibdir = srcdir
-                vlibdir = vdir
-                clibdir = cdir
-                slibdir = sdir
+            destdir = targetdir + gds_reflib + destlib + '/mag'
+            srcdir = targetdir + gds_reflib + destlib + '/gds'
+            vdir = targetdir + '/libs.ref/' + destlib + '/verilog'
+            cdir = targetdir + cdl_reflib + destlib + '/cdl'
+            sdir = targetdir + cdl_reflib + destlib + '/spice'
+            destlibdir = destdir
+            srclibdir = srcdir
+            vlibdir = vdir
+            clibdir = cdir
+            slibdir = sdir
 
             os.makedirs(destlibdir, exist_ok=True)
 
@@ -1659,12 +1605,8 @@
                             lefdirname = 'lef'
 
                             # Find LEF file names in the source
-                            if ef_format:
-                                lefsrcdir = targetdir + lef_reflib + lefdirname
-                                lefsrclibdir = lefsrcdir + '/' + destlib
-                            else:
-                                lefsrcdir = targetdir + lef_reflib + destlib + '/' + lefdirname
-                                lefsrclibdir = lefsrcdir
+                            lefsrcdir = targetdir + lef_reflib + destlib + '/' + lefdirname
+                            lefsrclibdir = lefsrcdir
 
                             leffiles = os.listdir(lefsrclibdir)
                             leffiles = list(item for item in leffiles if os.path.splitext(item)[1] == '.lef')
@@ -1710,12 +1652,8 @@
                     lefmacros = []
                     if have_lefanno:
                         # Find LEF file names in the source
-                        if ef_format:
-                            lefsrcdir = targetdir + lef_reflib + 'lef'
-                            lefsrclibdir = lefsrcdir + '/' + destlib
-                        else:
-                            lefsrcdir = targetdir + lef_reflib + destlib + '/lef'
-                            lefsrclibdir = lefsrcdir
+                        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')
@@ -1911,12 +1849,11 @@
 
     if have_lef and not no_lef_convert:
         print("Migrating LEF files to layout.")
-        if ef_format:
-            destdir = targetdir + '/libs.ref/' + 'maglef'
-            srcdir = targetdir + lef_reflib + 'lef'
-            magdir = targetdir + gds_reflib + 'mag'
-            cdldir = targetdir + cdl_reflib + 'cdl'
-            os.makedirs(destdir, exist_ok=True)
+        destdir = targetdir + '/libs.ref/' + 'maglef'
+        srcdir = targetdir + lef_reflib + 'lef'
+        magdir = targetdir + gds_reflib + 'mag'
+        cdldir = targetdir + cdl_reflib + 'cdl'
+        os.makedirs(destdir, exist_ok=True)
 
         # For each library, create the library subdirectory
         for library in libraries:
@@ -1925,27 +1862,19 @@
             else:
                 destlib = library[1]
 
-            if ef_format:
-                destlibdir = destdir + '/' + destlib
-                srclibdir = srcdir + '/' + destlib
-                maglibdir = magdir + '/' + destlib
-                cdllibdir = cdldir + '/' + destlib
-                clibdir = cdir + '/' + destlib
-                slibdir = sdir + '/' + destlib
-            else:
-                destdir = targetdir + '/libs.ref/' + destlib + '/maglef'
-                srcdir = targetdir + lef_reflib + destlib + '/lef'
-                magdir = targetdir + gds_reflib + destlib + '/mag'
-                cdldir = targetdir + cdl_reflib + destlib + '/cdl'
-                cdir = targetdir + cdl_reflib + destlib + '/cdl'
-                sdir = targetdir + cdl_reflib + destlib + '/spice'
+            destdir = targetdir + '/libs.ref/' + destlib + '/maglef'
+            srcdir = targetdir + lef_reflib + destlib + '/lef'
+            magdir = targetdir + gds_reflib + destlib + '/mag'
+            cdldir = targetdir + cdl_reflib + destlib + '/cdl'
+            cdir = targetdir + cdl_reflib + destlib + '/cdl'
+            sdir = targetdir + cdl_reflib + destlib + '/spice'
 
-                destlibdir = destdir
-                srclibdir = srcdir
-                maglibdir = magdir
-                cdllibdir = cdldir
-                clibdir = cdir
-                slibdir = sdir
+            destlibdir = destdir
+            srclibdir = srcdir
+            maglibdir = magdir
+            cdllibdir = cdldir
+            clibdir = cdir
+            slibdir = sdir
 
             os.makedirs(destlibdir, exist_ok=True)
 
@@ -2228,23 +2157,13 @@
     # a form that can be used by ngspice, using the cdl2spi.py script 
 
     if have_spice:
-        if ef_format:
-            if not os.path.isdir(targetdir + cdl_reflib + 'spi'):
-                os.makedirs(targetdir + cdl_reflib + 'spi', exist_ok=True)
+        pass
 
     elif have_cdl and not no_cdl_convert:
-        if ef_format:
-            if not os.path.isdir(targetdir + cdl_reflib + 'spi'):
-                os.makedirs(targetdir + cdl_reflib + 'spi', exist_ok=True)
 
         print("Migrating CDL netlists to SPICE.")
         sys.stdout.flush()
 
-        if ef_format:
-            destdir = targetdir + cdl_reflib + 'spi'
-            srcdir = targetdir + cdl_reflib + 'cdl'
-            os.makedirs(destdir, exist_ok=True)
-
         # For each library, create the library subdirectory
         for library in libraries:
             if len(library) == 3:
@@ -2252,15 +2171,11 @@
             else:
                 destlib = library[1]
 
-            if ef_format:
-                destlibdir = destdir + '/' + destlib
-                srclibdir = srcdir + '/' + destlib
-            else:
-                destdir = targetdir + cdl_reflib + destlib + '/spice'
-                srcdir = targetdir + cdl_reflib + destlib + '/cdl'
+            destdir = targetdir + cdl_reflib + destlib + '/spice'
+            srcdir = targetdir + cdl_reflib + destlib + '/cdl'
 
-                destlibdir = destdir
-                srclibdir = srcdir
+            destlibdir = destdir
+            srclibdir = srcdir
 
             os.makedirs(destlibdir, exist_ok=True)
 
@@ -2282,10 +2197,7 @@
 
             # Run cdl2spi.py script to read in the CDL file and write out SPICE
             for cdlfile in cdlfiles:
-                if ef_format:
-                    spiname = os.path.splitext(cdlfile)[0] + '.spi'
-                else:
-                    spiname = os.path.splitext(cdlfile)[0] + '.spice'
+                spiname = os.path.splitext(cdlfile)[0] + '.spice'
                 procopts = [scriptdir + '/cdl2spi.py', srclibdir + '/' + cdlfile, destlibdir + '/' + spiname]
                 if do_cdl_scaleu:
                     procopts.append('-dscale=u')
@@ -2303,13 +2215,6 @@
         # then the port numbering is arbitrary, and becomes whatever the
         # output of this script makes it.
 
-        if ef_format:
-            destdir = targetdir + cdl_reflib + 'spi'
-            srcdir = targetdir + gds_reflib + 'gds'
-            lefdir = targetdir + lef_reflib + 'lef'
-            cdldir = targetdir + cdl_reflib + 'cdl'
-            os.makedirs(destdir, exist_ok=True)
-
         # For each library, create the library subdirectory
         for library in libraries:
             if len(library) == 3:
@@ -2317,21 +2222,15 @@
             else:
                 destlib = library[1]
 
-            if ef_format:
-                destlibdir = destdir + '/' + destlib
-                srclibdir = srcdir + '/' + destlib
-                leflibdir = lefdir + '/' + destlib
-                cdllibdir = cdldir + '/' + destlib
-            else:
-                destdir = targetdir + cdl_reflib + destlib + '/spice'
-                srcdir = targetdir + gds_reflib + destlib + '/gds'
-                lefdir = targetdir + lef_reflib + destlib + '/lef'
-                cdldir = targetdir + cdl_reflib + destlib + '/cdl'
+            destdir = targetdir + cdl_reflib + destlib + '/spice'
+            srcdir = targetdir + gds_reflib + destlib + '/gds'
+            lefdir = targetdir + lef_reflib + destlib + '/lef'
+            cdldir = targetdir + cdl_reflib + destlib + '/cdl'
 
-                destlibdir = destdir
-                srclibdir = srcdir
-                leflibdir = lefdir
-                cdllibdir = cdldir
+            destlibdir = destdir
+            srclibdir = srcdir
+            leflibdir = lefdir
+            cdllibdir = cdldir
 
             os.makedirs(destlibdir, exist_ok=True)
 
@@ -2475,7 +2374,7 @@
             # create a similar SPICE library of all cells.
 
             if os.path.isfile(allgdslibname):
-                spiext = '.spice' if not ef_format else '.spi'
+                spiext = '.spice'
                 create_spice_library(destlibdir, destlib, spiext, do_compile_only, do_stub, excludelist)
 
     # Remove any files/directories that were marked for removal
diff --git a/common/insert_layer.py b/common/insert_layer.py
index a993882..ce41571 100755
--- a/common/insert_layer.py
+++ b/common/insert_layer.py
@@ -97,8 +97,6 @@
 
     fail = 0
 
-    efformat = True if '-ef_format' in options else False
-
     domag = True
     domaglef = True
     if '-mag' in options and '-maglef' not in options:
@@ -107,10 +105,7 @@
         domag = False
 
     if domag:
-        if efformat:
-            filename = source + '/libs.ref/mag/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             addlayer(filename, layer, geometry)
@@ -120,10 +115,7 @@
         fail += 1
 
     if domaglef:
-        if efformat:
-            filename = source + '/libs.ref/maglef/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             addlayer(filename, layer, geometry)
@@ -134,10 +126,6 @@
 
     if fail == 2:
         print('Error:  No layout file in either mag/ or maglef/', file=sys.stderr)
-        if efformat:
-            print('(' + source + '/libs.ref/mag[lef]/' + libname +
-		    '/' + cellname + '.mag)', file=sys.stderr)
-        else:
-            print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
-		    + cellname + '.mag)', file=sys.stderr)
+        print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
+		+ cellname + '.mag)', file=sys.stderr)
 
diff --git a/common/insert_property.py b/common/insert_property.py
index 53fdba9..e2ad215 100755
--- a/common/insert_property.py
+++ b/common/insert_property.py
@@ -94,8 +94,6 @@
     noupdate = True if '-noupdate' in options else False
     fail = 0
 
-    efformat = True if '-ef_format' in options else False
-
     domag = True
     domaglef = True
     if '-mag' in options and '-maglef' not in options:
@@ -104,10 +102,7 @@
         domag = False
 
     if domag:
-        if efformat:
-            filename = source + '/libs.ref/mag/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             addprop(filename, propstring, noupdate)
@@ -117,10 +112,7 @@
         fail += 1
 
     if domaglef:
-        if efformat:
-            filename = source + '/libs.ref/maglef/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             addprop(filename, propstring, noupdate)
@@ -131,10 +123,6 @@
 
     if fail == 2:
         print('Error:  No layout file in either mag/ or maglef/', file=sys.stderr)
-        if efformat:
-            print('(' + source + '/libs.ref/mag[lef]/' + libname +
-		    '/' + cellname + '.mag)', file=sys.stderr)
-        else:
-            print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
-		    + cellname + '.mag)', file=sys.stderr)
+        print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
+		+ cellname + '.mag)', file=sys.stderr)
 
diff --git a/common/port_order.py b/common/port_order.py
index 2a6c8b3..4338127 100755
--- a/common/port_order.py
+++ b/common/port_order.py
@@ -90,8 +90,6 @@
 
     fail = 0
 
-    efformat = True if '-ef_format' in options else False
-
     domag = True
     domaglef = True
     if '-mag' in options and '-maglef' not in options:
@@ -100,10 +98,7 @@
         domag = False
 
     if domag:
-        if efformat:
-            filename = source + '/libs.ref/mag/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             order_ports(filename, portnames)
@@ -113,10 +108,7 @@
         fail += 1
 
     if domaglef:
-        if efformat:
-            filename = source + '/libs.ref/maglef/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             order_ports(filename, portnames)
@@ -127,10 +119,6 @@
 
     if fail == 2:
         print('Error:  No layout file in either mag/ or maglef/', file=sys.stderr)
-        if efformat:
-            print('(' + source + '/libs.ref/mag[lef]/' + libname +
-		    '/' + cellname + '.mag)', file=sys.stderr)
-        else:
-            print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
-		    + cellname + '.mag)', file=sys.stderr)
+        print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
+		+ cellname + '.mag)', file=sys.stderr)
 
diff --git a/common/remove_label.py b/common/remove_label.py
index 96b81c9..7e988d1 100755
--- a/common/remove_label.py
+++ b/common/remove_label.py
@@ -92,8 +92,6 @@
 
     fail = 0
 
-    efformat = True if '-ef_format' in options else False
-
     domag = True
     domaglef = True
     if '-mag' in options and '-maglef' not in options:
@@ -102,10 +100,7 @@
         domag = False
 
     if domag:
-        if efformat:
-            filename = source + '/libs.ref/mag/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/mag/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             removelabel(filename, text)
@@ -117,10 +112,7 @@
         fail += 1
 
     if domaglef:
-        if efformat:
-            filename = source + '/libs.ref/maglef/' + libname + '/' + cellname + '.mag'
-        else:
-            filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
+        filename = source + '/libs.ref/' + libname + '/maglef/' + cellname + '.mag'
 
         if os.path.isfile(filename):
             removelabel(filename, text)
@@ -133,10 +125,6 @@
 
     if fail == 2:
         print('Error:  No matching layout file in either mag/ or maglef/', file=sys.stderr)
-        if efformat:
-            print('(' + source + '/libs.ref/mag[lef]/' + libname +
-		    '/' + cellname + '.mag)', file=sys.stderr)
-        else:
-            print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
-		    + cellname + '.mag)', file=sys.stderr)
+        print('(' + source + '/libs.ref/' + libname + '/mag[lef]/'
+		+ cellname + '.mag)', file=sys.stderr)
 
diff --git a/common/staging_install.py b/common/staging_install.py
index 936082b..bddbf6e 100755
--- a/common/staging_install.py
+++ b/common/staging_install.py
@@ -58,9 +58,6 @@
 
                      Default "none" (copy all files from source)
 
-  -ef_format         Use efabless naming (libs.ref/techLEF),
-                     otherwise use generic naming (libs.tech/lef)
-
   -verbose           Output more information about the install process.
 
 If <target> is unspecified then <name> is used for the target.
@@ -125,6 +122,8 @@
         return 0
     elif os.path.islink(tooldir):
         return 0
+    elif not os.path.isdir(tooldir):
+        return 0
 
     toolfiles = os.listdir(tooldir)
     total = 0
@@ -268,6 +267,10 @@
         print('Cannot list directory ' + libdir)
         print('Called: replace_all_with_symlinks(' + libdir + ', ' + srclibdir + ', ' + checklibdir + ')')
         return total
+    except NotADirectoryError:
+        print('File entry ' + libdir + ' is not a directory.')
+        print('Called: replace_all_with_symlinks(' + libdir + ', ' + srclibdir + ', ' + checklibdir + ')')
+        return total
 
     try:
         checkfiles = os.listdir(checklibdir)
@@ -275,6 +278,10 @@
         print('Cannot list check directory ' + checklibdir)
         print('Called: replace_all_with_symlinks(' + libdir + ', ' + srclibdir + ', ' + checklibdir + ')')
         return total
+    except NotADirectoryError:
+        print('File entry ' + checklibdir + ' is not a directory.')
+        print('Called: replace_all_with_symlinks(' + libdir + ', ' + srclibdir + ', ' + checklibdir + ')')
+        return total
 
     for libfile in libfiles:
         if libfile in checkfiles:
@@ -319,7 +326,6 @@
     writedir = None  # Directory to write the files to.
     finaldir = None  # Directory files will end up installed to.
 
-    ef_format = False
     do_install = True
 
     # Break arguments into groups where the first word begins with "-".
@@ -339,14 +345,13 @@
     if newopt != []:
         optionlist.append(newopt)
 
-    # Check for option "ef_format" or "std_format"
+    # Check for option "uninstall" or "debug"
     for option in optionlist[:]:
+        # Options "ef_format" or "std_format" are deprecated
         if option[0] == 'ef_naming' or option[0] == 'ef_names' or option[0] == 'ef_format':
             optionlist.remove(option)
-            ef_format = True
         elif option[0] == 'std_naming' or option[0] == 'std_names' or option[0] == 'std_format':
             optionlist.remove(option)
-            ef_format = False
         elif option[0] == 'uninstall':
             optionlist.remove(option)
             do_install = False
@@ -445,12 +450,7 @@
     else:
         has_priv = False
 
-    # Path to magic techfile depends on ef_format
-
-    if ef_format == True:
-        mag_current = '/libs.tech/magic/current/'
-    else:
-        mag_current = '/libs.tech/magic/'
+    mag_current = '/libs.tech/magic/'
 
     # First install everything by direct copy.  Keep the staging files
     # as they will be used to reference the target area to know which
@@ -547,32 +547,17 @@
     if has_priv:
         refdirs.append('/libs.priv/')
 
-    if ef_format:
-        print('Part 2:  Formats')
-        for refdir in refdirs:
+    print('Part 2:  Libraries')
+    for refdir in refdirs:
+        libraries = os.listdir(writedir + refdir)
+        for library in libraries:
+            print('   ' + library)
             for filetype in needcheck:
-                print('   ' + filetype)
-                filedir = writedir + refdir + filetype
-                if os.path.isdir(filedir):
-                    libraries = os.listdir(filedir)
-                    for library in libraries:
-                        libdir = filedir + '/' + library
-                        total = filter_recursive(libdir, stagingdir, localname)
-                        if total > 0:
-                            substr = 'substitutions' if total > 1 else 'substitution'
-                            print('      ' + library + ' (' + str(total) + ' ' + substr + ')')
-    else:
-        print('Part 2:  Libraries')
-        for refdir in refdirs:
-            libraries = os.listdir(writedir + refdir)
-            for library in libraries:
-                print('   ' + library)
-                for filetype in needcheck:
-                    filedir = writedir + refdir + library + '/' + filetype
-                    total = filter_recursive(filedir, stagingdir, localname)
-                    if total > 0:
-                        substr = 'substitutions' if total > 1 else 'substitution'
-                        print('      ' + filetype + ' (' + str(total) + ' ' + substr + ')')
+                filedir = writedir + refdir + library + '/' + filetype
+                total = filter_recursive(filedir, stagingdir, localname)
+                if total > 0:
+                    substr = 'substitutions' if total > 1 else 'substitution'
+                    print('      ' + filetype + ' (' + str(total) + ' ' + substr + ')')
 
     # If "link_from" is "source", then check all files against the source
     # directory, and replace the file with a symbolic link if the file
@@ -583,46 +568,25 @@
     if link_from == 'source':
         print('Replacing files with symbolic links to source where possible.')
         for refdir in refdirs:
-            if ef_format:
-                filedirs = os.listdir(writedir + refdir)
+            libraries = os.listdir(writedir + refdir)
+            for library in libraries:
+                print('   ' + library)
+                filedirs = os.listdir(writedir + refdir + library)
                 for filedir in filedirs:
-                    print('   ' + filedir)
-                    dirpath = writedir + refdir + filedir
-                    if os.path.isdir(dirpath):
-                        libraries = os.listdir(dirpath)
-                        for library in libraries:
-                            libdir = writedir + refdir + filedir + '/' + library
-                            libfiles = os.listdir(libdir)
-                            if 'sources.txt' in libfiles:
-                                libfiles = glob.glob(libdir + '/*')
-                                libfiles.remove(libdir + '/sources.txt')
-                                with open(libdir + '/sources.txt') as ifile:
-                                    sources = ifile.read().splitlines()
-                                sourcelist = make_source_list(sources)
-                                total = replace_with_symlinks(libfiles, sourcelist)
-                                if total > 0:
-                                    symstr = 'symlinks' if total > 1 else 'symlink'
-                                    print('      ' + library + ' (' + str(total) + ' ' + symstr + ')')
-            else:
-                libraries = os.listdir(writedir + refdir)
-                for library in libraries:
-                    print('   ' + library)
-                    filedirs = os.listdir(writedir + refdir + library)
-                    for filedir in filedirs:
-                        libdir = writedir + refdir + library + '/' + filedir
-                        if os.path.isdir(libdir):
-                            libfiles = os.listdir(libdir)
-                            if 'sources.txt' in libfiles:
-                                # List again, but with full paths.
-                                libfiles = glob.glob(libdir + '/*')
-                                libfiles.remove(libdir + '/sources.txt')
-                                with open(libdir + '/sources.txt') as ifile:
-                                    sources = ifile.read().splitlines()
-                                sourcelist = make_source_list(sources)
-                                total = replace_with_symlinks(libfiles, sourcelist)
-                                if total > 0:
-                                    symstr = 'symlinks' if total > 1 else 'symlink'
-                                    print('      ' + filedir + ' (' + str(total) + ' ' + symstr + ')')
+                    libdir = writedir + refdir + library + '/' + filedir
+                    if os.path.isdir(libdir):
+                        libfiles = os.listdir(libdir)
+                        if 'sources.txt' in libfiles:
+                            # List again, but with full paths.
+                            libfiles = glob.glob(libdir + '/*')
+                            libfiles.remove(libdir + '/sources.txt')
+                            with open(libdir + '/sources.txt') as ifile:
+                                sources = ifile.read().splitlines()
+                            sourcelist = make_source_list(sources)
+                            total = replace_with_symlinks(libfiles, sourcelist)
+                            if total > 0:
+                                symstr = 'symlinks' if total > 1 else 'symlink'
+                                print('      ' + filedir + ' (' + str(total) + ' ' + symstr + ')')
 
     # Otherwise, if "link_from" is another PDK, then check all files against
     # the files in the other PDK, and replace the file with a symbolic link
@@ -637,42 +601,22 @@
             print('Replacing files with symbolic links to ' + link_from + ' where possible.')
 
             for refdir in refdirs:
-                if ef_format:
-                    filedirs = os.listdir(writedir + refdir)
+                libraries = os.listdir(writedir + refdir)
+                for library in libraries:
+                    print('   ' + library)
+                    filedirs = os.listdir(writedir + refdir + library)
                     for filedir in filedirs:
-                        print('   ' + filedir)
-                        dirpath = writedir + refdir + filedir
-                        if os.path.isdir(dirpath):
-                            libraries = os.listdir(dirpath)
-                            for library in libraries:
-                                libdir = writedir + refdir + filedir + '/' + library
-                                srclibdir = link_from + refdir + filedir + '/' + library
-                                if checkdir != '':
-                                    checklibdir = checkdir + refdir + filedir + '/' + library
-                                else:
-                                    checklibdir = srclibdir
-                                if os.path.exists(libdir):
-                                    total = replace_all_with_symlinks(libdir, srclibdir, checklibdir)
-                                    if total > 0:
-                                        symstr = 'symlinks' if total > 1 else 'symlink'
-                                        print('      ' + library + ' (' + str(total) + ' ' + symstr + ')')
-                else:
-                    libraries = os.listdir(writedir + refdir)
-                    for library in libraries:
-                        print('   ' + library)
-                        filedirs = os.listdir(writedir + refdir + library)
-                        for filedir in filedirs:
-                            libdir = writedir + refdir + library + '/' + filedir
-                            srclibdir = link_from + refdir + library + '/' + filedir
-                            if checkdir != '':
-                                checklibdir = checkdir + refdir + library + '/' + filedir
-                            else:
-                                checklibdir = srclibdir
-                            if os.path.exists(libdir):
-                                total = replace_all_with_symlinks(libdir, srclibdir, checklibdir)
-                                if total > 0:
-                                    symstr = 'symlinks' if total > 1 else 'symlink'
-                                    print('      ' + filedir + ' (' + str(total) + ' ' + symstr + ')')
+                        libdir = writedir + refdir + library + '/' + filedir
+                        srclibdir = link_from + refdir + library + '/' + filedir
+                        if checkdir != '':
+                            checklibdir = checkdir + refdir + library + '/' + filedir
+                        else:
+                            checklibdir = srclibdir
+                        if os.path.exists(libdir):
+                            total = replace_all_with_symlinks(libdir, srclibdir, checklibdir)
+                            if total > 0:
+                                symstr = 'symlinks' if total > 1 else 'symlink'
+                                print('      ' + filedir + ' (' + str(total) + ' ' + symstr + ')')
 
     # Remove temporary files:  Magic generation scripts, sources.txt
     # file, and magic extract files.
@@ -680,68 +624,37 @@
     print('Removing temporary files from destination.')
 
     for refdir in refdirs:
-        if ef_format:
-            filedirs = os.listdir(writedir + refdir)
+        libraries = os.listdir(writedir + refdir)
+        for library in libraries:
+            filedirs = os.listdir(writedir + refdir + library)
             for filedir in filedirs:
-                if os.path.islink(filedir):
+                filepath = writedir + refdir + library + '/' + filedir
+                if os.path.islink(filepath):
                     continue
-                elif os.path.isdir(filedir):
-                    libraries = os.listdir(writedir + refdir + filedir)
-                    for library in libraries:
-                        libdir = writedir + refdir + filedir + '/' + library
-                        libfiles = os.listdir(libdir)
-                        for libfile in libfiles:
-                            filepath = libdir + '/' + libfile
-                            if os.path.islink(filepath):
-                                realpath = os.path.realpath(filepath)
-                                if realpath.startswith(stagingdir):
-                                    if libfile == '.magicrc':
-                                        if debug:
-                                            print('Removing unused .magicrc file from' +
-							filepath)
-                                        os.remove(filepath)
-                            elif libfile == 'sources.txt':
-                                os.remove(filepath)
-                            elif libfile == 'generate_magic.tcl':
-                                os.remove(filepath)
-                            elif os.path.splitext(libfile)[1] == '.ext':
-                                os.remove(filepath)
-                            elif os.path.splitext(libfile)[1] == '.swp':
-                                os.remove(filepath)
-                            elif os.path.splitext(libfile)[1] == '.orig':
-                                os.remove(filepath)
-        else:
-            libraries = os.listdir(writedir + refdir)
-            for library in libraries:
-                filedirs = os.listdir(writedir + refdir + library)
-                for filedir in filedirs:
-                    filepath = writedir + refdir + library + '/' + filedir
-                    if os.path.islink(filepath):
-                        continue
-                    elif os.path.isdir(filepath):
-                        libfiles = os.listdir(filepath)
-                        for libfile in libfiles:
-                            libfilepath = filepath + '/' + libfile
-                            if os.path.islink(libfilepath):
-                                # NOTE:  This could be used to move symbolic links
-                                # from staging to destination.  At the moment there
-                                # are none except the .magicrc file, which doesn't
-                                # belong in the destination path.
-                                realpath = os.path.realpath(libfilepath)
-                                if realpath.startswith(stagingdir):
-                                    if libfile == '.magicrc':
-                                        if debug:
-                                            print('Removing unused .magicrc file ' +
-							'from ' + libfilepath)
-                                        os.remove(libfilepath)
-                            elif libfile == 'sources.txt':
-                                os.remove(libfilepath)
-                            elif libfile == 'generate_magic.tcl':
-                                os.remove(libfilepath)
-                            elif os.path.splitext(libfile)[1] == '.ext':
-                                os.remove(libfilepath)
-                            elif os.path.splitext(libfile)[1] == '.orig':
-                                os.remove(libfilepath)
+                elif os.path.isdir(filepath):
+                    libfiles = os.listdir(filepath)
+                    for libfile in libfiles:
+                        libfilepath = filepath + '/' + libfile
+                        if os.path.islink(libfilepath):
+                            # NOTE:  This could be used to move symbolic links
+                            # from staging to destination.  At the moment there
+                            # are none except the .magicrc file, which doesn't
+                            # belong in the destination path.
+                            realpath = os.path.realpath(libfilepath)
+                            if realpath.startswith(stagingdir):
+                                if libfile == '.magicrc':
+                                    if debug:
+                                        print('Removing unused .magicrc file ' +
+			'from ' + libfilepath)
+                                    os.remove(libfilepath)
+                        elif libfile == 'sources.txt':
+                            os.remove(libfilepath)
+                        elif libfile == 'generate_magic.tcl':
+                            os.remove(libfilepath)
+                        elif os.path.splitext(libfile)[1] == '.ext':
+                            os.remove(libfilepath)
+                        elif os.path.splitext(libfile)[1] == '.orig':
+                            os.remove(libfilepath)
 
     print('Done with PDK migration.')
     sys.exit(0)
diff --git a/docs.txt b/docs.txt
index 775c185..289af9e 100644
--- a/docs.txt
+++ b/docs.txt
@@ -305,17 +305,6 @@
 	    -library <type> <name>
 			    The install target is an IP library with
 			    name <name>.
-	    -ef_format
-			    Use the original efabless format for file
-			    installs.  This has several differences from
-			    then no-efabless install.  The most important
-			    is that the order of directories for IP libraries
-			    is <file_format>/<library_name> instead of
-			    <library_name>/<file_format>.  As the efabless
-			    platform migrates to the open_pdks developing
-			    standard, this use should eventually be
-			    deprecated.  In open_pdks, the option is set
-			    from the EF_FORMAT variable setting in the Makefile.
 
 	 All other options represent installation into specific directories.
 	 The primary rule is that if foundry_install.py is passed an option
diff --git a/gf180mcu/Makefile.in b/gf180mcu/Makefile.in
index 1872dfc..611110c 100644
--- a/gf180mcu/Makefile.in
+++ b/gf180mcu/Makefile.in
@@ -100,14 +100,6 @@
 unexport PDKPATH
 unexport PDK_ROOT
 
-# If EF_STYLE is set to 1, then efabless naming conventions are
-# used, otherwise the generic naming conventions are used.
-# Mainly this has to do with where the technology LEF files are
-# put (libs.tech/lef/ vs. libs.ref/techLEF).
-
-# EF_STYLE = 0 | 1
-EF_STYLE = @EF_STYLE@
-
 # Normally it's fine to keep the staging path in a local directory,
 # although /tmp or a dedicated staging area are also fine, as long
 # as the install process can write to the path.
@@ -159,6 +151,7 @@
 GF180MCU_SC_9T5V0_PATH = @GF180MCU_FD_SC_MCU9T5V0_PATH@
 GF180MCU_SRAM_PATH = @GF180MCU_FD_IP_SRAM_PATH@
 GF180MCU_OSU_SC_PATH = @GF180MCU_OSU_SC_PATH@
+GF180MCU_AS_SC_PATH = @GF180MCU_AS_SC_PATH@
 
 USE_REFERENCE = @USE_REFERENCE@
 
@@ -173,6 +166,7 @@
 # Path to GF180MCU library sources
 PDK_URL = https://github.com/google
 OSU_URL = https://github.com/stineje
+AVALON_URL = https://github.com/AvalonSemiconductors
 FOSSI_URL = https://github.com/fossi-foundation
 
 # Names of library repositories
@@ -185,17 +179,13 @@
 PDK_LIB_SC_9T5V0 = ${FOSSI_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu9t5v0
 PDK_LIB_SRAM =     ${PDK_URL}/globalfoundries-pdk-ip-gf180mcu_fd_ip_sram
 PDK_LIB_OSU_SC =   ${OSU_URL}/globalfoundries-pdk-libs-gf180mcu_osu_sc
+PDK_LIB_AS_SC = ${AVALON_URL}/gf180mcu_as_sc_mcu7t3v3
 
 # NOTE:  Install destination is the git repository of the technology platform.
 # Once updated in git, the git project can be distributed to all hosts.
 #
-ifeq (${EF_STYLE}, 1)
-    CONFIG_DIR = .ef-config
-    REV_DIR = ${REVISION}
-else
-    CONFIG_DIR = .config
-    REV_DIR = .
-endif
+CONFIG_DIR = .config
+REV_DIR = .
 
 # Process nodes created from the master sources
 GF180MCUA = gf180mcuA
@@ -273,21 +263,16 @@
 else
     COMMIT_DEFS += -DOSU_SC_COMMIT=$(shell cd ${GF180MCU_OSU_SC_PATH} ; git rev-parse HEAD)
 endif
+ifeq (${GF180MCU_AS_SC_PATH},)
+    COMMIT_DEFS += -DAS_SC_MCU7T3V3_COMMIT="unknown"
+else
+    COMMIT_DEFS += -DAS_SC_MCU7T3V3_COMMIT=$(shell cd ${GF180MCU_AS_SC_PATH} ; git rev-parse HEAD)
+endif
 
 COMMIT_DEFS += -DMAGIC_COMMIT=$(shell magic -dnull -noconsole --commit)
 COMMIT_DEFS += -DMAGIC_VERSION=$(shell magic -dnull -noconsole --version)
 COMMIT_DEFS += -DOPEN_PDKS_VERSION=$(shell cat ${SCRIPTSDIR}/VERSION)
 
-ifeq (${EF_STYLE}, 1)
-    EF_FORMAT = -ef_format
-    GF180MCUA_DEFS += -DEF_FORMAT
-    GF180MCUB_DEFS += -DEF_FORMAT
-    GF180MCUC_DEFS += -DEF_FORMAT
-    GF180MCUD_DEFS += -DEF_FORMAT
-else
-    EF_FORMAT = -std_format
-endif
-
 MAGICTOP = libs.tech/magic
 NETGENTOP = libs.tech/netgen
 QFLOWTOP = libs.tech/qflow
@@ -298,13 +283,8 @@
 XCIRCUITTOP = libs.tech/xcircuit
 NGSPICETOP = libs.tech/ngspice
 
-ifeq (${EF_STYLE}, 1)
-    MAGICPATH = ${MAGICTOP}/${REVISION}
-    MAGIC_CURRENT = ${MAGICTOP}/current
-else
-    MAGICPATH = ${MAGICTOP}
-    MAGIC_CURRENT = ${MAGICTOP}
-endif
+MAGICPATH = ${MAGICTOP}
+MAGIC_CURRENT = ${MAGICTOP}
 
 NETGENPATH = ${NETGENTOP}
 IRSIMPATH = ${IRSIMTOP}
@@ -423,18 +403,18 @@
 
 # The following script in the ${SCRIPTSDIR}/common directory does most of the work of
 # copying or linking the foundry vendor files to the target directory.
-STAGE = set -f ; ${SCRIPTSDIR}/common/foundry_install.py ${EF_FORMAT} ${TIMESTAMP_OPT}
+STAGE = set -f ; ${SCRIPTSDIR}/common/foundry_install.py -std_format ${TIMESTAMP_OPT}
 ifneq ($(DESTDIR), )
-INSTALL = ${SCRIPTSDIR}/common/staging_install.py -writeto $(DESTDIR) ${EF_FORMAT}
+INSTALL = ${SCRIPTSDIR}/common/staging_install.py -writeto $(DESTDIR) -std_format
 else
-INSTALL = ${SCRIPTSDIR}/common/staging_install.py ${EF_FORMAT}
+INSTALL = ${SCRIPTSDIR}/common/staging_install.py -std_format
 endif
 
 # The script(s) below are used for custom changes to the vendor PDK files
-PORTORDER = ../common/port_order.py ${EF_FORMAT}
-ADDPROP = ../common/insert_property.py ${EF_FORMAT}
-ADDLAYER = ../common/insert_layer.py ${EF_FORMAT}
-REMOVELAB = ../common/remove_label.py ${EF_FORMAT}
+PORTORDER = ../common/port_order.py -std_format
+ADDPROP = ../common/insert_property.py -std_format
+ADDLAYER = ../common/insert_layer.py -std_format
+REMOVELAB = ../common/remove_label.py -std_format
 
 # List the EDA tools to install local setup files for
 TOOLS =
@@ -487,12 +467,7 @@
         TOOLS += xcircuit
 endif
 
-# This definition depends on the setting of EF_STYLE
-ifeq (${EF_STYLE}, 1)
-	IO_GDS = gds/gf180mcu_fd_io
-else
-	IO_GDS = gf180mcu_fd_io/gds
-endif
+IO_GDS = gf180mcu_fd_io/gds
 
 all: $(foreach var, ${VARIANTS}, all-$(var))
 
@@ -505,7 +480,7 @@
 	../common/save_commit_refs.py ${COMMIT_DEFS} ${TECH}.json
 
 # Handle prerequisites
-prerequisites: pr-repo pv-repo io-repo sc-7t-repo sc-9t-repo sram-repo osu-sc-repo
+prerequisites: pr-repo pv-repo io-repo sc-7t-repo sc-9t-repo sram-repo osu-sc-repo avalon-sc-repo
 
 pr-repo:
 	if test "x${REFERENCE_JSON}" != "x"; then \
@@ -598,8 +573,21 @@
 		fi ; \
 	fi
 
+avalon-sc-repo:
+	if test "x${REFERENCE_JSON}" != "x"; then \
+		AS_SC_MCU7T3V3_COMMIT=`cat ${REFERENCE_JSON} | grep gf180mcu_as_sc_mcu7t3v3 | grep -v COMMIT | cut -d'"' -f4` ; \
+	fi ; \
+	if test "x${GF180MCU_AS_SC_PATH}" != "x" ; then \
+		if test -d "${GF180MCU_AS_SC_PATH}" ; then \
+			echo "Using existing installation of Avalon Semiconductors 3.3V standard cell library from ${GF180MCU_AS_SC_PATH}" ; \
+		else \
+			echo "Downloading Avalon Semiconductors 3.3V standard cell library from ${GF180MCU_AS_SC_PATH}" ; \
+			../scripts/download.sh ${PDK_LIB_AS_SC} ${GF180MCU_AS_SC_PATH} $${AS_SC_MCU7T3V3_COMMIT} ; \
+		fi ; \
+	fi
+
 # Update prerequisites
-update: update-pr-repo update-pv-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-sram-repo update-osu-sc-repo
+update: update-pr-repo update-pv-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-sram-repo update-osu-sc-repo update-avalon-sc-repo
 
 update-pr-repo:
 	if test "x${GF180MCU_PR_PATH}" != "x" ; then \
@@ -643,6 +631,12 @@
 		../scripts/update.sh ${GF180MCU_OSU_SC_PATH} ; \
 	fi
 
+update-avalon-sc-repo:
+	if test "x${GF180MCU_AS_SC_PATH}" != "x" ; then \
+		echo "Updating GF180MCU Avalon Semiconductors 3.3V standard cell library from ${PDK_LIB_AS_SC}" ; \
+		../scripts/update.sh ${GF180MCU_AS_SC_PATH} ; \
+	fi
+
 all-%: prerequisites
 	echo "Starting gf180mcu$* PDK staging on "`date` > ${GF180MCU$*}_make.log
 	${MAKE} general-$*
@@ -673,9 +667,6 @@
 	rm -f ${MAGIC_STAGING_$*}/${GF180MCU$*}.tcl
 	rm -f ${MAGIC_STAGING_$*}/${GF180MCU$*}-BindKeys
 	rm -f ${MAGIC_STAGING_$*}/magicrc
-	if test "${EF_STYLE}" == "1" ; then \
-            (cd ${MAGICTOP_STAGING_$*} ; ln -f -s ${REV_DIR} current) ; \
-	fi
 
 	${CPP} ${GF180MCU$*_DEFS} magic/${TECH}.tech \
 		${MAGIC_STAGING_$*}/${GF180MCU$*}.tech
@@ -818,13 +809,13 @@
 		${OPENLANE_STAGING_$*}/rules.openrcx.gf180mcu$*.max ;\
 	fi
 
-vendor-A: primitive-build-A digital-7t5v0-build-A digital-9t5v0-build-A io-build-A sram-build-A digital-osu-build-A
+vendor-A: primitive-build-A digital-7t5v0-build-A digital-9t5v0-build-A io-build-A sram-build-A digital-osu-build-A digital-avalon-build-A
 
-vendor-B: primitive-build-B digital-7t5v0-build-B digital-9t5v0-build-B io-build-B sram-build-B digital-osu-build-B
+vendor-B: primitive-build-B digital-7t5v0-build-B digital-9t5v0-build-B io-build-B sram-build-B digital-osu-build-B digital-avalon-build-B
 
-vendor-C: primitive-build-C digital-7t5v0-build-C digital-9t5v0-build-C io-build-C sram-build-C digital-osu-build-C
+vendor-C: primitive-build-C digital-7t5v0-build-C digital-9t5v0-build-C io-build-C sram-build-C digital-osu-build-C digital-avalon-build-C
 
-vendor-D: primitive-build-D digital-7t5v0-build-D digital-9t5v0-build-D io-build-D sram-build-D digital-osu-build-D
+vendor-D: primitive-build-D digital-7t5v0-build-D digital-9t5v0-build-D io-build-D sram-build-D digital-osu-build-D digital-avalon-build-D
 
 primitive-build-%:
 	if test "x${GF180MCU_PR_PATH}" != "x" ; then \
@@ -874,6 +865,14 @@
 		fi ;\
 	fi
 
+digital-avalon-build-%:
+	if test "x${GF180MCU_AS_SC_PATH}" != "x" ; then \
+		if test -d ${GF180MCU_AS_SC_PATH} ; then \
+			echo "Building Avalon Semiconductor 3.3V digital standard cell libraries" ;\
+			make digital-avalon-$* ;\
+		fi ;\
+	fi
+
 primitive-%:
         # Install tech LEF and primitive devices from vendor files
 	${STAGE} -source ${GF180MCU_PR_PATH} \
@@ -1036,7 +1035,7 @@
 		-library digital gf180mcu_fd_sc_mcu9t5v0 2>&1 | \
 		tee -a ${GF180MCU$*}_make.log
 	# Create minimum/maximum technology LEF files
-	./custom/scripts/make_minmax_techlef.py ${EF_FORMAT} -variant=${GF180MCU$*} \
+	./custom/scripts/make_minmax_techlef.py -std_format -variant=${GF180MCU$*} \
 		-library=9t5v0 2>&1 | tee -a ${GF180MCU$*}_make.log || true
 
 digital-7t5v0-%:
@@ -1120,7 +1119,7 @@
 		-library digital gf180mcu_fd_sc_mcu7t5v0 2>&1 | \
 		tee -a ${GF180MCU$*}_make.log
 	# Create minimum/maximum technology LEF files
-	./custom/scripts/make_minmax_techlef.py ${EF_FORMAT} -variant=${GF180MCU$*} \
+	./custom/scripts/make_minmax_techlef.py -std_format -variant=${GF180MCU$*} \
 		-library=7t5v0 2>&1 | tee -a ${GF180MCU$*}_make.log || true
 
 digital-osu-%:
@@ -1154,6 +1153,43 @@
 		-library digital gf180mcu_osu_sc_gp12t3v3 2>&1 | \
 		tee -a ${GF180MCU$*}_make.log
 
+digital-avalon-%: AVALON_TECH_SOURCE := ${GF180MCU_AS_SC_PATH}/pdk/libs.tech
+digital-avalon-%: AVALON_REF_SOURCE := ${GF180MCU_AS_SC_PATH}/pdk/libs.ref/gf180mcu_as_sc_mcu7t3v3
+
+digital-avalon-%:
+        # Install Avalon Semiconductors 3.3V digital standard cells from vendor files
+	# NOTE: The repository is in open_pdks format and mainly just needs to
+	# be copied, not built.
+	rm -rf ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/lib
+	mkdir -p ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/lib
+	cp -rp ${AVALON_REF_SOURCE}/lib ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3
+	rm -rf ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/mag
+	mkdir -p ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/mag
+	cp -rp ${AVALON_REF_SOURCE}/mag ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3
+	rm -rf ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/gds
+	mkdir ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/gds
+	# Remove the "_merged" suffix from the GDS library
+	cp ${AVALON_REF_SOURCE}/gf180mcu_as_sc_mcu7t3v3__merged.gds ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/gds/gf180mcu_as_sc_mcu7t3v3.gds
+	rm -rf ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/lef
+	mkdir -p ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/lef
+	cp -rp ${AVALON_REF_SOURCE}/lef ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3
+	rm -rf ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/techlef
+	mkdir -p ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/techlef
+	cp -rp ${AVALON_REF_SOURCE}/techlef ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3
+	rm -rf ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/verilog
+	mkdir -p ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3/verilog
+	cp -rp ${AVALON_REF_SOURCE}/verilog ${STAGING_PATH}/${GF180MCU$*}/libs.ref/gf180mcu_as_sc_mcu7t3v3
+
+	# This library is done the right way and has its own openlane setup.
+	mkdir -p ${OPENLANETOP_STAGING_$*}
+	mkdir -p ${OPENLANE_STAGING_$*}
+	rm -rf ${OPENLANE_STAGING_$*}/gf180mcu_as_sc_mcu7t3v3
+	mkdir ${OPENLANE_STAGING_$*}/gf180mcu_as_sc_mcu7t3v3
+	cp -rp ${AVALON_TECH_SOURCE}/openlane/gf180mcu_as_sc_mcu7t3v3 ${OPENLANE_STAGING_$*}
+	# drc_exclude.cells is called out in the config and needs to exist
+	# even though it is an empty file
+	touch ${OPENLANE_STAGING_$*}/gf180mcu_as_sc_mcu7t3v3/drc_exclude.cells
+
 io-%:
 	# Install custom additions to the I/O pad library
 	${STAGE} -source ./custom -target ${STAGING_PATH}/${GF180MCU$*} \
diff --git a/gf180mcu/custom/scripts/make_minmax_techlef.py b/gf180mcu/custom/scripts/make_minmax_techlef.py
index aff01bb..4c6c5ea 100755
--- a/gf180mcu/custom/scripts/make_minmax_techlef.py
+++ b/gf180mcu/custom/scripts/make_minmax_techlef.py
@@ -14,7 +14,6 @@
 #
 #    make_minmax_techlef.py -variant=gf180mcuA|gf180mcuB|gf180mcuC
 #		-library=7t5v0|9t5v0
-#		[-ef_format]
 #
 # Given the PDK variant and library name, finds the technology
 # LEF file in the staging area with the nominal corner values,
@@ -45,9 +44,6 @@
         elif option.startswith('library'):
             lib = option.split('=')[1]
     tlefpath = variant + '/libs.ref/gf180mcu_fd_sc_mcu' + lib + '/techlef'
-    for option in options:
-        if option == 'ef_format':
-            tlefpath = variant + '/libs.ref/techLEF/gf180mcu_fd_sc_mcu' + lib
 elif len(arguments) > 0:
     tlefpath = arguments[0]
 
diff --git a/gf180mcu/gf180mcu.json b/gf180mcu/gf180mcu.json
index 40ddd4b..07ac49e 100644
--- a/gf180mcu/gf180mcu.json
+++ b/gf180mcu/gf180mcu.json
@@ -67,6 +67,7 @@
         "gf180mcu_fd_sc_mcu7t5v0": "FD_SC_MCU7T5V0_COMMIT",
         "gf180mcu_osu_sc_gf12t3v3": "OSU_SC_COMMIT",
         "gf180mcu_osu_sc_gf9t3v3": "OSU_SC_COMMIT"
+        "gf180mcu_as_sc_mcu7t3v3": "AS_SC_MCU7T3V3_COMMIT"
     },
     "iocells": {
         "gf180mcu_fd_io": "FD_IO_COMMIT"
@@ -89,15 +90,16 @@
         "magic": "MAGIC_COMMIT"
     },
     "reference": {
-        "open_pdks": "b01f6d281922e2185acf13fb855b338bb97ff460",
-        "magic": "56598ca0f44922818f271e574cc7ec29e9f04d95",
+        "open_pdks": "426f95115110d6d0185f1ba3d09b3aa8a014969b",
+        "magic": "0022c502c8a406d1d565e4dc2236498093ef1314",
         "gf180mcu_pdk": "a897aa30369d3bcec87d9d50ce9b01f320f854ef",
         "gf180mcu_fd_pr": "faef89e8c1b392733c32820a7b12e3a3847cc18c",
         "gf180mcu_fd_pv": "10ee7fc75437edafa56f29f2b1872e95c9f22b71",
         "gf180mcu_fd_io": "f84fe10e67a5cb9002e9ae8210f58e570726c366",
         "gf180mcu_fd_sc_mcu7t5v0": "8743b6f9641eb8707179c4e51703380d4dc90f16",
-        "gf180mcu_fd_sc_mcu9t5v0": "376ea56fa36ce7702595ce4e0e3c9357ee38c81c",
+        "gf180mcu_fd_sc_mcu9t5v0": "e0e80f5a6522f10b82165d3aeab9b8ee28e89849",
         "gf180mcu_fd_ip_sram": "9c411928870ce15226228fa52ddb6ecc0ea4ffbe",
+        "gf180mcu_as_sc_mcu7t3v3": "4570a9648972e03a0f1593de0479a0f61f945cc6",
         "gf180mcu_osu_sc_gf12t3v3": "aa2fa8cd1bcb8fe98669acd05c0b0c65879268b3",
         "gf180mcu_osu_sc_gf9t3v3": "aa2fa8cd1bcb8fe98669acd05c0b0c65879268b3"
     }
diff --git a/gf180mcu/magic/gf180mcu.magicrc b/gf180mcu/magic/gf180mcu.magicrc
index 5f8aa24..4cda6f7 100644
--- a/gf180mcu/magic/gf180mcu.magicrc
+++ b/gf180mcu/magic/gf180mcu.magicrc
@@ -52,21 +52,10 @@
 }
 
 # add path to reference cells
-if {[file isdir ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}]} {
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/gf180mcu_fd_pr
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/gf180mcu_mcu7t5v0
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/gf180mcu_mcu9t5v0
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/gf180mcu_fd_io
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/gf180mcu_fd_ip_sram
-} else {
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_pr/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_sc_mcu7t5v0/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_sc_mcu9t5v0/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_io/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_ip_sram/${MAGTYPE}
-}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_pr/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_sc_mcu7t5v0/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_sc_mcu9t5v0/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_io/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_fd_ip_sram/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/gf180mcu_as_sc_mcu7t3v3/${MAGTYPE}
 
-# add path to IP from catalog.  This procedure defined in the PDK script.
-catch {magic::query_mylib_ip}
-# add path to local IP from user design space.  Defined in the PDK script.
-catch {magic::query_my_projects}
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/config.tcl b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/config.tcl
new file mode 100644
index 0000000..a5a893e
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/config.tcl
@@ -0,0 +1,76 @@
+set current_folder [file dirname [file normalize [info script]]]
+
+# Standard cell library (override gf180mcu default)
+set ::env(STD_CELL_LIBRARY) gf180mcu_osu_sc_gp12t3v3
+set ::env(STD_CELL_LIBRARY_OPT) gf180mcu_osu_sc_gp12t3v3
+
+set ::env(VDD_PIN_VOLTAGE) "3.30"
+
+set ::env(STD_CELL_POWER_PINS) "VDD"
+set ::env(STD_CELL_GROUND_PINS) "VSS"
+
+# Lib Files (override gf180mcu defaults)
+set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_3v30.lib"
+set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_3v30.lib"
+set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_3v30.lib"
+set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
+
+# Technology LEF (override gf180mcu defaults)
+set ::env(TECH_LEF_MIN)  $::env(TECH_LEF)
+set ::env(TECH_LEF_MAX)  $::env(TECH_LEF)
+
+# Placement site for core cells
+# This can be found in the technology lef
+set ::env(PLACE_SITE) "gf180mcu_osu_sc_gp12t3v3"
+set ::env(PLACE_SITE_WIDTH) 0.10
+set ::env(PLACE_SITE_HEIGHT) 6.35
+
+# welltap and endcap cell
+# set ::env(FP_WELLTAP_CELL) "$::env(STD_CELL_LIBRARY)__filltie"
+# set ::env(FP_ENDCAP_CELL) "$::env(STD_CELL_LIBRARY)__endcap"
+set ::env(FP_WELLTAP_CELL) ""
+set ::env(FP_ENDCAP_CELL) ""
+
+# defaults (can be overridden by designs):
+set ::env(SYNTH_DRIVING_CELL) "$::env(STD_CELL_LIBRARY)__inv_1"
+set ::env(SYNTH_DRIVING_CELL_PIN) "Y"
+set ::env(SYNTH_CLK_DRIVING_CELL) "$::env(STD_CELL_LIBRARY)__clkinv_4"
+set ::env(SYNTH_CLK_DRIVING_CELL_PIN) "Y"
+
+# update these
+set ::env(OUTPUT_CAP_LOAD) "4.046" ; # femtofarad from pin A in liberty file
+set ::env(SYNTH_MIN_BUF_PORT) "$::env(STD_CELL_LIBRARY)__buf_1 A Y"
+set ::env(SYNTH_TIEHI_PORT) "$::env(STD_CELL_LIBRARY)__tieh Y"
+set ::env(SYNTH_TIELO_PORT) "$::env(STD_CELL_LIBRARY)__tiel Y"
+
+# Placement defaults
+set ::env(PL_LIB) $::env(LIB_TYPICAL)
+
+# Fillcell insertion
+set ::env(FILL_CELL) "$::env(STD_CELL_LIBRARY)__fill_*"
+set ::env(DECAP_CELL) "$::env(STD_CELL_LIBRARY)__decap_*"
+
+# Diode Insertion
+set ::env(DIODE_CELL) "$::env(STD_CELL_LIBRARY)__ant"
+set ::env(DIODE_CELL_PIN) "A"
+set ::env(DIODE_INSERTION_STRATEGY) {4}
+
+# set ::env(CELL_PAD_EXCLUDE) "$::env(STD_CELL_LIBRARY)__filltie $::env(STD_CELL_LIBRARY)__fill_* $::env(STD_CELL_LIBRARY)__endcap"
+set ::env(CELL_PAD_EXCLUDE) ""
+
+# TritonCTS configurations
+set ::env(CTS_ROOT_BUFFER) "$::env(STD_CELL_LIBRARY)__clkbuf_16"
+set ::env(CTS_CLK_BUFFER_LIST) "$::env(STD_CELL_LIBRARY)__clkbuf_2 $::env(STD_CELL_LIBRARY)__clkbuf_4 $::env(STD_CELL_LIBRARY)__clkbuf_8"
+set ::env(CTS_MAX_CAP) 0.5
+
+set ::env(FP_PDN_RAIL_WIDTH) 0.6
+
+# The library maximum transition is 8.9ns; setting it to lower value
+set ::env(MAX_TRANSITION_CONSTRAINT) 3
+set ::env(MAX_FANOUT_CONSTRAINT) 10
+set ::env(MAX_CAPACITANCE_CONSTRAINT) 0.2
+
+set ::env(GPL_CELL_PADDING) {0}
+set ::env(DPL_CELL_PADDING) {0}
+
+set ::env(TRISTATE_CELL_PREFIX) "$::env(STD_CELL_LIBRARY)__tbuf"
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/drc_exclude.cells b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/drc_exclude.cells
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/drc_exclude.cells
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/no_synth.cells b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/no_synth.cells
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/no_synth.cells
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/tracks.info b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/tracks.info
new file mode 100644
index 0000000..78e4dcd
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp12t3v3/tracks.info
@@ -0,0 +1,11 @@
+Metal1 X 0.28 0.56
+Metal1 Y 0.28 0.56
+Metal2 X 0.28 0.56
+Metal2 Y 0.28 0.56
+Metal3 X 0.28 0.56
+Metal3 Y 0.28 0.56
+Metal4 X 0.28 0.56
+Metal4 Y 0.28 0.56
+Metal5 X 0.45 0.90
+Metal5 Y 0.45 0.90
+
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/config.tcl b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/config.tcl
new file mode 100644
index 0000000..d0e8267
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/config.tcl
@@ -0,0 +1,76 @@
+set current_folder [file dirname [file normalize [info script]]]
+
+# Standard cell library (override gf180mcu default)
+set ::env(STD_CELL_LIBRARY) gf180mcu_osu_sc_gp9t3v3
+set ::env(STD_CELL_LIBRARY_OPT) gf180mcu_osu_sc_gp9t3v3
+
+set ::env(VDD_PIN_VOLTAGE) "3.30"
+
+set ::env(STD_CELL_POWER_PINS) "VDD"
+set ::env(STD_CELL_GROUND_PINS) "VSS"
+
+# Lib Files (override gf180mcu defaults)
+set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_3v30.lib"
+set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_3v30.lib"
+set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/$::env(STD_CELL_LIBRARY)__tt_025C_3v30.lib"
+set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
+
+# Technology LEF (override gf180mcu defaults)
+set ::env(TECH_LEF_MIN)  $::env(TECH_LEF)
+set ::env(TECH_LEF_MAX)  $::env(TECH_LEF)
+
+# Placement site for core cells
+# This can be found in the technology lef
+set ::env(PLACE_SITE) "gf180mcu_osu_sc_gp9t3v3"
+set ::env(PLACE_SITE_WIDTH) 0.10
+set ::env(PLACE_SITE_HEIGHT) 6.35
+
+# welltap and endcap cell
+# set ::env(FP_WELLTAP_CELL) "$::env(STD_CELL_LIBRARY)__filltie"
+# set ::env(FP_ENDCAP_CELL) "$::env(STD_CELL_LIBRARY)__endcap"
+set ::env(FP_WELLTAP_CELL) ""
+set ::env(FP_ENDCAP_CELL) ""
+
+# defaults (can be overridden by designs):
+set ::env(SYNTH_DRIVING_CELL) "$::env(STD_CELL_LIBRARY)__inv_1"
+set ::env(SYNTH_DRIVING_CELL_PIN) "Y"
+set ::env(SYNTH_CLK_DRIVING_CELL) "$::env(STD_CELL_LIBRARY)__clkinv_4"
+set ::env(SYNTH_CLK_DRIVING_CELL_PIN) "Y"
+
+# update these
+set ::env(OUTPUT_CAP_LOAD) "4.046" ; # femtofarad from pin A in liberty file
+set ::env(SYNTH_MIN_BUF_PORT) "$::env(STD_CELL_LIBRARY)__buf_1 A Y"
+set ::env(SYNTH_TIEHI_PORT) "$::env(STD_CELL_LIBRARY)__tieh Y"
+set ::env(SYNTH_TIELO_PORT) "$::env(STD_CELL_LIBRARY)__tiel Y"
+
+# Placement defaults
+set ::env(PL_LIB) $::env(LIB_TYPICAL)
+
+# Fillcell insertion
+set ::env(FILL_CELL) "$::env(STD_CELL_LIBRARY)__fill_*"
+set ::env(DECAP_CELL) "$::env(STD_CELL_LIBRARY)__decap_*"
+
+# Diode Insertion
+set ::env(DIODE_CELL) "$::env(STD_CELL_LIBRARY)__ant"
+set ::env(DIODE_CELL_PIN) "A"
+set ::env(DIODE_INSERTION_STRATEGY) {4}
+
+# set ::env(CELL_PAD_EXCLUDE) "$::env(STD_CELL_LIBRARY)__filltie $::env(STD_CELL_LIBRARY)__fill_* $::env(STD_CELL_LIBRARY)__endcap"
+set ::env(CELL_PAD_EXCLUDE) ""
+
+# TritonCTS configurations
+set ::env(CTS_ROOT_BUFFER) "$::env(STD_CELL_LIBRARY)__clkbuf_16"
+set ::env(CTS_CLK_BUFFER_LIST) "$::env(STD_CELL_LIBRARY)__clkbuf_2 $::env(STD_CELL_LIBRARY)__clkbuf_4 $::env(STD_CELL_LIBRARY)__clkbuf_8"
+set ::env(CTS_MAX_CAP) 0.5
+
+set ::env(FP_PDN_RAIL_WIDTH) 0.6
+
+# The library maximum transition is 8.9ns; setting it to lower value
+set ::env(MAX_TRANSITION_CONSTRAINT) 3
+set ::env(MAX_FANOUT_CONSTRAINT) 10
+set ::env(MAX_CAPACITANCE_CONSTRAINT) 0.2
+
+set ::env(GPL_CELL_PADDING) {0}
+set ::env(DPL_CELL_PADDING) {0}
+
+set ::env(TRISTATE_CELL_PREFIX) "$::env(STD_CELL_LIBRARY)__tbuf"
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/drc_exclude.cells b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/drc_exclude.cells
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/drc_exclude.cells
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/no_synth.cells b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/no_synth.cells
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/no_synth.cells
diff --git a/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/tracks.info b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/tracks.info
new file mode 100644
index 0000000..78e4dcd
--- /dev/null
+++ b/gf180mcu/openlane/gf180mcu_osu_sc_gp9t3v3/tracks.info
@@ -0,0 +1,11 @@
+Metal1 X 0.28 0.56
+Metal1 Y 0.28 0.56
+Metal2 X 0.28 0.56
+Metal2 Y 0.28 0.56
+Metal3 X 0.28 0.56
+Metal3 Y 0.28 0.56
+Metal4 X 0.28 0.56
+Metal4 Y 0.28 0.56
+Metal5 X 0.45 0.90
+Metal5 Y 0.45 0.90
+
diff --git a/runtime/soc_floorplanner.py b/runtime/soc_floorplanner.py
index d7b8196..dca2010 100755
--- a/runtime/soc_floorplanner.py
+++ b/runtime/soc_floorplanner.py
@@ -252,7 +252,6 @@
         self.stderr = None
 
         self.keep_cfg = False
-        self.ef_format = False
         self.use_console = False
 
     def init_padframe(self):
@@ -323,28 +322,6 @@
         projectroot = os.path.split(projectpath)[0]
         projectdirname = os.path.split(projectpath)[1]
 
-        # Check for efabless format.  This is probably more complicated than
-        # it deserves to be.  Option -ef_format is the best way to specify
-        # efabless format.  However, if it is not specified, then check the
-        # technology PDK directory and the project directory for the tell-tale
-        # ".ef-config" (efabless format) directory vs. ".config" (not efabless
-        # format).
-
-        if not self.ef_format:
-            if os.path.exists(projectpath + '/.ef-config'):
-                self.ef_format = True
-            elif self.techpath:
-                if os.path.exists(self.techpath + '/.ef-config'):
-                    self.ef_format = True
-        else:
-            # Do a quick consistency check.  Honor the -ef_format option but warn if
-            # there is an apparent inconsistency.
-            if os.path.exists(projectpath + '/.config'):
-                self.print('Warning:  -ef_format used in apparently non-efabless setup.')
-            elif self.techpath:
-                if os.path.exists(self.techpath + '/.config'):
-                    self.print('Warning:  -ef_format used in apparently non-efabless setup.')
-
         # Check for project.json
 
         jsonname = None
@@ -1326,10 +1303,7 @@
 
     def vlogimport(self):
 
-        if self.ef_format:
-            config_dir = '/.ef-config'
-        else:
-            config_dir = '/.config'
+        config_dir = '/.config'
 
         # First find the process PDK name for this project.  Read the nodeinfo.json
         # file and find the list of I/O cell libraries.  
@@ -1355,10 +1329,7 @@
                     for iolib in itop['iocells']:
                         if '/' in iolib:
                             # Entries <lib>/<cell> refer to specific files
-                            if self.ef_format:
-                                iolibpath = pdkpath + '/libs.ref/lef/' + iolib
-                            else:
-                                iolibpath = pdkpath + '/libs.ref/' + iolib
+                            iolibpath = pdkpath + '/libs.ref/' + iolib
                             if os.path.splitext(iolib)[1] == '':
                                 if not os.path.exists(iolibpath):
                                     iolibpath = iolibpath + '.lib'
@@ -1367,10 +1338,7 @@
                             ioleflist.append(iolibpath)
                         else:
                             # All other entries refer to everything in the directory.
-                            if self.ef_format:
-                                iolibpath = pdkpath + '/libs.ref/lef/' + iolib
-                            else:
-                                iolibpath = pdkpath + '/libs.ref/' + iolib + '/lef/'
+                            iolibpath = pdkpath + '/libs.ref/' + iolib + '/lef/'
                             iolibfiles = glob.glob(iolibpath + '/*.lef')
                             if len(iolibfiles) == 0:
                                 self.print('Warning: nodeinfo.json bad I/O library path ' + iolibpath)
@@ -1381,10 +1349,7 @@
 
         # Fallback behavior:  List everything in libs.ref/lef/ beginning with "IO"
         if len(ioleflist) == 0:
-            if self.ef_format:
-                ioleflist = glob.glob(pdkpath + '/libs.ref/lef/IO*/*.lef')
-            else:
-                ioleflist = glob.glob(pdkpath + '/libs.ref/IO*/lef/*.lef')
+            ioleflist = glob.glob(pdkpath + '/libs.ref/IO*/lef/*.lef')
 
         if len(ioleflist) == 0:
             self.print('Cannot find any I/O cell libraries for this technology')
@@ -2602,7 +2567,6 @@
     # is otherwise auto-detected by checking for .config vs. .ef-config in
     # the project space.
 
-    app.ef_format = True if '-ef_format' in options else False
     app.keep_cfg = True if '-cfg' in options else False
 
     app.padring_path = None
diff --git a/scripts/configure b/scripts/configure
index 89440df..d086bf9 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -1,11 +1,12 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for open_pdks 1.0.
+# Generated by GNU Autoconf 2.72 for open_pdks 1.0.
 #
 # Report bugs to <github.com/RTimothyEdwards/open_pdks>.
 #
 #
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
+# Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -16,63 +17,65 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""	$as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -81,13 +84,6 @@
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -96,43 +92,27 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 # Use a proper internal environment variable to ensure we don't fall
   # into an infinite loop, continuously re-executing ourselves.
@@ -153,26 +133,28 @@
 esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+# out after a failed 'exec'.
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
   fi
   # We don't want this to propagate to other subprocesses.
           { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
+else case e in #(
+  e) case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 "
@@ -187,42 +169,55 @@
 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
 
-else
-  exitcode=1; echo positional parameters were not saved.
+else case e in #(
+  e) exitcode=1; echo positional parameters were not saved. ;;
+esac
 fi
 test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
 test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
 test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
+  if (eval "$as_required") 2>/dev/null
+then :
   as_have_required=yes
-else
-  as_have_required=no
+else case e in #(
+  e) as_have_required=no ;;
+esac
 fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
 
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
   as_found=:
   case $as_dir in #(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
+	     as_shell=$as_dir$as_base
 	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
   CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
   break 2
 fi
 fi
@@ -230,14 +225,22 @@
        esac
   as_found=false
 done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
 IFS=$as_save_IFS
+if $as_found
+then :
+
+else case e in #(
+  e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi ;;
+esac
+fi
 
 
-      if test "x$CONFIG_SHELL" != x; then :
+      if test "x$CONFIG_SHELL" != x
+then :
   export CONFIG_SHELL
              # We cannot yet assume a decent shell, so we have to provide a
 # neutralization value for shells without unset; and this also
@@ -254,26 +257,28 @@
 esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+# out after a failed 'exec'.
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
 fi
 
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+    if test x$as_have_required = xno
+then :
+  printf "%s\n" "$0: This script requires a shell more modern than all"
+  printf "%s\n" "$0: the shells that I found on your system."
+  if test ${ZSH_VERSION+y} ; then
+    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
 $0: github.com/RTimothyEdwards/open_pdks about your system,
 $0: including any error possibly output before this
 $0: message. Then install a modern shell, or manually run
 $0: the script under such a shell if you do have one."
   fi
   exit 1
-fi
+fi ;;
+esac
 fi
 fi
 SHELL=${CONFIG_SHELL-/bin/sh}
@@ -294,6 +299,7 @@
 }
 as_unset=as_fn_unset
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -325,7 +331,7 @@
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -334,7 +340,7 @@
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -373,16 +379,18 @@
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -390,16 +398,18 @@
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
 
@@ -413,9 +423,9 @@
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -442,7 +452,7 @@
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -475,6 +485,8 @@
     /[$]LINENO/=
   ' <$as_myself |
     sed '
+      t clear
+      :clear
       s/[$]LINENO.*/&-/
       t lineno
       b
@@ -486,7 +498,7 @@
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
   # already done that, so ensure we don't try to do so again and fall
@@ -500,6 +512,10 @@
   exit
 }
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -513,6 +529,12 @@
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -524,9 +546,9 @@
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -551,10 +573,12 @@
 as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 test -n "$DJDIR" || exec 7<&0 </dev/null
@@ -591,6 +615,7 @@
 ENABLED_TECHS
 EF_STYLE
 USE_REFERENCE
+GF180MCU_AS_SC_PATH
 GF180MCU_OSU_SC_PATH
 GF180MCU_FD_IP_SRAM_PATH
 GF180MCU_FD_SC_MCU9T5V0_PATH
@@ -726,6 +751,7 @@
 enable_sc_9t5v0_gf180mcu
 enable_sram_gf180mcu
 enable_osu_sc_gf180mcu
+enable_avalon_sc_gf180mcu
 with_reference
 with_ef_style
 '
@@ -801,8 +827,6 @@
   *)    ac_optarg=yes ;;
   esac
 
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
   case $ac_dashdash$ac_option in
   --)
     ac_dashdash=yes ;;
@@ -843,9 +867,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -869,9 +893,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -1082,9 +1106,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1098,9 +1122,9 @@
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1128,8 +1152,8 @@
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
+  -*) as_fn_error $? "unrecognized option: '$ac_option'
+Try '$0 --help' for more information"
     ;;
 
   *=*)
@@ -1137,16 +1161,16 @@
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: '$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
@@ -1162,7 +1186,7 @@
   case $enable_option_checking in
     no) ;;
     fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
 
@@ -1187,7 +1211,7 @@
   as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
-# There might be people who depend on the old broken behavior: `$host'
+# There might be people who depend on the old broken behavior: '$host'
 # used to hold the argument of --host etc.
 # FIXME: To remove some day.
 build=$build_alias
@@ -1226,7 +1250,7 @@
 	 X"$as_myself" : 'X\(//\)[^/]' \| \
 	 X"$as_myself" : 'X\(//\)$' \| \
 	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -1255,7 +1279,7 @@
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
   as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work"
 ac_abs_confdir=`(
 	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
@@ -1283,7 +1307,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures open_pdks 1.0 to adapt to many kinds of systems.
+'configure' configures open_pdks 1.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1297,11 +1321,11 @@
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
+  -q, --quiet, --silent   do not print 'checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -C, --config-cache      alias for '--cache-file=config.cache'
   -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+      --srcdir=DIR        find the sources in DIR [configure dir or '..']
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
@@ -1309,10 +1333,10 @@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                           [PREFIX]
 
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
+By default, 'make install' will install all the files in
+'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than '$ac_default_prefix' using '--prefix',
+for instance '--prefix=\$HOME'.
 
 For better control, use the options below.
 
@@ -1467,6 +1491,9 @@
   --enable-osu-sc-gf180mcu[=path]
                           Install gf180mcu_osu_sc. If path is omitted, the repository
                           will be downloaded. [default=enabled]
+  --enable-avalon-sc-gf180mcu[=path]
+                          Install gf180mcu_as_sc. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1485,7 +1512,7 @@
 Some influential environment variables:
   PYTHON      the Python interpreter
 
-Use these variables to override the choices made by `configure' or to help
+Use these variables to override the choices made by 'configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <github.com/RTimothyEdwards/open_pdks>.
@@ -1504,9 +1531,9 @@
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1534,7 +1561,8 @@
 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
     cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
+    # Check for configure.gnu first; this name is used for a wrapper for
+    # Metaconfig's "Configure" on case-insensitive file systems.
     if test -f "$ac_srcdir/configure.gnu"; then
       echo &&
       $SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1542,7 +1570,7 @@
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1552,9 +1580,9 @@
 if $ac_init_version; then
   cat <<\_ACEOF
 open_pdks configure 1.0
-generated by GNU Autoconf 2.69
+generated by GNU Autoconf 2.72
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1564,14 +1592,34 @@
 ## ------------------------ ##
 ## Autoconf initialization. ##
 ## ------------------------ ##
+ac_configure_args_raw=
+for ac_arg
+do
+  case $ac_arg in
+  *\'*)
+    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+  *$as_nl*)
+    ac_safe_unquote= ;;
+  *)
+    ac_unsafe_z='|&;<>()$`\\"*?[ ''	' # This string ends in space, tab.
+    ac_unsafe_a="$ac_unsafe_z#~"
+    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by open_pdks $as_me 1.0, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
-  $ $0 $@
+  $ $0$ac_configure_args_raw
 
 _ACEOF
 exec 5>>config.log
@@ -1604,8 +1652,12 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    printf "%s\n" "PATH: $as_dir"
   done
 IFS=$as_save_IFS
 
@@ -1640,7 +1692,7 @@
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
     1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -1675,11 +1727,13 @@
 # WARNING: Use '\'' to represent an apostrophe within the trap.
 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
+  # Sanitize IFS.
+  IFS=" ""	$as_nl"
   # Save into config.log some information that might help in debugging.
   {
     echo
 
-    $as_echo "## ---------------- ##
+    printf "%s\n" "## ---------------- ##
 ## Cache variables. ##
 ## ---------------- ##"
     echo
@@ -1690,8 +1744,8 @@
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -1715,7 +1769,7 @@
 )
     echo
 
-    $as_echo "## ----------------- ##
+    printf "%s\n" "## ----------------- ##
 ## Output variables. ##
 ## ----------------- ##"
     echo
@@ -1723,14 +1777,14 @@
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      $as_echo "$ac_var='\''$ac_val'\''"
+      printf "%s\n" "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
+      printf "%s\n" "## ------------------- ##
 ## File substitutions. ##
 ## ------------------- ##"
       echo
@@ -1738,15 +1792,15 @@
       do
 	eval ac_val=\$$ac_var
 	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	*\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
 	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
+	printf "%s\n" "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      $as_echo "## ----------- ##
+      printf "%s\n" "## ----------- ##
 ## confdefs.h. ##
 ## ----------- ##"
       echo
@@ -1754,8 +1808,8 @@
       echo
     fi
     test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
+      printf "%s\n" "$as_me: caught signal $ac_signal"
+    printf "%s\n" "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -1769,65 +1823,50 @@
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
 
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
+  ac_site_files="$CONFIG_SITE"
 elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
 do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+  case $ac_site_file in #(
+  */*) :
+     ;; #(
+  *) :
+    ac_site_file=./$ac_site_file ;;
+esac
+  if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -1835,16 +1874,16 @@
   # Some versions of bash will fail to source /dev/null (special files
   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
     esac
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
@@ -1858,12 +1897,12 @@
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
@@ -1872,24 +1911,24 @@
 	ac_old_val_w=`echo x $ac_old_val`
 	ac_new_val_w=`echo x $ac_new_val`
 	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
 	  ac_cache_corrupted=:
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
 	  eval $ac_var=\$ac_old_val
 	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  '$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  '$ac_old_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: '$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: '$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
@@ -1899,11 +1938,12 @@
   fi
 done
 if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file'
+	    and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -1929,8 +1969,8 @@
 
         if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.4" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.4... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.4" >&5
+printf %s "checking whether $PYTHON version is >= 3.4... " >&6; }
       prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
@@ -1944,24 +1984,27 @@
    ($PYTHON -c "$prog") >&5 2>&5
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5
+   (exit $ac_status); }
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+			       as_fn_error $? "Python interpreter is too old" "$LINENO" 5 ;;
+esac
 fi
       am_display_PYTHON=$PYTHON
     else
       # Otherwise, try each interpreter until we find one that satisfies
       # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.4" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.4... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.4" >&5
+printf %s "checking for a Python interpreter with version >= 3.4... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e)
 	for am_cv_pathless_PYTHON in python python2 python3  python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3  python3.2 python3.1 python3.0  python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1  python2.0 none; do
 	  test "$am_cv_pathless_PYTHON" = none && break
 	  prog="import sys
@@ -1977,25 +2020,28 @@
    ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
    ac_status=$?
    echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); }; then :
+   (exit $ac_status); }
+then :
   break
 fi
-	done
+	done ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
       # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
       if test "$am_cv_pathless_PYTHON" = none; then
 	PYTHON=:
       else
         # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
 set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PYTHON in
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) case $PYTHON in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
   ;;
@@ -2004,11 +2050,15 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2016,15 +2066,16 @@
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 PYTHON=$ac_cv_path_PYTHON
 if test -n "$PYTHON"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2038,15 +2089,17 @@
   else
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[:2])"`
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) am_cv_python_version=`$PYTHON -c "import sys; print('%u.%u' % sys.version_info[:2])"` ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
   PYTHON_VERSION=$am_cv_python_version
 
 
@@ -2057,15 +2110,17 @@
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
   PYTHON_PLATFORM=$am_cv_python_platform
 
 
@@ -2090,12 +2145,13 @@
     pass"
 
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$prefix" = xNONE
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+printf %s "checking for $am_display_PYTHON script directory... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test "x$prefix" = xNONE
      then
        am_py_prefix=$ac_default_prefix
      else
@@ -2123,10 +2179,11 @@
        esac
        ;;
      esac
-
+     ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
   pythondir=$am_cv_python_pythondir
 
 
@@ -2134,12 +2191,13 @@
   pkgpythondir=\${pythondir}/$PACKAGE
 
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$exec_prefix" = xNONE
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+printf %s "checking for $am_display_PYTHON extension module directory... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test "x$exec_prefix" = xNONE
      then
        am_py_exec_prefix=$am_py_prefix
      else
@@ -2167,10 +2225,11 @@
        esac
        ;;
      esac
-
+     ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
   pyexecdir=$am_cv_python_pyexecdir
 
 
@@ -2193,17 +2252,17 @@
         fi
     fi
     PYTHON_NAME=`basename $PYTHON`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking $PYTHON_NAME module: distutils" >&5
-$as_echo_n "checking $PYTHON_NAME module: distutils... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $PYTHON_NAME module: distutils" >&5
+printf %s "checking $PYTHON_NAME module: distutils... " >&6; }
     $PYTHON -c "import distutils" 2>/dev/null
     if test $? -eq 0;
     then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
         eval HAVE_PYMOD_DISTUTILS=yes
     else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
         eval HAVE_PYMOD_DISTUTILS=no
         #
         if test -n ""
@@ -2217,12 +2276,13 @@
 # Check for Mac OS X gsed vs. sed
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e)           ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
      for ac_i in 1 2 3 4 5 6 7; do
        ac_script="$ac_script$as_nl$ac_script"
      done
@@ -2235,25 +2295,31 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in sed gsed; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in sed gsed
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
+case `"$ac_path_SED" --version 2>&1` in #(
 *GNU*)
   ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+#(
 *)
   ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
+  printf %s 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
+    printf "%s\n" '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -2279,10 +2345,11 @@
 else
   ac_cv_path_SED=$SED
 fi
-
+ ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
 
@@ -2310,8 +2377,8 @@
 # check for the source and install paths for each PDK.
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Found technology directories: gf180mcu sky130" >&5
-$as_echo "$as_me: Found technology directories: gf180mcu sky130" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Found technology directories: gf180mcu sky130" >&5
+printf "%s\n" "$as_me: Found technology directories: gf180mcu sky130" >&6;}
 
 
 
@@ -2326,7 +2393,8 @@
         GF180MCU_AUTO="0"
 
         # Check whether --enable-gf180mcu-gf180mcu was given.
-if test "${enable_gf180mcu_pdk+set}" = set; then :
+if test ${enable_gf180mcu_pdk+y}
+then :
   enableval=$enable_gf180mcu_pdk;
                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
                     export GF180MCU_SOURCE_PATH=../sources/gf180mcu-pdk
@@ -2351,64 +2419,70 @@
             # Basic check that the PDK path exists, unless depending on Makefile
 	    # to download it automatically.
             if [ "$GF180MCU_AUTO" = "0" ]; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Checking specified path for 'gf180mcu' at $GF180MCU_SOURCE_PATH" >&5
-$as_echo "$as_me: Checking specified path for 'gf180mcu' at $GF180MCU_SOURCE_PATH" >&6;}
-                as_ac_File=`$as_echo "ac_cv_file_$GF180MCU_SOURCE_PATH" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GF180MCU_SOURCE_PATH" >&5
-$as_echo_n "checking for $GF180MCU_SOURCE_PATH... " >&6; }
-if eval \${$as_ac_File+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking specified path for 'gf180mcu' at $GF180MCU_SOURCE_PATH" >&5
+printf "%s\n" "$as_me: Checking specified path for 'gf180mcu' at $GF180MCU_SOURCE_PATH" >&6;}
+                as_ac_File=`printf "%s\n" "ac_cv_file_$GF180MCU_SOURCE_PATH" | sed "$as_sed_sh"`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $GF180MCU_SOURCE_PATH" >&5
+printf %s "checking for $GF180MCU_SOURCE_PATH... " >&6; }
+if eval test \${$as_ac_File+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) test "$cross_compiling" = yes &&
   as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
 if test -r "$GF180MCU_SOURCE_PATH"; then
   eval "$as_ac_File=yes"
 else
   eval "$as_ac_File=no"
-fi
+fi ;;
+esac
 fi
 eval ac_res=\$$as_ac_File
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"
+then :
 
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: 'gf180mcu' source path found at $GF180MCU_SOURCE_PATH" >&5
-$as_echo "$as_me: 'gf180mcu' source path found at $GF180MCU_SOURCE_PATH" >&6;}
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: 'gf180mcu' source path found at $GF180MCU_SOURCE_PATH" >&5
+printf "%s\n" "$as_me: 'gf180mcu' source path found at $GF180MCU_SOURCE_PATH" >&6;}
 
-else
-
+else case e in #(
+  e)
                     as_fn_error $? "Specified path for 'gf180mcu' at $GF180MCU_SOURCE_PATH not found" "$LINENO" 5
-
+                 ;;
+esac
 fi
 
 	    else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: PDK 'gf180mcu' will be downloaded automatically during make." >&5
-$as_echo "$as_me: PDK 'gf180mcu' will be downloaded automatically during make." >&6;}
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: PDK 'gf180mcu' will be downloaded automatically during make." >&5
+printf "%s\n" "$as_me: PDK 'gf180mcu' will be downloaded automatically during make." >&6;}
 	    fi
 
             # --with-pdk-link-targets=PDK_LINK_TARGETS
 
 # Check whether --with-gf180mcu-link-targets was given.
-if test "${with_gf180mcu_link_targets+set}" = set; then :
+if test ${with_gf180mcu_link_targets+y}
+then :
   withval=$with_gf180mcu_link_targets; GF180MCU_LINK_TARGETS=$with_gf180mcu_link_targets
 
 fi
 
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Link targets set to $GF180MCU_LINK_TARGETS" >&5
-$as_echo "$as_me: Link targets set to $GF180MCU_LINK_TARGETS" >&6;}
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Link targets set to $GF180MCU_LINK_TARGETS" >&5
+printf "%s\n" "$as_me: Link targets set to $GF180MCU_LINK_TARGETS" >&6;}
 
             # --with-pdk-variants=PDK_ENABLED_VARIANTS
 
 # Check whether --with-gf180mcu-variants was given.
-if test "${with_gf180mcu_variants+set}" = set; then :
+if test ${with_gf180mcu_variants+y}
+then :
   withval=$with_gf180mcu_variants; GF180MCU_ENABLED_VARIANTS=$with_gf180mcu_variants
 
 fi
 
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Enabled variants set to $GF180MCU_ENABLED_VARIANTS" >&5
-$as_echo "$as_me: Enabled variants set to $GF180MCU_ENABLED_VARIANTS" >&6;}
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabled variants set to $GF180MCU_ENABLED_VARIANTS" >&5
+printf "%s\n" "$as_me: Enabled variants set to $GF180MCU_ENABLED_VARIANTS" >&6;}
         fi
 
 
@@ -2424,7 +2498,8 @@
         SKY130_AUTO="0"
 
         # Check whether --enable-sky130-sky130 was given.
-if test "${enable_sky130_pdk+set}" = set; then :
+if test ${enable_sky130_pdk+y}
+then :
   enableval=$enable_sky130_pdk;
                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
                     export SKY130_SOURCE_PATH=../sources/sky130-pdk
@@ -2449,64 +2524,70 @@
             # Basic check that the PDK path exists, unless depending on Makefile
 	    # to download it automatically.
             if [ "$SKY130_AUTO" = "0" ]; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Checking specified path for 'sky130' at $SKY130_SOURCE_PATH" >&5
-$as_echo "$as_me: Checking specified path for 'sky130' at $SKY130_SOURCE_PATH" >&6;}
-                as_ac_File=`$as_echo "ac_cv_file_$SKY130_SOURCE_PATH" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $SKY130_SOURCE_PATH" >&5
-$as_echo_n "checking for $SKY130_SOURCE_PATH... " >&6; }
-if eval \${$as_ac_File+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking specified path for 'sky130' at $SKY130_SOURCE_PATH" >&5
+printf "%s\n" "$as_me: Checking specified path for 'sky130' at $SKY130_SOURCE_PATH" >&6;}
+                as_ac_File=`printf "%s\n" "ac_cv_file_$SKY130_SOURCE_PATH" | sed "$as_sed_sh"`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $SKY130_SOURCE_PATH" >&5
+printf %s "checking for $SKY130_SOURCE_PATH... " >&6; }
+if eval test \${$as_ac_File+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) test "$cross_compiling" = yes &&
   as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
 if test -r "$SKY130_SOURCE_PATH"; then
   eval "$as_ac_File=yes"
 else
   eval "$as_ac_File=no"
-fi
+fi ;;
+esac
 fi
 eval ac_res=\$$as_ac_File
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"
+then :
 
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: 'sky130' source path found at $SKY130_SOURCE_PATH" >&5
-$as_echo "$as_me: 'sky130' source path found at $SKY130_SOURCE_PATH" >&6;}
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: 'sky130' source path found at $SKY130_SOURCE_PATH" >&5
+printf "%s\n" "$as_me: 'sky130' source path found at $SKY130_SOURCE_PATH" >&6;}
 
-else
-
+else case e in #(
+  e)
                     as_fn_error $? "Specified path for 'sky130' at $SKY130_SOURCE_PATH not found" "$LINENO" 5
-
+                 ;;
+esac
 fi
 
 	    else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: PDK 'sky130' will be downloaded automatically during make." >&5
-$as_echo "$as_me: PDK 'sky130' will be downloaded automatically during make." >&6;}
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: PDK 'sky130' will be downloaded automatically during make." >&5
+printf "%s\n" "$as_me: PDK 'sky130' will be downloaded automatically during make." >&6;}
 	    fi
 
             # --with-pdk-link-targets=PDK_LINK_TARGETS
 
 # Check whether --with-sky130-link-targets was given.
-if test "${with_sky130_link_targets+set}" = set; then :
+if test ${with_sky130_link_targets+y}
+then :
   withval=$with_sky130_link_targets; SKY130_LINK_TARGETS=$with_sky130_link_targets
 
 fi
 
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Link targets set to $SKY130_LINK_TARGETS" >&5
-$as_echo "$as_me: Link targets set to $SKY130_LINK_TARGETS" >&6;}
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Link targets set to $SKY130_LINK_TARGETS" >&5
+printf "%s\n" "$as_me: Link targets set to $SKY130_LINK_TARGETS" >&6;}
 
             # --with-pdk-variants=PDK_ENABLED_VARIANTS
 
 # Check whether --with-sky130-variants was given.
-if test "${with_sky130_variants+set}" = set; then :
+if test ${with_sky130_variants+y}
+then :
   withval=$with_sky130_variants; SKY130_ENABLED_VARIANTS=$with_sky130_variants
 
 fi
 
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Enabled variants set to $SKY130_ENABLED_VARIANTS" >&5
-$as_echo "$as_me: Enabled variants set to $SKY130_ENABLED_VARIANTS" >&6;}
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabled variants set to $SKY130_ENABLED_VARIANTS" >&5
+printf "%s\n" "$as_me: Enabled variants set to $SKY130_ENABLED_VARIANTS" >&6;}
         fi
 
 
@@ -2522,8 +2603,8 @@
 # Set variables for tool setups
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Found tools: klayout magic netgen irsim openlane qflow xschem xcircuit" >&5
-$as_echo "$as_me: Found tools: klayout magic netgen irsim openlane qflow xschem xcircuit" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Found tools: klayout magic netgen irsim openlane qflow xschem xcircuit" >&5
+printf "%s\n" "$as_me: Found tools: klayout magic netgen irsim openlane qflow xschem xcircuit" >&6;}
 
 
 
@@ -2531,7 +2612,8 @@
 
         KLAYOUT_DISABLED=0
         # Check whether --enable-klayout was given.
-if test "${enable_klayout+set}" = set; then :
+if test ${enable_klayout+y}
+then :
   enableval=$enable_klayout;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     KLAYOUT_DISABLED=1
@@ -2546,7 +2628,8 @@
 
         MAGIC_DISABLED=0
         # Check whether --enable-magic was given.
-if test "${enable_magic+set}" = set; then :
+if test ${enable_magic+y}
+then :
   enableval=$enable_magic;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     MAGIC_DISABLED=1
@@ -2561,7 +2644,8 @@
 
         NETGEN_DISABLED=0
         # Check whether --enable-netgen was given.
-if test "${enable_netgen+set}" = set; then :
+if test ${enable_netgen+y}
+then :
   enableval=$enable_netgen;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     NETGEN_DISABLED=1
@@ -2576,7 +2660,8 @@
 
         IRSIM_DISABLED=0
         # Check whether --enable-irsim was given.
-if test "${enable_irsim+set}" = set; then :
+if test ${enable_irsim+y}
+then :
   enableval=$enable_irsim;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     IRSIM_DISABLED=1
@@ -2591,7 +2676,8 @@
 
         OPENLANE_DISABLED=0
         # Check whether --enable-openlane was given.
-if test "${enable_openlane+set}" = set; then :
+if test ${enable_openlane+y}
+then :
   enableval=$enable_openlane;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     OPENLANE_DISABLED=1
@@ -2606,7 +2692,8 @@
 
         QFLOW_DISABLED=0
         # Check whether --enable-qflow was given.
-if test "${enable_qflow+set}" = set; then :
+if test ${enable_qflow+y}
+then :
   enableval=$enable_qflow;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     QFLOW_DISABLED=1
@@ -2621,7 +2708,8 @@
 
         XSCHEM_DISABLED=0
         # Check whether --enable-xschem was given.
-if test "${enable_xschem+set}" = set; then :
+if test ${enable_xschem+y}
+then :
   enableval=$enable_xschem;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     XSCHEM_DISABLED=1
@@ -2636,7 +2724,8 @@
 
         XCIRCUIT_DISABLED=0
         # Check whether --enable-xcircuit was given.
-if test "${enable_xcircuit+set}" = set; then :
+if test ${enable_xcircuit+y}
+then :
   enableval=$enable_xcircuit;
                 if test "$enableval" == "no" -o "$enableval" == "NO"; then
                     XCIRCUIT_DISABLED=1
@@ -2652,12 +2741,13 @@
 # Magic
 # Extract the first word of "magic", so it can be a program name with args.
 set dummy magic; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MAGIC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $MAGIC in
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MAGIC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) case $MAGIC in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_MAGIC="$MAGIC" # Let the user override the test with a path.
   ;;
@@ -2666,11 +2756,15 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_MAGIC="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_MAGIC="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2678,15 +2772,16 @@
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 MAGIC=$ac_cv_path_MAGIC
 if test -n "$MAGIC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC" >&5
-$as_echo "$MAGIC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC" >&5
+printf "%s\n" "$MAGIC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2695,12 +2790,13 @@
 fi
 # Extract the first word of "patch", so it can be a program name with args.
 set dummy patch; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PATCH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PATCH in
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PATCH+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) case $PATCH in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PATCH="$PATCH" # Let the user override the test with a path.
   ;;
@@ -2709,11 +2805,15 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PATCH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PATCH="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2721,15 +2821,16 @@
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 PATCH=$ac_cv_path_PATCH
 if test -n "$PATCH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5
-$as_echo "$PATCH" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5
+printf "%s\n" "$PATCH" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2759,30 +2860,32 @@
     SKY130_FD_PR_PATH=""
 
     # Check whether --enable-primitive-sky130 was given.
-if test "${enable_primitive_sky130+set}" = set; then :
+if test ${enable_primitive_sky130+y}
+then :
   enableval=$enable_primitive_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_pr' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_pr' will be installed automatically during make." >&6;}
         	export SKY130_FD_PR_PATH=../sources/sky130_fd_pr
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_pr'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_pr'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_pr'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_pr'" >&6;}
     		export SKY130_FD_PR_PATH=""
             else
                 SKY130_FD_PR_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_pr' at $SKY130_FD_PR_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_pr' at $SKY130_FD_PR_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_pr' at $SKY130_FD_PR_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_pr' at $SKY130_FD_PR_PATH" >&6;}
             fi
             SKY130_FD_PR_PATH=`realpath $SKY130_FD_PR_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_pr' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_pr' will be installed automatically during make." >&6;}
 	    SKY130_FD_PR_PATH=../sources/sky130_fd_pr
 
-
+     ;;
+esac
 fi
 
 
@@ -2801,30 +2904,32 @@
     SKY130_FD_IO_PATH=""
 
     # Check whether --enable-io-sky130 was given.
-if test "${enable_io_sky130+set}" = set; then :
+if test ${enable_io_sky130+y}
+then :
   enableval=$enable_io_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_io' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_io' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_io' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_io' will be installed automatically during make." >&6;}
         	export SKY130_FD_IO_PATH=../sources/sky130_fd_io
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_io'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_io'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_io'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_io'" >&6;}
     		export SKY130_FD_IO_PATH=""
             else
                 SKY130_FD_IO_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_io' at $SKY130_FD_IO_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_io' at $SKY130_FD_IO_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_io' at $SKY130_FD_IO_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_io' at $SKY130_FD_IO_PATH" >&6;}
             fi
             SKY130_FD_IO_PATH=`realpath $SKY130_FD_IO_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_io' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_io' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_io' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_io' will be installed automatically during make." >&6;}
 	    SKY130_FD_IO_PATH=../sources/sky130_fd_io
 
-
+     ;;
+esac
 fi
 
 
@@ -2843,30 +2948,32 @@
     SKY130_FD_SC_HS_PATH=""
 
     # Check whether --enable-sc-hs-sky130 was given.
-if test "${enable_sc_hs_sky130+set}" = set; then :
+if test ${enable_sc_hs_sky130+y}
+then :
   enableval=$enable_sc_hs_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_HS_PATH=../sources/sky130_fd_sc_hs
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hs'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_hs'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hs'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_hs'" >&6;}
     		export SKY130_FD_SC_HS_PATH=""
             else
                 SKY130_FD_SC_HS_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hs' at $SKY130_FD_SC_HS_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_hs' at $SKY130_FD_SC_HS_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hs' at $SKY130_FD_SC_HS_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_hs' at $SKY130_FD_SC_HS_PATH" >&6;}
             fi
             SKY130_FD_SC_HS_PATH=`realpath $SKY130_FD_SC_HS_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hs' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_HS_PATH=../sources/sky130_fd_sc_hs
 
-
+     ;;
+esac
 fi
 
 
@@ -2885,30 +2992,32 @@
     SKY130_FD_SC_MS_PATH=""
 
     # Check whether --enable-sc-ms-sky130 was given.
-if test "${enable_sc_ms_sky130+set}" = set; then :
+if test ${enable_sc_ms_sky130+y}
+then :
   enableval=$enable_sc_ms_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_MS_PATH=../sources/sky130_fd_sc_ms
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_ms'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_ms'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_ms'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_ms'" >&6;}
     		export SKY130_FD_SC_MS_PATH=""
             else
                 SKY130_FD_SC_MS_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_ms' at $SKY130_FD_SC_MS_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_ms' at $SKY130_FD_SC_MS_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_ms' at $SKY130_FD_SC_MS_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_ms' at $SKY130_FD_SC_MS_PATH" >&6;}
             fi
             SKY130_FD_SC_MS_PATH=`realpath $SKY130_FD_SC_MS_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_ms' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_MS_PATH=../sources/sky130_fd_sc_ms
 
-
+     ;;
+esac
 fi
 
 
@@ -2927,30 +3036,32 @@
     SKY130_FD_SC_LS_PATH=""
 
     # Check whether --enable-sc-ls-sky130 was given.
-if test "${enable_sc_ls_sky130+set}" = set; then :
+if test ${enable_sc_ls_sky130+y}
+then :
   enableval=$enable_sc_ls_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_LS_PATH=../sources/sky130_fd_sc_ls
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_ls'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_ls'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_ls'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_ls'" >&6;}
     		export SKY130_FD_SC_LS_PATH=""
             else
                 SKY130_FD_SC_LS_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_ls' at $SKY130_FD_SC_LS_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_ls' at $SKY130_FD_SC_LS_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_ls' at $SKY130_FD_SC_LS_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_ls' at $SKY130_FD_SC_LS_PATH" >&6;}
             fi
             SKY130_FD_SC_LS_PATH=`realpath $SKY130_FD_SC_LS_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_ls' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_LS_PATH=../sources/sky130_fd_sc_ls
 
-
+     ;;
+esac
 fi
 
 
@@ -2969,30 +3080,32 @@
     SKY130_FD_SC_LP_PATH=""
 
     # Check whether --enable-sc-lp-sky130 was given.
-if test "${enable_sc_lp_sky130+set}" = set; then :
+if test ${enable_sc_lp_sky130+y}
+then :
   enableval=$enable_sc_lp_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_LP_PATH=../sources/sky130_fd_sc_lp
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_lp'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_lp'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_lp'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_lp'" >&6;}
     		export SKY130_FD_SC_LP_PATH=""
             else
                 SKY130_FD_SC_LP_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_lp' at $SKY130_FD_SC_LP_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_lp' at $SKY130_FD_SC_LP_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_lp' at $SKY130_FD_SC_LP_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_lp' at $SKY130_FD_SC_LP_PATH" >&6;}
             fi
             SKY130_FD_SC_LP_PATH=`realpath $SKY130_FD_SC_LP_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_lp' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_LP_PATH=../sources/sky130_fd_sc_lp
 
-
+     ;;
+esac
 fi
 
 
@@ -3011,30 +3124,32 @@
     SKY130_FD_SC_HD_PATH=""
 
     # Check whether --enable-sc-hd-sky130 was given.
-if test "${enable_sc_hd_sky130+set}" = set; then :
+if test ${enable_sc_hd_sky130+y}
+then :
   enableval=$enable_sc_hd_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_HD_PATH=../sources/sky130_fd_sc_hd
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hd'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_hd'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hd'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_hd'" >&6;}
     		export SKY130_FD_SC_HD_PATH=""
             else
                 SKY130_FD_SC_HD_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hd' at $SKY130_FD_SC_HD_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_hd' at $SKY130_FD_SC_HD_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hd' at $SKY130_FD_SC_HD_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_hd' at $SKY130_FD_SC_HD_PATH" >&6;}
             fi
             SKY130_FD_SC_HD_PATH=`realpath $SKY130_FD_SC_HD_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hd' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_HD_PATH=../sources/sky130_fd_sc_hd
 
-
+     ;;
+esac
 fi
 
 
@@ -3053,30 +3168,32 @@
     SKY130_FD_SC_HDLL_PATH=""
 
     # Check whether --enable-sc-hdll-sky130 was given.
-if test "${enable_sc_hdll_sky130+set}" = set; then :
+if test ${enable_sc_hdll_sky130+y}
+then :
   enableval=$enable_sc_hdll_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_HDLL_PATH=../sources/sky130_fd_sc_hdll
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hdll'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_hdll'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hdll'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_hdll'" >&6;}
     		export SKY130_FD_SC_HDLL_PATH=""
             else
                 SKY130_FD_SC_HDLL_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hdll' at $SKY130_FD_SC_HDLL_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_hdll' at $SKY130_FD_SC_HDLL_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hdll' at $SKY130_FD_SC_HDLL_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_hdll' at $SKY130_FD_SC_HDLL_PATH" >&6;}
             fi
             SKY130_FD_SC_HDLL_PATH=`realpath $SKY130_FD_SC_HDLL_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hdll' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_HDLL_PATH=../sources/sky130_fd_sc_hdll
 
-
+     ;;
+esac
 fi
 
 
@@ -3095,30 +3212,32 @@
     SKY130_FD_SC_HVL_PATH=""
 
     # Check whether --enable-sc-hvl-sky130 was given.
-if test "${enable_sc_hvl_sky130+set}" = set; then :
+if test ${enable_sc_hvl_sky130+y}
+then :
   enableval=$enable_sc_hvl_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&6;}
         	export SKY130_FD_SC_HVL_PATH=../sources/sky130_fd_sc_hvl
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hvl'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_sc_hvl'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_sc_hvl'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_sc_hvl'" >&6;}
     		export SKY130_FD_SC_HVL_PATH=""
             else
                 SKY130_FD_SC_HVL_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hvl' at $SKY130_FD_SC_HVL_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_sc_hvl' at $SKY130_FD_SC_HVL_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_sc_hvl' at $SKY130_FD_SC_HVL_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_sc_hvl' at $SKY130_FD_SC_HVL_PATH" >&6;}
             fi
             SKY130_FD_SC_HVL_PATH=`realpath $SKY130_FD_SC_HVL_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_sc_hvl' will be installed automatically during make." >&6;}
 	    SKY130_FD_SC_HVL_PATH=../sources/sky130_fd_sc_hvl
 
-
+     ;;
+esac
 fi
 
 
@@ -3137,30 +3256,32 @@
     SKY130_ML_XX_HD_PATH=""
 
     # Check whether --enable-alpha-sky130 was given.
-if test "${enable_alpha_sky130+set}" = set; then :
+if test ${enable_alpha_sky130+y}
+then :
   enableval=$enable_alpha_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&6;}
         	export SKY130_ML_XX_HD_PATH=../sources/sky130_ml_xx_hd
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_ml_xx_hd'" >&5
-$as_echo "$as_me: Disabling package 'sky130_ml_xx_hd'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_ml_xx_hd'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_ml_xx_hd'" >&6;}
     		export SKY130_ML_XX_HD_PATH=""
             else
                 SKY130_ML_XX_HD_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_ml_xx_hd' at $SKY130_ML_XX_HD_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_ml_xx_hd' at $SKY130_ML_XX_HD_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_ml_xx_hd' at $SKY130_ML_XX_HD_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_ml_xx_hd' at $SKY130_ML_XX_HD_PATH" >&6;}
             fi
             SKY130_ML_XX_HD_PATH=`realpath $SKY130_ML_XX_HD_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_ml_xx_hd' will be installed automatically during make." >&6;}
 	    SKY130_ML_XX_HD_PATH=../sources/sky130_ml_xx_hd
 
-
+     ;;
+esac
 fi
 
 
@@ -3179,30 +3300,32 @@
     XSCHEM_SKY130_PATH=""
 
     # Check whether --enable-xschem-sky130 was given.
-if test "${enable_xschem_sky130+set}" = set; then :
+if test ${enable_xschem_sky130+y}
+then :
   enableval=$enable_xschem_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'xschem_sky130' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'xschem_sky130' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'xschem_sky130' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'xschem_sky130' will be installed automatically during make." >&6;}
         	export XSCHEM_SKY130_PATH=../sources/xschem_sky130
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'xschem_sky130'" >&5
-$as_echo "$as_me: Disabling package 'xschem_sky130'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'xschem_sky130'" >&5
+printf "%s\n" "$as_me: Disabling package 'xschem_sky130'" >&6;}
     		export XSCHEM_SKY130_PATH=""
             else
                 XSCHEM_SKY130_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'xschem_sky130' at $XSCHEM_SKY130_PATH" >&5
-$as_echo "$as_me: Enabling package 'xschem_sky130' at $XSCHEM_SKY130_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'xschem_sky130' at $XSCHEM_SKY130_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'xschem_sky130' at $XSCHEM_SKY130_PATH" >&6;}
             fi
             XSCHEM_SKY130_PATH=`realpath $XSCHEM_SKY130_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'xschem_sky130' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'xschem_sky130' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'xschem_sky130' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'xschem_sky130' will be installed automatically during make." >&6;}
 	    XSCHEM_SKY130_PATH=../sources/xschem_sky130
 
-
+     ;;
+esac
 fi
 
 
@@ -3221,30 +3344,32 @@
     KLAYOUT_SKY130_PATH=""
 
     # Check whether --enable-klayout-sky130 was given.
-if test "${enable_klayout_sky130+set}" = set; then :
+if test ${enable_klayout_sky130+y}
+then :
   enableval=$enable_klayout_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'klayout_sky130' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'klayout_sky130' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'klayout_sky130' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'klayout_sky130' will be installed automatically during make." >&6;}
         	export KLAYOUT_SKY130_PATH=../sources/klayout_sky130
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'klayout_sky130'" >&5
-$as_echo "$as_me: Disabling package 'klayout_sky130'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'klayout_sky130'" >&5
+printf "%s\n" "$as_me: Disabling package 'klayout_sky130'" >&6;}
     		export KLAYOUT_SKY130_PATH=""
             else
                 KLAYOUT_SKY130_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'klayout_sky130' at $KLAYOUT_SKY130_PATH" >&5
-$as_echo "$as_me: Enabling package 'klayout_sky130' at $KLAYOUT_SKY130_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'klayout_sky130' at $KLAYOUT_SKY130_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'klayout_sky130' at $KLAYOUT_SKY130_PATH" >&6;}
             fi
             KLAYOUT_SKY130_PATH=`realpath $KLAYOUT_SKY130_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'klayout_sky130' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'klayout_sky130' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'klayout_sky130' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'klayout_sky130' will be installed automatically during make." >&6;}
 	    KLAYOUT_SKY130_PATH=../sources/klayout_sky130
 
-
+     ;;
+esac
 fi
 
 
@@ -3263,30 +3388,32 @@
     PRECHECK_SKY130_PATH=""
 
     # Check whether --enable-precheck-sky130 was given.
-if test "${enable_precheck_sky130+set}" = set; then :
+if test ${enable_precheck_sky130+y}
+then :
   enableval=$enable_precheck_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'precheck_sky130' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'precheck_sky130' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'precheck_sky130' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'precheck_sky130' will be installed automatically during make." >&6;}
         	export PRECHECK_SKY130_PATH=../sources/precheck_sky130
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'precheck_sky130'" >&5
-$as_echo "$as_me: Disabling package 'precheck_sky130'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'precheck_sky130'" >&5
+printf "%s\n" "$as_me: Disabling package 'precheck_sky130'" >&6;}
     		export PRECHECK_SKY130_PATH=""
             else
                 PRECHECK_SKY130_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'precheck_sky130' at $PRECHECK_SKY130_PATH" >&5
-$as_echo "$as_me: Enabling package 'precheck_sky130' at $PRECHECK_SKY130_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'precheck_sky130' at $PRECHECK_SKY130_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'precheck_sky130' at $PRECHECK_SKY130_PATH" >&6;}
             fi
             PRECHECK_SKY130_PATH=`realpath $PRECHECK_SKY130_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'precheck_sky130' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'precheck_sky130' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'precheck_sky130' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'precheck_sky130' will be installed automatically during make." >&6;}
 	    PRECHECK_SKY130_PATH=../sources/precheck_sky130
 
-
+     ;;
+esac
 fi
 
 
@@ -3307,29 +3434,31 @@
     SKY130_SRAM_MACROS_PATH=""
 
     # Check whether --enable-sram-sky130 was given.
-if test "${enable_sram_sky130+set}" = set; then :
+if test ${enable_sram_sky130+y}
+then :
   enableval=$enable_sram_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_sram_macros' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_sram_macros' will be installed automatically during make." >&6;}
         	export SKY130_SRAM_MACROS_PATH=../sources/sky130_sram_macros
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_sram_macros'" >&5
-$as_echo "$as_me: Disabling package 'sky130_sram_macros'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_sram_macros'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_sram_macros'" >&6;}
     		export SKY130_SRAM_MACROS_PATH=""
             else
                 SKY130_SRAM_MACROS_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_sram_macros' at $SKY130_SRAM_MACROS_PATH" >&6;}
             fi
             SKY130_SRAM_MACROS_PATH=`realpath $SKY130_SRAM_MACROS_PATH`
 
-else
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will not be installed." >&5
+printf "%s\n" "$as_me: Package 'sky130_sram_macros' will not be installed." >&6;}
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_sram_macros' will not be installed." >&5
-$as_echo "$as_me: Package 'sky130_sram_macros' will not be installed." >&6;}
-
-
+     ;;
+esac
 fi
 
 
@@ -3348,29 +3477,31 @@
     SKY130_FD_BD_SRAM_PATH=""
 
     # Check whether --enable-sram-space-sky130 was given.
-if test "${enable_sram_space_sky130+set}" = set; then :
+if test ${enable_sram_space_sky130+y}
+then :
   enableval=$enable_sram_space_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_bd_sram' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_bd_sram' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_bd_sram' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_bd_sram' will be installed automatically during make." >&6;}
         	export SKY130_FD_BD_SRAM_PATH=../sources/sky130_fd_bd_sram
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_bd_sram'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_bd_sram'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_bd_sram'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_bd_sram'" >&6;}
     		export SKY130_FD_BD_SRAM_PATH=""
             else
                 SKY130_FD_BD_SRAM_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_bd_sram' at $SKY130_FD_BD_SRAM_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_bd_sram' at $SKY130_FD_BD_SRAM_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_bd_sram' at $SKY130_FD_BD_SRAM_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_bd_sram' at $SKY130_FD_BD_SRAM_PATH" >&6;}
             fi
             SKY130_FD_BD_SRAM_PATH=`realpath $SKY130_FD_BD_SRAM_PATH`
 
-else
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_bd_sram' will not be installed." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_bd_sram' will not be installed." >&6;}
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_bd_sram' will not be installed." >&5
-$as_echo "$as_me: Package 'sky130_fd_bd_sram' will not be installed." >&6;}
-
-
+     ;;
+esac
 fi
 
 
@@ -3389,29 +3520,31 @@
     SKY130_FD_PR_RERAM_PATH=""
 
     # Check whether --enable-reram-sky130 was given.
-if test "${enable_reram_sky130+set}" = set; then :
+if test ${enable_reram_sky130+y}
+then :
   enableval=$enable_reram_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr_reram' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_fd_pr_reram' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr_reram' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_pr_reram' will be installed automatically during make." >&6;}
         	export SKY130_FD_PR_RERAM_PATH=../sources/sky130_fd_pr_reram
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_pr_reram'" >&5
-$as_echo "$as_me: Disabling package 'sky130_fd_pr_reram'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_fd_pr_reram'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_fd_pr_reram'" >&6;}
     		export SKY130_FD_PR_RERAM_PATH=""
             else
                 SKY130_FD_PR_RERAM_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_pr_reram' at $SKY130_FD_PR_RERAM_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_fd_pr_reram' at $SKY130_FD_PR_RERAM_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_fd_pr_reram' at $SKY130_FD_PR_RERAM_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_fd_pr_reram' at $SKY130_FD_PR_RERAM_PATH" >&6;}
             fi
             SKY130_FD_PR_RERAM_PATH=`realpath $SKY130_FD_PR_RERAM_PATH`
 
-else
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr_reram' will not be installed." >&5
+printf "%s\n" "$as_me: Package 'sky130_fd_pr_reram' will not be installed." >&6;}
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_fd_pr_reram' will not be installed." >&5
-$as_echo "$as_me: Package 'sky130_fd_pr_reram' will not be installed." >&6;}
-
-
+     ;;
+esac
 fi
 
 
@@ -3430,29 +3563,31 @@
     SKY130_OSU_T12_PATH=""
 
     # Check whether --enable-osu-t12-sky130 was given.
-if test "${enable_osu_t12_sky130+set}" = set; then :
+if test ${enable_osu_t12_sky130+y}
+then :
   enableval=$enable_osu_t12_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t12' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_osu_t12' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t12' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_osu_t12' will be installed automatically during make." >&6;}
         	export SKY130_OSU_T12_PATH=../sources/sky130_osu_t12
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t12'" >&5
-$as_echo "$as_me: Disabling package 'sky130_osu_t12'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t12'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_osu_t12'" >&6;}
     		export SKY130_OSU_T12_PATH=""
             else
                 SKY130_OSU_T12_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t12' at $SKY130_OSU_T12_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_osu_t12' at $SKY130_OSU_T12_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t12' at $SKY130_OSU_T12_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_osu_t12' at $SKY130_OSU_T12_PATH" >&6;}
             fi
             SKY130_OSU_T12_PATH=`realpath $SKY130_OSU_T12_PATH`
 
-else
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t12' will not be installed." >&5
+printf "%s\n" "$as_me: Package 'sky130_osu_t12' will not be installed." >&6;}
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t12' will not be installed." >&5
-$as_echo "$as_me: Package 'sky130_osu_t12' will not be installed." >&6;}
-
-
+     ;;
+esac
 fi
 
 
@@ -3471,29 +3606,31 @@
     SKY130_OSU_T15_PATH=""
 
     # Check whether --enable-osu-t15-sky130 was given.
-if test "${enable_osu_t15_sky130+set}" = set; then :
+if test ${enable_osu_t15_sky130+y}
+then :
   enableval=$enable_osu_t15_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t15' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_osu_t15' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t15' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_osu_t15' will be installed automatically during make." >&6;}
         	export SKY130_OSU_T15_PATH=../sources/sky130_osu_t15
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t15'" >&5
-$as_echo "$as_me: Disabling package 'sky130_osu_t15'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t15'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_osu_t15'" >&6;}
     		export SKY130_OSU_T15_PATH=""
             else
                 SKY130_OSU_T15_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t15' at $SKY130_OSU_T15_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_osu_t15' at $SKY130_OSU_T15_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t15' at $SKY130_OSU_T15_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_osu_t15' at $SKY130_OSU_T15_PATH" >&6;}
             fi
             SKY130_OSU_T15_PATH=`realpath $SKY130_OSU_T15_PATH`
 
-else
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t15' will not be installed." >&5
+printf "%s\n" "$as_me: Package 'sky130_osu_t15' will not be installed." >&6;}
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t15' will not be installed." >&5
-$as_echo "$as_me: Package 'sky130_osu_t15' will not be installed." >&6;}
-
-
+     ;;
+esac
 fi
 
 
@@ -3512,29 +3649,31 @@
     SKY130_OSU_T18_PATH=""
 
     # Check whether --enable-osu-t18-sky130 was given.
-if test "${enable_osu_t18_sky130+set}" = set; then :
+if test ${enable_osu_t18_sky130+y}
+then :
   enableval=$enable_osu_t18_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t18' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'sky130_osu_t18' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t18' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'sky130_osu_t18' will be installed automatically during make." >&6;}
         	export SKY130_OSU_T18_PATH=../sources/sky130_osu_t18
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t18'" >&5
-$as_echo "$as_me: Disabling package 'sky130_osu_t18'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu_t18'" >&5
+printf "%s\n" "$as_me: Disabling package 'sky130_osu_t18'" >&6;}
     		export SKY130_OSU_T18_PATH=""
             else
                 SKY130_OSU_T18_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t18' at $SKY130_OSU_T18_PATH" >&5
-$as_echo "$as_me: Enabling package 'sky130_osu_t18' at $SKY130_OSU_T18_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu_t18' at $SKY130_OSU_T18_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'sky130_osu_t18' at $SKY130_OSU_T18_PATH" >&6;}
             fi
             SKY130_OSU_T18_PATH=`realpath $SKY130_OSU_T18_PATH`
 
-else
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t18' will not be installed." >&5
+printf "%s\n" "$as_me: Package 'sky130_osu_t18' will not be installed." >&6;}
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu_t18' will not be installed." >&5
-$as_echo "$as_me: Package 'sky130_osu_t18' will not be installed." >&6;}
-
-
+     ;;
+esac
 fi
 
 
@@ -3555,30 +3694,32 @@
     GF180MCU_FD_PR_PATH=""
 
     # Check whether --enable-primitive-gf180mcu was given.
-if test "${enable_primitive_gf180mcu+set}" = set; then :
+if test ${enable_primitive_gf180mcu+y}
+then :
   enableval=$enable_primitive_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&6;}
         	export GF180MCU_FD_PR_PATH=../sources/gf180mcu_fd_pr
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_pr'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_fd_pr'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_pr'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_fd_pr'" >&6;}
     		export GF180MCU_FD_PR_PATH=""
             else
                 GF180MCU_FD_PR_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_pr' at $GF180MCU_FD_PR_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_fd_pr' at $GF180MCU_FD_PR_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_pr' at $GF180MCU_FD_PR_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_fd_pr' at $GF180MCU_FD_PR_PATH" >&6;}
             fi
             GF180MCU_FD_PR_PATH=`realpath $GF180MCU_FD_PR_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_pr' will be installed automatically during make." >&6;}
 	    GF180MCU_FD_PR_PATH=../sources/gf180mcu_fd_pr
 
-
+     ;;
+esac
 fi
 
 
@@ -3597,30 +3738,32 @@
     GF180MCU_FD_PV_PATH=""
 
     # Check whether --enable-verification-gf180mcu was given.
-if test "${enable_verification_gf180mcu+set}" = set; then :
+if test ${enable_verification_gf180mcu+y}
+then :
   enableval=$enable_verification_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&6;}
         	export GF180MCU_FD_PV_PATH=../sources/gf180mcu_fd_pv
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_pv'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_fd_pv'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_pv'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_fd_pv'" >&6;}
     		export GF180MCU_FD_PV_PATH=""
             else
                 GF180MCU_FD_PV_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_pv' at $GF180MCU_FD_PV_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_fd_pv' at $GF180MCU_FD_PV_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_pv' at $GF180MCU_FD_PV_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_fd_pv' at $GF180MCU_FD_PV_PATH" >&6;}
             fi
             GF180MCU_FD_PV_PATH=`realpath $GF180MCU_FD_PV_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&6;}
 	    GF180MCU_FD_PV_PATH=../sources/gf180mcu_fd_pv
 
-
+     ;;
+esac
 fi
 
 
@@ -3639,30 +3782,32 @@
     GF180MCU_FD_IO_PATH=""
 
     # Check whether --enable-io-gf180mcu was given.
-if test "${enable_io_gf180mcu+set}" = set; then :
+if test ${enable_io_gf180mcu+y}
+then :
   enableval=$enable_io_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_io' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_io' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_io' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_io' will be installed automatically during make." >&6;}
         	export GF180MCU_FD_IO_PATH=../sources/gf180mcu_fd_io
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_io'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_fd_io'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_io'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_fd_io'" >&6;}
     		export GF180MCU_FD_IO_PATH=""
             else
                 GF180MCU_FD_IO_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_io' at $GF180MCU_FD_IO_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_fd_io' at $GF180MCU_FD_IO_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_io' at $GF180MCU_FD_IO_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_fd_io' at $GF180MCU_FD_IO_PATH" >&6;}
             fi
             GF180MCU_FD_IO_PATH=`realpath $GF180MCU_FD_IO_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_io' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_io' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_io' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_io' will be installed automatically during make." >&6;}
 	    GF180MCU_FD_IO_PATH=../sources/gf180mcu_fd_io
 
-
+     ;;
+esac
 fi
 
 
@@ -3681,30 +3826,32 @@
     GF180MCU_FD_SC_MCU7T5V0_PATH=""
 
     # Check whether --enable-sc-7t5v0-gf180mcu was given.
-if test "${enable_sc_7t5v0_gf180mcu+set}" = set; then :
+if test ${enable_sc_7t5v0_gf180mcu+y}
+then :
   enableval=$enable_sc_7t5v0_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&6;}
         	export GF180MCU_FD_SC_MCU7T5V0_PATH=../sources/gf180mcu_fd_sc_mcu7t5v0
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_sc_mcu7t5v0'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_fd_sc_mcu7t5v0'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_sc_mcu7t5v0'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_fd_sc_mcu7t5v0'" >&6;}
     		export GF180MCU_FD_SC_MCU7T5V0_PATH=""
             else
                 GF180MCU_FD_SC_MCU7T5V0_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_sc_mcu7t5v0' at $GF180MCU_FD_SC_MCU7T5V0_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_fd_sc_mcu7t5v0' at $GF180MCU_FD_SC_MCU7T5V0_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_sc_mcu7t5v0' at $GF180MCU_FD_SC_MCU7T5V0_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_fd_sc_mcu7t5v0' at $GF180MCU_FD_SC_MCU7T5V0_PATH" >&6;}
             fi
             GF180MCU_FD_SC_MCU7T5V0_PATH=`realpath $GF180MCU_FD_SC_MCU7T5V0_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_sc_mcu7t5v0' will be installed automatically during make." >&6;}
 	    GF180MCU_FD_SC_MCU7T5V0_PATH=../sources/gf180mcu_fd_sc_mcu7t5v0
 
-
+     ;;
+esac
 fi
 
 
@@ -3723,30 +3870,32 @@
     GF180MCU_FD_SC_MCU9T5V0_PATH=""
 
     # Check whether --enable-sc-9t5v0-gf180mcu was given.
-if test "${enable_sc_9t5v0_gf180mcu+set}" = set; then :
+if test ${enable_sc_9t5v0_gf180mcu+y}
+then :
   enableval=$enable_sc_9t5v0_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&6;}
         	export GF180MCU_FD_SC_MCU9T5V0_PATH=../sources/gf180mcu_fd_sc_mcu9t5v0
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_sc_mcu9t5v0'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_fd_sc_mcu9t5v0'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_sc_mcu9t5v0'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_fd_sc_mcu9t5v0'" >&6;}
     		export GF180MCU_FD_SC_MCU9T5V0_PATH=""
             else
                 GF180MCU_FD_SC_MCU9T5V0_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_sc_mcu9t5v0' at $GF180MCU_FD_SC_MCU9T5V0_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_fd_sc_mcu9t5v0' at $GF180MCU_FD_SC_MCU9T5V0_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_sc_mcu9t5v0' at $GF180MCU_FD_SC_MCU9T5V0_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_fd_sc_mcu9t5v0' at $GF180MCU_FD_SC_MCU9T5V0_PATH" >&6;}
             fi
             GF180MCU_FD_SC_MCU9T5V0_PATH=`realpath $GF180MCU_FD_SC_MCU9T5V0_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_sc_mcu9t5v0' will be installed automatically during make." >&6;}
 	    GF180MCU_FD_SC_MCU9T5V0_PATH=../sources/gf180mcu_fd_sc_mcu9t5v0
 
-
+     ;;
+esac
 fi
 
 
@@ -3765,30 +3914,32 @@
     GF180MCU_FD_IP_SRAM_PATH=""
 
     # Check whether --enable-sram-gf180mcu was given.
-if test "${enable_sram_gf180mcu+set}" = set; then :
+if test ${enable_sram_gf180mcu+y}
+then :
   enableval=$enable_sram_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&6;}
         	export GF180MCU_FD_IP_SRAM_PATH=../sources/gf180mcu_fd_ip_sram
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_ip_sram'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_fd_ip_sram'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_ip_sram'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_fd_ip_sram'" >&6;}
     		export GF180MCU_FD_IP_SRAM_PATH=""
             else
                 GF180MCU_FD_IP_SRAM_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_ip_sram' at $GF180MCU_FD_IP_SRAM_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_fd_ip_sram' at $GF180MCU_FD_IP_SRAM_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_ip_sram' at $GF180MCU_FD_IP_SRAM_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_fd_ip_sram' at $GF180MCU_FD_IP_SRAM_PATH" >&6;}
             fi
             GF180MCU_FD_IP_SRAM_PATH=`realpath $GF180MCU_FD_IP_SRAM_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_fd_ip_sram' will be installed automatically during make." >&6;}
 	    GF180MCU_FD_IP_SRAM_PATH=../sources/gf180mcu_fd_ip_sram
 
-
+     ;;
+esac
 fi
 
 
@@ -3809,30 +3960,32 @@
     GF180MCU_OSU_SC_PATH=""
 
     # Check whether --enable-osu-sc-gf180mcu was given.
-if test "${enable_osu_sc_gf180mcu+set}" = set; then :
+if test ${enable_osu_sc_gf180mcu+y}
+then :
   enableval=$enable_osu_sc_gf180mcu;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&6;}
         	export GF180MCU_OSU_SC_PATH=../sources/gf180mcu_osu_sc
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_osu_sc'" >&5
-$as_echo "$as_me: Disabling package 'gf180mcu_osu_sc'" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_osu_sc'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_osu_sc'" >&6;}
     		export GF180MCU_OSU_SC_PATH=""
             else
                 GF180MCU_OSU_SC_PATH=$enableval
-                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_osu_sc' at $GF180MCU_OSU_SC_PATH" >&5
-$as_echo "$as_me: Enabling package 'gf180mcu_osu_sc' at $GF180MCU_OSU_SC_PATH" >&6;}
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_osu_sc' at $GF180MCU_OSU_SC_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_osu_sc' at $GF180MCU_OSU_SC_PATH" >&6;}
             fi
             GF180MCU_OSU_SC_PATH=`realpath $GF180MCU_OSU_SC_PATH`
 
-else
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&5
-$as_echo "$as_me: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&6;}
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_osu_sc' will be installed automatically during make." >&6;}
 	    GF180MCU_OSU_SC_PATH=../sources/gf180mcu_osu_sc
 
-
+     ;;
+esac
 fi
 
 
@@ -3843,14 +3996,59 @@
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem xcircuit" >&5
-$as_echo "$as_me: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem xcircuit" >&6;}
+
+
+
+    # echo target targetvar flag location
+
+    GF180MCU_AS_SC_PATH=""
+
+    # Check whether --enable-avalon-sc-gf180mcu was given.
+if test ${enable_avalon_sc_gf180mcu+y}
+then :
+  enableval=$enable_avalon_sc_gf180mcu;
+            if test "$enableval" == "yes" -o "$enableval" == "YES"; then
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_as_sc' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_as_sc' will be installed automatically during make." >&6;}
+        	export GF180MCU_AS_SC_PATH=../sources/gf180mcu_as_sc
+            elif test "$enableval" == "no" -o "$enableval" == "NO"; then
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_as_sc'" >&5
+printf "%s\n" "$as_me: Disabling package 'gf180mcu_as_sc'" >&6;}
+    		export GF180MCU_AS_SC_PATH=""
+            else
+                GF180MCU_AS_SC_PATH=$enableval
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_as_sc' at $GF180MCU_AS_SC_PATH" >&5
+printf "%s\n" "$as_me: Enabling package 'gf180mcu_as_sc' at $GF180MCU_AS_SC_PATH" >&6;}
+            fi
+            GF180MCU_AS_SC_PATH=`realpath $GF180MCU_AS_SC_PATH`
+
+else case e in #(
+  e)
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_as_sc' will be installed automatically during make." >&5
+printf "%s\n" "$as_me: Package 'gf180mcu_as_sc' will be installed automatically during make." >&6;}
+	    GF180MCU_AS_SC_PATH=../sources/gf180mcu_as_sc
+
+     ;;
+esac
+fi
+
+
+
+
+
+
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem xcircuit" >&5
+printf "%s\n" "$as_me: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem xcircuit" >&6;}
 
 # Check for "--with-reference"
 USE_REFERENCE=0
 
 # Check whether --with-reference was given.
-if test "${with_reference+set}" = set; then :
+if test ${with_reference+y}
+then :
   withval=$with_reference;
         pdks_reference=$withval
         if test "$withval" == "yes" -o "$withval" == "YES"; then
@@ -3867,7 +4065,8 @@
 EF_STYLE=0
 
 # Check whether --with-ef-style was given.
-if test "${with_ef_style+set}" = set; then :
+if test ${with_ef_style+y}
+then :
   withval=$with_ef_style;
         pdks_ef_style=$withval
         if test "$withval" == "yes" -o "$withval" == "YES"; then
@@ -3897,8 +4096,8 @@
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# 'ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* 'ac_cv_foo' will be assigned the
 # following values.
 
 _ACEOF
@@ -3914,8 +4113,8 @@
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -3928,14 +4127,14 @@
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
+      # 'set' does not quote correctly, so add quotes: double-quote
       # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
       ;; #(
     *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      # 'set' quotes correctly as required by POSIX, so do not add quotes.
       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
     esac |
@@ -3945,15 +4144,15 @@
      /^ac_cv_env_/b end
      t clear
      :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
      t end
      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
       if test ! -f "$cache_file" || test -h "$cache_file"; then
 	cat confcache >"$cache_file"
       else
@@ -3967,8 +4166,8 @@
       fi
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -3999,9 +4198,7 @@
 t quote
 b any
 :quote
-s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
+s/[][	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
 s/\$/$$/g
 H
 :any
@@ -4021,7 +4218,7 @@
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -4037,8 +4234,8 @@
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
 as_write_fail=0
 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
@@ -4061,63 +4258,65 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""	$as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -4126,13 +4325,6 @@
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -4141,43 +4333,27 @@
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -4190,9 +4366,9 @@
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -4223,22 +4399,25 @@
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
+
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -4246,16 +4425,18 @@
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
 
@@ -4282,7 +4463,7 @@
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -4304,6 +4485,10 @@
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -4317,6 +4502,12 @@
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -4328,9 +4519,9 @@
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -4358,7 +4549,7 @@
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -4367,7 +4558,7 @@
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -4411,10 +4602,12 @@
 as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 exec 6>&1
@@ -4430,7 +4623,7 @@
 # values after options handling.
 ac_log="
 This file was extended by open_pdks $as_me 1.0, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -4457,7 +4650,7 @@
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
+'$as_me' instantiates files and other configuration actions
 from templates according to the current configuration.  Unless the files
 and actions are specified as TAGs, all are instantiated by default.
 
@@ -4479,14 +4672,16 @@
 Report bugs to <github.com/RTimothyEdwards/open_pdks>."
 
 _ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
 open_pdks config.status 1.0
-configured by $0, generated by GNU Autoconf 2.69,
+configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -4523,28 +4718,28 @@
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
+    printf "%s\n" "$ac_cs_version"; exit ;;
   --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
+    printf "%s\n" "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h |  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
+    printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
+  -*) as_fn_error $? "unrecognized option: '$1'
+Try '$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
@@ -4565,7 +4760,7 @@
 if \$ac_cs_recheck; then
   set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
   exec "\$@"
@@ -4579,7 +4774,7 @@
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  $as_echo "$ac_log"
+  printf "%s\n" "$ac_log"
 } >&5
 
 _ACEOF
@@ -4594,7 +4789,7 @@
   case $ac_config_target in
     "$MAKEFILES") CONFIG_FILES="$CONFIG_FILES $MAKEFILES" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -4604,7 +4799,7 @@
 # We use the long form for the default assignment because of an extremely
 # bizarre bug on SunOS 4.1.3.
 if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -4612,7 +4807,7 @@
 # creating and moving files from /tmp can sometimes cause problems.
 # Hook for its removal unless debugging.
 # Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
+# after its creation but before its name has been assigned to '$tmp'.
 $debug ||
 {
   tmp= ac_tmp=
@@ -4636,7 +4831,7 @@
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
+# This happens for instance with './config.status config.h'.
 if test -n "$CONFIG_FILES"; then
 
 
@@ -4802,7 +4997,7 @@
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -4824,33 +5019,33 @@
       -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
 	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
+	 # because $ac_f cannot contain ':'.
 	 test -f "$ac_f" ||
 	   case $ac_f in
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+	   as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;;
       esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # Let's still pretend it is 'configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	  printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
 	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
     case $configure_input in #(
     *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
+       ac_sed_conf_input=`printf "%s\n" "$configure_input" |
        sed 's/[\\\\&|]/\\\\&/g'`;; #(
     *) ac_sed_conf_input=$configure_input;;
     esac
@@ -4867,7 +5062,7 @@
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -4891,9 +5086,9 @@
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -4946,8 +5141,8 @@
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
@@ -4960,7 +5155,7 @@
 esac
 _ACEOF
 
-# Neutralize VPATH when `$srcdir' = `.'.
+# Neutralize VPATH when '$srcdir' = '.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -4989,9 +5184,9 @@
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
@@ -5038,10 +5233,11 @@
   $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Build configured successfully" >&5
-$as_echo "Build configured successfully" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Build configured successfully" >&5
+printf "%s\n" "Build configured successfully" >&6; }
+
diff --git a/scripts/configure.ac b/scripts/configure.ac
index e3fbad5..c8fe516 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -262,6 +262,7 @@
 
 # GlobalFoundries gf180mcu optional
 M4_GEN_INSTALLATION(gf180mcu_osu_sc, osu-sc-gf180mcu, ../sources)
+M4_GEN_INSTALLATION(gf180mcu_as_sc, avalon-sc-gf180mcu, ../sources)
 
 AC_DEFUN([M4_GEN_WITH_TOOLS], [
     m4_foreach_w(tool, $1, [
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 3c67bb6..1868b2c 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -172,7 +172,6 @@
 #
 # The variables below are substituted from the configuration options:
 #
-#	EF_STYLE: 1 for efabless style, 0 otherwise
 #	LINK_TARGETS_A: If "source", link back to source when possible
 #	ENABLED_VARIANTS: If not "all", then compile/install only the specified variants
 #
@@ -223,14 +222,6 @@
 unexport PDKPATH 
 unexport PDK_ROOT 
 
-# If EF_STYLE is set to 1, then efabless naming conventions are
-# used, otherwise the generic naming conventions are used.
-# Mainly, the hierarchy of library names and file types is reversed
-# (e.g., sky130_fd_sc_hd/lef vs. lef/sky130_fd_sc_hd).
-
-# EF_STYLE = 0 | 1
-EF_STYLE = @EF_STYLE@
-
 # Normally it's fine to keep the staging path in a local directory,
 # although /tmp or a dedicated staging area are also fine, as long
 # as the install process can write to the path.
@@ -332,13 +323,8 @@
 # NOTE:  Install destination is the git repository of the technology platform.
 # Once updated in git, the git project can be distributed to all hosts.
 #
-ifeq (${EF_STYLE}, 1)
-    CONFIG_DIR = .ef-config
-    REV_DIR = ${REVISION}
-else
-    CONFIG_DIR = .config
-    REV_DIR = .
-endif
+CONFIG_DIR = .config
+REV_DIR = .
 
 # EF process nodes created from the master sources
 SKY130A = sky130A
@@ -474,14 +460,6 @@
 COMMIT_DEFS += -DMAGIC_VERSION=$(shell magic -dnull -noconsole --version)
 COMMIT_DEFS += -DOPEN_PDKS_VERSION=$(shell cat ../VERSION)
 
-ifeq (${EF_STYLE}, 1)
-    EF_FORMAT = -ef_format
-    SKY130A_DEFS += -DEF_FORMAT
-    SKY130B_DEFS += -DEF_FORMAT
-else
-    EF_FORMAT = -std_format
-endif
-
 MAGICTOP = libs.tech/magic
 NETGENTOP = libs.tech/netgen
 IRSIMTOP = libs.tech/irsim
@@ -492,13 +470,8 @@
 XCIRCUITTOP = libs.tech/xcircuit
 NGSPICETOP = libs.tech/ngspice
 
-ifeq (${EF_STYLE}, 1)
-    MAGICPATH = ${MAGICTOP}/${REVISION}
-    MAGICCURRENT = ${MAGICTOP}/current
-else
-    MAGICPATH = ${MAGICTOP}
-    MAGICCURRENT = ${MAGICTOP}
-endif
+MAGICPATH = ${MAGICTOP}
+MAGICCURRENT = ${MAGICTOP}
 
 # Currently, netgen, qflow, irsim, and klayout do not use revisioning (needs to change!)
 NETGENPATH = ${NETGENTOP}
@@ -568,16 +541,16 @@
 
 # The following script in the ../common directory does most of the work of
 # copying or linking the foundry vendor files to the target directory.
-STAGE = set -f ; ../common/foundry_install.py ${EF_FORMAT} ${TIMESTAMP_OPT}
+STAGE = set -f ; ../common/foundry_install.py -std_format ${TIMESTAMP_OPT}
 ifneq ($(DESTDIR), )
-INSTALL = ../common/staging_install.py -writeto $(DESTDIR) ${EF_FORMAT}
+INSTALL = ../common/staging_install.py -writeto $(DESTDIR) -std_format
 else
-INSTALL = ../common/staging_install.py ${EF_FORMAT}
+INSTALL = ../common/staging_install.py -std_format
 endif
 
 # The script(s) below are used for custom changes to the vendor PDK files
-ADDPROP = ../common/insert_property.py ${EF_FORMAT}
-ADDLAYER = ../common/insert_layer.py ${EF_FORMAT}
+ADDPROP = ../common/insert_property.py -std_format
+ADDLAYER = ../common/insert_layer.py -std_format
 
 # List the EDA tools to install local setup files for
 TOOLS = 
@@ -630,46 +603,24 @@
         TOOLS += xcircuit
 endif
 
-# These definitions depend on the setting of EF_STYLE
-ifeq (${EF_STYLE}, 1)
-	IO_VERILOG = verilog/sky130_fd_io
-	IO_GDS = gds/sky130_fd_io
-	HD_VERILOG = verilog/sky130_fd_sc_hd
-	HDLL_VERILOG = verilog/sky130_fd_sc_hdll
-	HVL_VERILOG = verilog/sky130_fd_sc_hvl
-	HS_VERILOG = verilog/sky130_fd_sc_hs
-	MS_VERILOG = verilog/sky130_fd_sc_ms
-	LS_VERILOG = verilog/sky130_fd_sc_ls
-	LP_VERILOG = verilog/sky130_fd_sc_lp
-	HD_TECHLEF = techLEF/sky130_fd_sc_hd
-	HDLL_TECHLEF = techLEF/sky130_fd_sc_hdll
-	MLXX_SCRIPTS = scripts/sky130_ml_xx_hd
-	PR_SPICE = spi/sky130_fd_pr
-	HVL_SPICE = spi/sky130_fd_sc_hvl
-	HD_SPICE = spi/sky130_fd_sc_hd
-	HVL_PATCH4 = 4b
-	HVL_CDL = cdl/sky130_fd_sc_hvl
-	SPIEXT = spi
-else
-	IO_VERILOG = sky130_fd_io/verilog
-	IO_GDS = sky130_fd_io/gds
-	HD_VERILOG = sky130_fd_sc_hd/verilog
-	HDLL_VERILOG = sky130_fd_sc_hdll/verilog
-	HVL_VERILOG = sky130_fd_sc_hvl/verilog
-	HS_VERILOG = sky130_fd_sc_hs/verilog
-	MS_VERILOG = sky130_fd_sc_ms/verilog
-	LS_VERILOG = sky130_fd_sc_ls/verilog
-	LP_VERILOG = sky130_fd_sc_lp/verilog
-	HD_TECHLEF = sky130_fd_sc_hd/techlef
-	HDLL_TECHLEF = sky130_fd_sc_hdll/techlef
-	MLXX_SCRIPTS = sky130_ml_xx_hd/scripts
-	PR_SPICE = sky130_fd_pr/spice
-	HVL_SPICE = sky130_fd_sc_hvl/spice
-	HD_SPICE = sky130_fd_sc_hd/spice
-	HVL_PATCH4 = 4
-	HVL_CDL = sky130_fd_sc_hvl/cdl
-	SPIEXT = spice
-endif
+IO_VERILOG = sky130_fd_io/verilog
+IO_GDS = sky130_fd_io/gds
+HD_VERILOG = sky130_fd_sc_hd/verilog
+HDLL_VERILOG = sky130_fd_sc_hdll/verilog
+HVL_VERILOG = sky130_fd_sc_hvl/verilog
+HS_VERILOG = sky130_fd_sc_hs/verilog
+MS_VERILOG = sky130_fd_sc_ms/verilog
+LS_VERILOG = sky130_fd_sc_ls/verilog
+LP_VERILOG = sky130_fd_sc_lp/verilog
+HD_TECHLEF = sky130_fd_sc_hd/techlef
+HDLL_TECHLEF = sky130_fd_sc_hdll/techlef
+MLXX_SCRIPTS = sky130_ml_xx_hd/scripts
+PR_SPICE = sky130_fd_pr/spice
+HVL_SPICE = sky130_fd_sc_hvl/spice
+HD_SPICE = sky130_fd_sc_hd/spice
+HVL_PATCH4 = 4
+HVL_CDL = sky130_fd_sc_hvl/cdl
+SPIEXT = spice
 
 all: $(foreach var, ${VARIANTS}, all-$(var))
 
@@ -1074,9 +1025,6 @@
 	rm -f ${MAGIC_STAGING_$*}/${SKY130$*}.tcl
 	rm -f ${MAGIC_STAGING_$*}/${SKY130$*}-BindKeys
 	rm -f ${MAGIC_STAGING_$*}/magicrc
-	if test "${EF_STYLE}" == "1" ; then \
-	    (cd ${MAGICTOP_STAGING_$*} ; ln -s ${REV_DIR} current) ; \
-	fi
 	cp -rp custom/scripts/seal_ring_generator ${MAGIC_STAGING_$*}/.
 	cp -rp custom/scripts/bump_bond_generator ${MAGIC_STAGING_$*}/.
 	cp custom/scripts/run_standard_drc.py ${MAGIC_STAGING_$*}/.
@@ -1545,7 +1493,7 @@
 
 	# Run the add_properties.py script to add extraction information to layout
 	# cells for which the intended device cannot be extracted.
-	./custom/scripts/add_properties.py ${EF_FORMAT} -variant=${SKY130$*} \
+	./custom/scripts/add_properties.py -std_format -variant=${SKY130$*} \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
 
 io-%:
diff --git a/sky130/custom/scripts/add_properties.py b/sky130/custom/scripts/add_properties.py
index ccec0cf..45095f0 100755
--- a/sky130/custom/scripts/add_properties.py
+++ b/sky130/custom/scripts/add_properties.py
@@ -28,7 +28,6 @@
     else:
         arguments.append(item)
 
-ef_format = False
 variant = 'sky130A'
 magpath = variant + '/libs.ref/sky130_fd_pr/mag'
 maglefpath = variant + '/libs.ref/sky130_fd_pr/maglef'
@@ -41,12 +40,6 @@
     magpath = variant + '/libs.ref/sky130_fd_pr/mag'
     maglefpath = variant + '/libs.ref/sky130_fd_pr/maglef'
     spicepath = variant + '/libs.ref/sky130_fd_pr/spice'
-    for option in options:
-        if option == 'ef_format':
-            ef_format = True
-            magpath = variant + '/libs.ref/mag/sky130_fd_pr'
-            maglefpath = variant + '/libs.ref/maglef/sky130_fd_pr'
-            spicepath = variant + '/libs.ref/spice/sky130_fd_pr'
 elif len(arguments) > 0:
     magpath = arguments[0]
     maglefpath = magpath.replace('/mag/', '/maglef/')
@@ -309,8 +302,6 @@
 
         propcmd = ['../common/insert_property.py', variant, 'sky130_fd_pr',
 		device, 'device primitive']
-        if ef_format:
-            propcmd.append('-ef_format')
 
         # Just call the insert_property.py script
         subprocess.run(propcmd, stdout = subprocess.DEVNULL, stderr = subprocess.DEVNULL)
@@ -375,8 +366,6 @@
 
         propcmd = ['../common/insert_property.py', variant, 'sky130_fd_pr',
 		device, 'gencell ' + gencell]
-        if ef_format:
-            propcmd.append('-ef_format')
 
         # Just call the insert_property.py script
         subprocess.run(propcmd, stdout = subprocess.DEVNULL, stderr = subprocess.DEVNULL)
diff --git a/sky130/custom/scripts/mismatch_params.py b/sky130/custom/scripts/mismatch_params.py
index 2fee7c7..8f49549 100755
--- a/sky130/custom/scripts/mismatch_params.py
+++ b/sky130/custom/scripts/mismatch_params.py
@@ -28,9 +28,6 @@
         if option.startswith('variant'):
             variant = option.split('=')[1]
     walkpath = variant + '/libs.ref/sky130_fd_pr/spice'
-    for option in options: 
-        if option == 'ef_format':
-            walkpath = variant + '/libs.ref/spi/sky130_fd_pr'
 elif len(arguments) > 0:
     walkpath = arguments[0]
 
diff --git a/sky130/custom/scripts/process_params.py b/sky130/custom/scripts/process_params.py
index 0026487..ade17b6 100755
--- a/sky130/custom/scripts/process_params.py
+++ b/sky130/custom/scripts/process_params.py
@@ -34,9 +34,6 @@
         if option.startswith('variant'):
             variant = option.split('=')[1]
     walkpath = variant + '/libs.ref/sky130_fd_pr/spice'
-    for option in options:
-        if option == 'ef_format':
-            walkpath = variant + '/libs.ref/spi/sky130_fd_pr'
 elif len(arguments) > 0:
     walkpath = arguments[0]
 
diff --git a/sky130/custom/scripts/rename_cells.py b/sky130/custom/scripts/rename_cells.py
index 66642c8..2916d3f 100755
--- a/sky130/custom/scripts/rename_cells.py
+++ b/sky130/custom/scripts/rename_cells.py
@@ -5,7 +5,6 @@
 # This script renames include paths from SPICE files in the cells
 # (libs.ref/sky130_fd_pr) directory that point to other cells
 # directories, to point to the correct location in libs.ref/sky130_fd_pr/spice/
-# (or libs.ref/spi/sky130_fd_pr, if -ef_format is specified).
 #
 #
 # This script is a filter to be run by setting the name of this script as
diff --git a/sky130/custom/scripts/rename_models.py b/sky130/custom/scripts/rename_models.py
index 002fafc..f110628 100755
--- a/sky130/custom/scripts/rename_models.py
+++ b/sky130/custom/scripts/rename_models.py
@@ -19,12 +19,9 @@
         st = os.stat(filepath)
         os.chmod(filepath, st.st_mode | stat.S_IWUSR)
 
-def filter(inname, outname, ef_format = True):
+def filter(inname, outname):
 
-    if ef_format:
-        libpath = 'spi/sky130_fd_pr/'
-    else:
-        libpath = 'sky130_fd_pr/spice/'
+    libpath = 'sky130_fd_pr/spice/'
 
     # Read input
     try:
@@ -95,7 +92,7 @@
     if len(arguments) > 0:
         infilename = arguments[0]
     else:
-        print('Usage: rename_models.py <filename> [<outfilename>] [-ef_format]')
+        print('Usage: rename_models.py <filename> [<outfilename>]')
         sys.exit(1)
 
     if len(arguments) > 1:
@@ -103,10 +100,5 @@
     else:
         outfilename = None
 
-    ef_format = False
-    if len(options) > 0:
-        if options[0] == 'ef_format':
-            ef_format = True
-
-    result = filter(infilename, outfilename, ef_format)
+    result = filter(infilename, outfilename)
     sys.exit(result)
diff --git a/sky130/magic/sky130.magicrc b/sky130/magic/sky130.magicrc
index 7b7ac69..54834c6 100644
--- a/sky130/magic/sky130.magicrc
+++ b/sky130/magic/sky130.magicrc
@@ -64,72 +64,18 @@
 }
 
 # add path to reference cells
-if {[file isdir ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}]} {
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_pr
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_io
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_hd
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_hdll
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_hs
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_hvl
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_lp
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_ls
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_sc_ms
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_osu_sc
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_osu_sc_t18
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_ml_xx_hd
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_fd_bd_sram
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/${MAGTYPE}/sky130_sram_macros
-} else {
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_pr/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_io/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hd/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hdll/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hs/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hvl/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_lp/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_ls/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_ms/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_osu_sc/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_osu_sc_t18/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_ml_xx_hd/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_bd_sram/${MAGTYPE}
-    addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_sram_macros/${MAGTYPE}
-}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_pr/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_io/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hd/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hdll/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hs/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hvl/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_lp/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_ls/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_ms/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_osu_sc/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_osu_sc_t18/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_ml_xx_hd/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_bd_sram/${MAGTYPE}
+addpath ${PDK_ROOT}/TECHNAME/libs.ref/sky130_sram_macros/${MAGTYPE}
 
-# add path to GDS cells
-#ifdef FULLTECH
-if {[file isdir ${PDK_ROOT}/TECHNAME/libs.ref/gds]} {
-    path cell ${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_pr
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_io
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_hd
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_hdll
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_hs
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_hvl
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_lp
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_ls
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_fd_sc_ms
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_osu130
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_osu130_t18
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_ml_xx_hd
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/gds/sky130_sram_macros
-} else {
-    path cell ${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_pr/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_io/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hd/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hdll/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hs/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_hvl/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_lp/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_ls/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_fd_sc_ms/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_osu130/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_osu130_t18/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_ml_xx_hd/gds
-    path cell +${PDK_ROOT}/TECHNAME/libs.ref/sky130_sram_macros/gds
-}
-#endif (FULLTECH)
-
-# add path to IP from catalog.  This procedure defined in the PDK script.
-catch {magic::query_mylib_ip}
-# add path to local IP from user design space.  Defined in the PDK script.
-catch {magic::query_my_projects}
diff --git a/sky130/openlane/config.tcl b/sky130/openlane/config.tcl
index 25b7f5e..78af13a 100755
--- a/sky130/openlane/config.tcl
+++ b/sky130/openlane/config.tcl
@@ -21,26 +21,6 @@
 set ::env(STD_CELL_GROUND_PINS) "VGND VNB"
 
 # Technology LEF
-#ifdef EF_FORMAT
-set ::env(TECH_LEF) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/techLEF/$::env(STD_CELL_LIBRARY)/$::env(STD_CELL_LIBRARY)__nom.tlef"
-set ::env(TECH_LEF_MIN) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/techLEF/$::env(STD_CELL_LIBRARY)/$::env(STD_CELL_LIBRARY)__min.tlef"
-set ::env(TECH_LEF_MAX) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/techLEF/$::env(STD_CELL_LIBRARY)/$::env(STD_CELL_LIBRARY)__max.tlef"
-set ::env(CELLS_LEF) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lef/$::env(STD_CELL_LIBRARY)/*.lef"]
-set ::env(GDS_FILES) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/gds/$::env(STD_CELL_LIBRARY)/*.gds"]
-set ::env(STD_CELL_LIBRARY_CDL)	"$::env(PDK_ROOT)/$::env(PDK)/libs.ref/cdl/$::env(STD_CELL_LIBRARY)/$::env(STD_CELL_LIBRARY).cdl"
-
-set ::env(GPIO_PADS_LEF) "\
-	$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lef/sky130_fd_io/sky130_fd_io.lef\
-	$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lef/sky130_fd_io/sky130_ef_io.lef\
-"
-
-# Optimization library
-set ::env(TECH_LEF_OPT) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/techLEF/$::env(STD_CELL_LIBRARY_OPT)/$::env(STD_CELL_LIBRARY_OPT)__nom.tlef"
-set ::env(CELLS_LEF_OPT) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lef/$::env(STD_CELL_LIBRARY_OPT)/*.lef"]
-set ::env(GDS_FILES_OPT) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/gds/$::env(STD_CELL_LIBRARY_OPT)/*.gds"]
-set ::env(STD_CELL_LIBRARY_OPT_CDL)	"$::env(PDK_ROOT)/$::env(PDK)/libs.ref/cdl/$::env(STD_CELL_LIBRARY_OPT)/$::env(STD_CELL_LIBRARY_OPT).cdl"
-
-#else (!EF_FORMAT)
 set ::env(TECH_LEF) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/$::env(STD_CELL_LIBRARY)__nom.tlef"
 set ::env(TECH_LEF_MIN) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/$::env(STD_CELL_LIBRARY)__min.tlef"
 set ::env(TECH_LEF_MAX) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/techlef/$::env(STD_CELL_LIBRARY)__max.tlef"
@@ -65,8 +45,6 @@
 set ::env(GDS_FILES_OPT) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY_OPT)/gds/*.gds"]
 set ::env(STD_CELL_LIBRARY_OPT_CDL)	"$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY_OPT)/cdl/$::env(STD_CELL_LIBRARY_OPT).cdl"
 
-#endif (!EF_FORMAT)
-
 # Optimization library slowest corner
 set tmp $::env(STD_CELL_LIBRARY)
 set ::env(STD_CELL_LIBRARY) $::env(STD_CELL_LIBRARY_OPT)
@@ -81,13 +59,8 @@
 "
 
 # magic setup
-#ifdef EF_FORMAT
-set ::env(MAGIC_MAGICRC) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/current/TECHNAME.magicrc"
-set ::env(MAGIC_TECH_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/current/TECHNAME.tech"
-#else (!EF_FORMAT)
 set ::env(MAGIC_MAGICRC) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/TECHNAME.magicrc"
 set ::env(MAGIC_TECH_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/TECHNAME.tech"
-#endif (!EF_FORMAT)
 
 # Klayout setup
 set ::env(KLAYOUT_TECH) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/klayout/tech/$::env(PDK).lyt"
diff --git a/sky130/openlane/sky130_fd_sc_hd/config.tcl b/sky130/openlane/sky130_fd_sc_hd/config.tcl
index c3e21a5..bffdd3e 100755
--- a/sky130/openlane/sky130_fd_sc_hd/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_hd/config.tcl
@@ -1,15 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hd__tt_025C_1v80.lib"
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hd__ff_n40C_1v95.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hd__ss_100C_1v60.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hd__tt_025C_1v80.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hd__ss_100C_1v60.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/openlane/sky130_fd_sc_hdll/config.tcl b/sky130/openlane/sky130_fd_sc_hdll/config.tcl
index 2c2b6dc..45ca095 100755
--- a/sky130/openlane/sky130_fd_sc_hdll/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_hdll/config.tcl
@@ -1,15 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hdll__tt_025C_1v80.lib"
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hdll__ff_n40C_1v95.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hdll__ss_100C_1v60.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hdll__tt_025C_1v80.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hdll__ff_n40C_1v95.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hdll__ss_100C_1v60.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/openlane/sky130_fd_sc_hs/config.tcl b/sky130/openlane/sky130_fd_sc_hs/config.tcl
index 7d98894..99cdff3 100755
--- a/sky130/openlane/sky130_fd_sc_hs/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_hs/config.tcl
@@ -1,15 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hs__tt_025C_1v80.lib"
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hs__ff_n40C_1v95.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hs__ss_100C_1v60.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hs__tt_025C_1v80.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hs__ff_n40C_1v95.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hs__ss_100C_1v60.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/openlane/sky130_fd_sc_hvl/config.tcl b/sky130/openlane/sky130_fd_sc_hvl/config.tcl
index b2a6918..1421f6e 100644
--- a/sky130/openlane/sky130_fd_sc_hvl/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_hvl/config.tcl
@@ -1,16 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hvl__tt_025C_3v30.lib"
-
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hvl__ff_n40C_5v50.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_hvl__ss_150C_1v65.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hvl__tt_025C_3v30.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hvl__ff_n40C_5v50.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_hvl__ss_150C_1v65.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/openlane/sky130_fd_sc_ls/config.tcl b/sky130/openlane/sky130_fd_sc_ls/config.tcl
index 133f7fa..49cc541 100755
--- a/sky130/openlane/sky130_fd_sc_ls/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_ls/config.tcl
@@ -1,15 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_ls__tt_025C_1v80.lib"
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_ls__ff_n40C_1v95.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_ls__ss_100C_1v60.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_ls__tt_025C_1v80.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_ls__ff_n40C_1v95.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_ls__ss_100C_1v60.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/openlane/sky130_fd_sc_ms/config.tcl b/sky130/openlane/sky130_fd_sc_ms/config.tcl
index 18a1481..840e595 100755
--- a/sky130/openlane/sky130_fd_sc_ms/config.tcl
+++ b/sky130/openlane/sky130_fd_sc_ms/config.tcl
@@ -1,15 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_ms__tt_025C_1v80.lib"
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_ms__ff_n40C_1v95.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_fd_sc_ms__ss_100C_1v60.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_ms__tt_025C_1v80.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_ms__ff_n40C_1v95.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_fd_sc_ms__ss_100C_1v60.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/openlane/sky130_osu_sc_t18/config.tcl b/sky130/openlane/sky130_osu_sc_t18/config.tcl
index cab3c72..6109dd8 100755
--- a/sky130/openlane/sky130_osu_sc_t18/config.tcl
+++ b/sky130/openlane/sky130_osu_sc_t18/config.tcl
@@ -1,15 +1,9 @@
 set current_folder [file dirname [file normalize [info script]]]
 # Technology lib
 
-#ifdef EF_FORMAT
-set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_osu_sc_TT_1P8_25C.lib"
-set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_osu_sc_FF_1P8_25C.lib"
-set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(STD_CELL_LIBRARY)/sky130_osu_sc_SS_1p8_25C.lib"
-#else (!EF_FORMAT)
 set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_osu_sc_TT_1P8_25C.lib"
 set ::env(LIB_FASTEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_osu_sc_FF_1P8_25C.lib"
 set ::env(LIB_SLOWEST) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/$::env(STD_CELL_LIBRARY)/lib/sky130_osu_sc_SS_1P8_25C.lib"
-#endif (!EF_FORMAT)
 
 set ::env(LIB_TYPICAL) $::env(LIB_SYNTH)
 
diff --git a/sky130/qflow/sky130.sh b/sky130/qflow/sky130.sh
index effc569..f483efc 100644
--- a/sky130/qflow/sky130.sh
+++ b/sky130/qflow/sky130.sh
@@ -6,36 +6,20 @@
 
 # The LEF file containing standard cell macros
 
-#ifdef EF_FORMAT
-set leffile=STAGING_PATH/TECHNAME/libs.ref/lef/LIBRARY/LIBRARY.lef
-#else (!EF_FORMAT)
 set leffile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/lef/LIBRARY.lef
-#endif (!EF_FORMAT)
 
 # The SPICE netlist containing subcell definitions for all the standard cells
-#ifdef EF_FORMAT
-set spicefile=STAGING_PATH/TECHNAME/libs.ref/spi/LIBRARY/LIBRARY.spi
-#else (!EF_FORMAT)
 set spicefile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/spice/LIBRARY.spice
-#endif (!EF_FORMAT)
 
 # The liberty format file containing standard cell timing and function information
-#ifdef EF_FORMAT
-set libertyfile=STAGING_PATH/TECHNAME/libs.ref/lib/LIBRARY/LIBRARY__ff_n40C_VOLTAGE.lib
-#else (!EF_FORMAT)
 set libertyfile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/lib/LIBRARY__ff_n40C_VOLTAGE.lib
-#endif (!EF_FORMAT)
 
 # If there is another LEF file containing technology information
 # that is separate from the file containing standard cell macros,
 # set this.  Otherwise, leave it defined as an empty string.
 
 #ifdef METAL5
-#ifdef EF_FORMAT
-set techleffile=STAGING_PATH/TECHNAME/libs.ref/techLEF/LIBRARY/LIBRARY__nom.tlef
-#else (!EF_FORMAT)
 set techleffile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/techlef/LIBRARY__nom.tlef
-#endif (!EF_FORMAT)
 #else
 # NOTE:  There is no technology LEF file for the 3-metal stack!
 #endif
@@ -71,13 +55,8 @@
 set magicrc=STAGING_PATH/TECHNAME/MAGIC_CURRENT/TECHNAME.magicrc	;# magic startup script
 set magic_display="XR" 	;# magic display, defeat display query and OGL preference
 set netgen_setup=STAGING_PATH/TECHNAME/libs.tech/netgen/TECHNAME_setup.tcl	;# netgen setup file for LVS
-#ifdef EF_FORMAT
-set gdsfile=STAGING_PATH/TECHNAME/libs.ref/gds/LIBRARY/LIBRARY.gds	;# GDS database of standard cells
-set verilogfile=STAGING_PATH/TECHNAME/libs.ref/verilog/LIBRARY/LIBRARY.v	;# Verilog models of standard cells
-#else (!EF_FORMAT)
 set gdsfile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/gds/LIBRARY.gds	;# GDS database of standard cells
 set verilogfile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/verilog/LIBRARY.v	;# Verilog models of standard cells
-#endif (!EF_FORMAT)
 
 # Set a conditional default in the project_vars.sh file for this process
 set postproc_options="-anchors"
diff --git a/sky130/qflow/sky130osu.sh b/sky130/qflow/sky130osu.sh
index 1116677..dcc2d67 100644
--- a/sky130/qflow/sky130osu.sh
+++ b/sky130/qflow/sky130osu.sh
@@ -6,36 +6,20 @@
 
 # The LEF file containing standard cell macros
 
-#ifdef EF_FORMAT
-set leffile=STAGING_PATH/TECHNAME/libs.ref/lef/LIBRARY/LIBRARY.lef
-#else (!EF_FORMAT)
 set leffile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/lef/LIBRARY.lef
-#endif (!EF_FORMAT)
 
 # The SPICE netlist containing subcell definitions for all the standard cells
-#ifdef EF_FORMAT
-set spicefile=STAGING_PATH/TECHNAME/libs.ref/spice/LIBRARY/LIBRARY.spice
-#else (!EF_FORMAT)
 set spicefile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/spice/LIBRARY.spice
-#endif (!EF_FORMAT)
 
 # The liberty format file containing standard cell timing and function information
-#ifdef EF_FORMAT
-set libertyfile=STAGING_PATH/TECHNAME/libs.ref/lib/LIBRARY/LIBRARY.lib
-#else (!EF_FORMAT)
 set libertyfile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/lib/LIBRARY.lib
-#endif (!EF_FORMAT)
 
 # If there is another LEF file containing technology information
 # that is separate from the file containing standard cell macros,
 # set this.  Otherwise, leave it defined as an empty string.
 
 #ifdef METAL5
-#ifdef EF_FORMAT
-set techleffile=STAGING_PATH/TECHNAME/libs.ref/techLEF/LIBRARY/LIBRARY_tech.lef
-#else (!EF_FORMAT)
 set techleffile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/techlef/LIBRARY.tlef
-#endif (!EF_FORMAT)
 #else
 # NOTE:  There is no technology LEF file for the 3-metal stack!
 #endif
@@ -71,13 +55,8 @@
 set magicrc=STAGING_PATH/TECHNAME/MAGIC_CURRENT/TECHNAME.magicrc    ;# magic startup script
 set magic_display="XR" 	;# magic display, defeat display query and OGL preference
 set netgen_setup=STAGING_PATH/TECHNAME/libs.tech/netgen/TECHNAME_setup.tcl	;# netgen setup file for LVS
-#ifdef EF_FORMAT
-set gdsfile=STAGING_PATH/TECHNAME/libs.ref/gds/LIBRARY/LIBRARY.gds	;# GDS database of standard cells
-set verilogfile=STAGING_PATH/TECHNAME/libs.ref/verilog/LIBRARY/LIBRARY.v	;# Verilog models of standard cells
-#else (!EF_FORMAT)
 set gdsfile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/gds/LIBRARY.gds	;# GDS database of standard cells
 set verilogfile=STAGING_PATH/TECHNAME/libs.ref/LIBRARY/verilog/LIBRARY.v	;# Verilog models of standard cells
-#endif (!EF_FORMAT)
 
 # Set a conditional default in the project_vars.sh file for this process
 set postproc_options=""
diff --git a/sky130/sky130.json b/sky130/sky130.json
index 4b7971e..56a5bca 100644
--- a/sky130/sky130.json
+++ b/sky130/sky130.json
@@ -94,8 +94,8 @@
         "magic": "MAGIC_COMMIT"
     },
     "reference": {
-        "open_pdks": "b01f6d281922e2185acf13fb855b338bb97ff460",
-        "magic": "56598ca0f44922818f271e574cc7ec29e9f04d95",
+        "open_pdks": "426f95115110d6d0185f1ba3d09b3aa8a014969b",
+        "magic": "0022c502c8a406d1d565e4dc2236498093ef1314",
         "sky130_fd_pr": "1232782c1b9fab3aacda74d67ce7c92bf7da8105",
         "sky130_fd_io": "e60737bf624df95c211fe99c007ddec78e3e081d",
         "sky130_fd_sc_hs": "c4cfcd760f1964f1670a1ed99c71c7c12b7ad49f",
