Modified the configure script to allow 3rd party libraries to be either installed
by default (requiring --disable) or ignored by default (requiring --enable).
Moved the SRAM library to the "ignored by default" list because it takes so long
to build.  Added all of the OSU standard cell libraries (hs/ms/ls each for
12T, 15T, and 18T).  Added a straight-through analog pad for high-speed I/O,
especially for the "caravan" analog variant of the "caravel" harness chip.
diff --git a/scripts/configure b/scripts/configure
index 824d296..b0e3e58 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -588,9 +588,13 @@
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 EF_STYLE
+SKY130_OSU_T18_PATH
+SKY130_OSU_T15_PATH
+SKY130_OSU_T12_PATH
+SKY130_OSU_PATH
+SKY130_SRAM_MACROS_PATH
 XSCHEM_SKY130_PATH
 SKY130_ML_XX_HD_PATH
-SKY130_SRAM_MACROS_PATH
 PATCH
 MAGIC
 XSCHEM_DISABLED
@@ -666,9 +670,13 @@
 enable_openlane
 enable_qflow
 enable_xschem
-enable_sram_sky130
 enable_alpha_sky130
 enable_xschem_sky130
+enable_sram_sky130
+enable_osu_sky130
+enable_osu_t12_sky130
+enable_osu_t15_sky130
+enable_osu_t18_sky130
 with_ef_style
 '
       ac_precious_vars='build_alias
@@ -1327,15 +1335,27 @@
                 Enable or disable xschem setup [default=enabled]
 
 
-  --enable-sram-sky130[=path]
-                          Install sky130_sram_macros. If path is omitted, it'll be
-                          downloaded. [default=enabled]
   --enable-alpha-sky130[=path]
-                          Install sky130_ml_xx_hd. If path is omitted, it'll be
-                          downloaded. [default=enabled]
+                          Install sky130_ml_xx_hd. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
   --enable-xschem-sky130[=path]
-                          Install xschem_sky130. If path is omitted, it'll be
-                          downloaded. [default=enabled]
+                          Install xschem_sky130. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
+  --enable-sram-sky130[=path]
+                          Install sky130_sram_macros. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
+  --enable-osu-sky130[=path]
+                          Install sky130_osu. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
+  --enable-osu-t12-sky130[=path]
+                          Install sky130_osu_t12. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
+  --enable-osu-t15-sky130[=path]
+                          Install sky130_osu_t15. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
+  --enable-osu-t18-sky130[=path]
+                          Install sky130_osu_t18. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -2441,46 +2461,7 @@
 # Other installations (libraries or tools if applicable)
 
 
-
-
-
-
-
-
-    # echo target targetvar flag location
-
-    SKY130_SRAM_MACROS_PATH=""
-
-    # Check whether --enable-sram-sky130 was given.
-if test "${enable_sram_sky130+set}" = set; 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;}
-        	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;}
-    		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;}
-            fi
-            SKY130_SRAM_MACROS_PATH=`realpath $SKY130_SRAM_MACROS_PATH`
-
-else
-
-            { $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;}
-	    SKY130_SRAM_MACROS_PATH=../sources/sky130_sram_macros
-
-
-fi
-
-
-
-
+# Optional installations (like the above, but disabled by default)
 
 
 
@@ -2570,6 +2551,212 @@
 
 
 
+
+
+
+
+    # echo target targetvar flag location
+
+    SKY130_SRAM_MACROS_PATH=""
+
+    # Check whether --enable-sram-sky130 was given.
+if test "${enable_sram_sky130+set}" = set; 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;}
+        	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;}
+    		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;}
+            fi
+            SKY130_SRAM_MACROS_PATH=`realpath $SKY130_SRAM_MACROS_PATH`
+
+else
+
+            { $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;}
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+    # echo target targetvar flag location
+
+    SKY130_OSU_PATH=""
+
+    # Check whether --enable-osu-sky130 was given.
+if test "${enable_osu_sky130+set}" = set; then :
+  enableval=$enable_osu_sky130;
+            if test "$enableval" == "yes" -o "$enableval" == "YES"; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu' will be installed automatically during make." >&5
+$as_echo "$as_me: Package 'sky130_osu' will be installed automatically during make." >&6;}
+        	export SKY130_OSU_PATH=../sources/sky130_osu
+            elif test "$enableval" == "no" -o "$enableval" == "NO"; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'sky130_osu'" >&5
+$as_echo "$as_me: Disabling package 'sky130_osu'" >&6;}
+    		export SKY130_OSU_PATH=""
+            else
+                SKY130_OSU_PATH=$enableval
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'sky130_osu' at $SKY130_OSU_PATH" >&5
+$as_echo "$as_me: Enabling package 'sky130_osu' at $SKY130_OSU_PATH" >&6;}
+            fi
+            SKY130_OSU_PATH=`realpath $SKY130_OSU_PATH`
+
+else
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'sky130_osu' will not be installed." >&5
+$as_echo "$as_me: Package 'sky130_osu' will not be installed." >&6;}
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+    # echo target targetvar flag location
+
+    SKY130_OSU_T12_PATH=""
+
+    # Check whether --enable-osu-t12-sky130 was given.
+if test "${enable_osu_t12_sky130+set}" = set; 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;}
+        	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;}
+    		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;}
+            fi
+            SKY130_OSU_T12_PATH=`realpath $SKY130_OSU_T12_PATH`
+
+else
+
+            { $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;}
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+    # echo target targetvar flag location
+
+    SKY130_OSU_T15_PATH=""
+
+    # Check whether --enable-osu-t15-sky130 was given.
+if test "${enable_osu_t15_sky130+set}" = set; 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;}
+        	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;}
+    		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;}
+            fi
+            SKY130_OSU_T15_PATH=`realpath $SKY130_OSU_T15_PATH`
+
+else
+
+            { $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;}
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+    # echo target targetvar flag location
+
+    SKY130_OSU_T18_PATH=""
+
+    # Check whether --enable-osu-t18-sky130 was given.
+if test "${enable_osu_t18_sky130+set}" = set; 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;}
+        	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;}
+    		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;}
+            fi
+            SKY130_OSU_T18_PATH=`realpath $SKY130_OSU_T18_PATH`
+
+else
+
+            { $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;}
+
+
+fi
+
+
+
+
+
+
+
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem" >&5
 $as_echo "$as_me: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow xschem" >&6;}
 
diff --git a/scripts/configure.ac b/scripts/configure.ac
index be17018..63de958 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -168,7 +168,7 @@
         flag,
         AS_HELP_STRING(
             [--enable-flag@<:@=path@:>@],
-            [Install target. If path is omitted, it'll be downloaded. @<:@default=enabled@:>@]
+            [Install target. If path is omitted, the repository will be downloaded. @<:@default=enabled@:>@]
         ), [
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
                 AC_MSG_NOTICE([Package 'target' will be installed automatically during make.])
@@ -192,10 +192,53 @@
     AC_SUBST(targetvar[]_PATH)
 ])
 
-M4_GEN_INSTALLATION(sky130_sram_macros, sram-sky130, ../sources)
+# Optional installations (like the above, but disabled by default)
+AC_DEFUN([M4_OPT_INSTALLATION], [
+    m4_define([target], $1)
+    m4_define([targetvar], [m4_normalize(m4_esyscmd(echo target | tr "a-z-" "A-Z_"))])
+    m4_define([flag], $2)
+    m4_define([location], $3)
+
+    # echo target targetvar flag location
+
+    targetvar[]_PATH=""
+
+    AC_ARG_ENABLE(
+        flag,
+        AS_HELP_STRING(
+            [--enable-flag@<:@=path@:>@],
+            [Install target. If path is omitted, the repository will be downloaded. @<:@default=enabled@:>@]
+        ), [
+            if test "$enableval" == "yes" -o "$enableval" == "YES"; then
+                AC_MSG_NOTICE([Package 'target' will be installed automatically during make.])
+        	export targetvar[]_PATH=location/target
+            elif test "$enableval" == "no" -o "$enableval" == "NO"; then
+                AC_MSG_NOTICE([Disabling package 'target'])
+    		export targetvar[]_PATH=""
+            else
+                targetvar[]_PATH=$enableval
+                AC_MSG_NOTICE([Enabling package 'target' at $[]targetvar[]_PATH])
+            fi
+            targetvar[]_PATH=`realpath $[]targetvar[]_PATH`
+        ],[
+            AC_MSG_NOTICE([Package 'target' will not be installed.])
+	]
+    )
+
+    $4
+
+    AC_SUBST(targetvar[]_PATH)
+])
+
 M4_GEN_INSTALLATION(sky130_ml_xx_hd, alpha-sky130, ../sources)
 M4_GEN_INSTALLATION(xschem_sky130, xschem-sky130, ../sources)
 
+M4_OPT_INSTALLATION(sky130_sram_macros, sram-sky130, ../sources)
+M4_OPT_INSTALLATION(sky130_osu, osu-sky130, ../sources)
+M4_OPT_INSTALLATION(sky130_osu_t12, osu-t12-sky130, ../sources)
+M4_OPT_INSTALLATION(sky130_osu_t15, osu-t15-sky130, ../sources)
+M4_OPT_INSTALLATION(sky130_osu_t18, osu-t18-sky130, ../sources)
+
 AC_DEFUN([M4_GEN_WITH_TOOLS], [
     m4_foreach_w(tool, $1, [
         m4_define([toolvar], [m4_normalize(m4_esyscmd(echo tool | tr "a-z-" "A-Z_"))])
diff --git a/scripts/download.sh b/scripts/download.sh
index 1bfadc1..a4188d9 100755
--- a/scripts/download.sh
+++ b/scripts/download.sh
@@ -1,10 +1,10 @@
-#!/bin/sh
+#!/bin/bash
 #
 # download.sh --
 #	Download a tarball from the specified URL to the specified target
 #	directory, untar it, and remove the tarball file.
 #
-#	Usage:  download.sh <url> <target_dir>
+#	Usage:  download.sh <url> <target_dir> [<strip>]
 #
 # where:
 #
@@ -13,6 +13,8 @@
 #		tarball will be downloaded to the directory above this,
 #		untarred while renaming to <target_dir>, and then the tarball
 #		file will be deleted.
+#	<strip> is the number of directory levels to strip off the front of the
+#		tarball contents.  Defaults to 1 if not specified.
 #
 
 # Neither curl or wget are guaranteed to be included in all *nix systems,
@@ -39,7 +41,14 @@
 echo "Downloading $1 to $2"
 $DL_CMD $2.tar.gz $1
 
+if [ $# -gt 2 ]; then
+    snum=$3
+else
+    snum=1
+fi
+
 mkdir -p $2
-tar -xf $2.tar.gz --strip-components 1 -C $2
+echo "Untarring and removing $2.tar.gz"
+tar -xf $2.tar.gz --strip-components $snum -C $2
 rm $2.tar.gz
 exit 0