diff --git a/Makefile.in b/Makefile.in
index b0fcdc0..a4e8a02 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -67,6 +67,7 @@
 	@echo $(DONE_MESSAGE)
 
 distclean: $(TECHS_VERYCLEAN)
+	${RM} -rf sources
 	@echo $(DONE_MESSAGE)
 
 #---------------------------------------------------
@@ -85,4 +86,4 @@
 veryclean-sky130:
 	(cd sky130 && ${MAKE} veryclean)
 
-#---------------------------------------------------
\ No newline at end of file
+#---------------------------------------------------
diff --git a/scripts/configure b/scripts/configure
index 9af84fd..63178f2 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -2105,75 +2105,19 @@
         SKY130_DIST_PATH=""
         SKY130_LINK_TARGETS="none"
 
-        pdk_get() {
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sky130/pdk_info.txt" >&5
-$as_echo_n "checking for ../sky130/pdk_info.txt... " >&6; }
-if ${ac_cv_file____sky130_pdk_info_txt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r "../sky130/pdk_info.txt"; then
-  ac_cv_file____sky130_pdk_info_txt=yes
-else
-  ac_cv_file____sky130_pdk_info_txt=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sky130_pdk_info_txt" >&5
-$as_echo "$ac_cv_file____sky130_pdk_info_txt" >&6; }
-if test "x$ac_cv_file____sky130_pdk_info_txt" = xyes; then :
-
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sources/sky130" >&5
-$as_echo_n "checking for ../sources/sky130... " >&6; }
-if ${ac_cv_file____sources_sky130+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r "../sources/sky130"; then
-  ac_cv_file____sources_sky130=yes
-else
-  ac_cv_file____sources_sky130=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sources_sky130" >&5
-$as_echo "$ac_cv_file____sources_sky130" >&6; }
-if test "x$ac_cv_file____sources_sky130" = xyes; then :
-
-                    echo "Using pre-existing sky130 download..."
-
-else
-
-                    REPO=$(cat "../sky130/pdk_info.txt" | sed -n "1p")
-                    POST_CLONE_COMMANDS=$(cat "../sky130/pdk_info.txt" | sed "1d")
-                    mkdir -p ../sources
-                    git clone "$REPO" ../sources/sky130;
-                    (cd ../sources/sky130 && sh -c "$POST_CLONE_COMMANDS")
-
-fi
-
-                export SKY130_SOURCE_PATH=../sources/sky130
-
-else
-
-                as_fn_error $? "PDK sky130 cannot be automatically downloaded and requires a path." "$LINENO" 5
-
-fi
-
-        }
-
         pdk_find() {
             FOUND=0
             for path in /opt/pdks/sky130 /usr/share/pdks/sky130 /usr/local/share/pdks/sky130; do
                 if [ -d $path ] ; then
                     echo "Found sky130 in $path, using this installation..."
                     export SKY130_SOURCE_PATH=$path
+                    export SKY130_FOUND=1
                     FOUND=1
                 fi
             done
             if [ "$FOUND" = "0" ]; then
-                echo "Could not find sky130 in standard search paths, automatically fetching repository to ../sources/sky130 ..."
-                pdk_get
+                export SKY130_SOURCE_PATH=../sources/sky130-pdk
+                export SKY130_FOUND=0
             fi
         }
 
@@ -2199,10 +2143,12 @@
 	    if [ "$SKY130_BASENAME" = "libraries" ]; then
 		SKY130_SOURCE_PATH=`dirname $SKY130_SOURCE_PATH`
 	    fi
-            # basic check that the PDK exists there (the path must exist in any case)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Checking specified path for 'sky130' at $SKY130_SOURCE_PATH" >&5
+            # Basic check that the PDK path exists, unless depending on Makefile
+	    # to download it automatically.
+            if [ "$SKY130_FOUND" == "1" ]; 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_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 :
@@ -2221,15 +2167,19 @@
 $as_echo "$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:${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;}
 
 else
 
-                as_fn_error $? "Specified path for 'sky130' at $SKY130_SOURCE_PATH not found" "$LINENO" 5
+                    as_fn_error $? "Specified path for 'sky130' at $SKY130_SOURCE_PATH not found" "$LINENO" 5
 
 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;}
+	    fi
 
             # --with-pdk-local-path=PDK_LOCAL_PATH
 
@@ -2503,53 +2453,24 @@
 
 
 
-
-    # echo target targetvar flag url location
+    # echo target targetvar flag location
 
     SKY130_ML_XX_HD_PATH=""
-    SKY130_ML_XX_HD_GET() {
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sources/sky130_ml_xx_hd" >&5
-$as_echo_n "checking for ../sources/sky130_ml_xx_hd... " >&6; }
-if ${ac_cv_file____sources_sky130_ml_xx_hd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r "../sources/sky130_ml_xx_hd"; then
-  ac_cv_file____sources_sky130_ml_xx_hd=yes
-else
-  ac_cv_file____sources_sky130_ml_xx_hd=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sources_sky130_ml_xx_hd" >&5
-$as_echo "$ac_cv_file____sources_sky130_ml_xx_hd" >&6; }
-if test "x$ac_cv_file____sources_sky130_ml_xx_hd" = xyes; then :
-
-                echo "Using pre-existing sky130_ml_xx_hd download..."
-
-else
-
-                mkdir -p ../sources/sky130_ml_xx_hd
-                sh ./download.sh 'https://github.com/PaulSchulz/sky130_pschulz_xx_hd/archive/master.tar.gz' ../sources/sky130_ml_xx_hd.tar.gz
-                (echo "Extracting sky130_ml_xx_hd..." && cd ../sources && tar -xf sky130_ml_xx_hd.tar.gz --strip-components 1 -C ../sources/sky130_ml_xx_hd && rm sky130_ml_xx_hd.tar.gz )
-
-
-fi
-
-        export SKY130_ML_XX_HD_PATH=../sources/sky130_ml_xx_hd
-    }
 
     # Check whether --enable-alpha-sky130 was given.
 if test "${enable_alpha_sky130+set}" = set; then :
   enableval=$enable_alpha_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                SKY130_ML_XX_HD_GET
-                XSCHEM_INST=1
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Option 'sky130_ml_xx_hd' will be installed automatically during make." >&5
+$as_echo "$as_me: Option '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
-                echo "Disabling sky130_ml_xx_hd..."
-                XSCHEM_DISABLED=1
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling option 'sky130_ml_xx_hd'" >&5
+$as_echo "$as_me: Disabling option 'sky130_ml_xx_hd'" >&6;}
             else
                 SKY130_ML_XX_HD_PATH=$enableval
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling option 'sky130_ml_xx_hd' at $SKY130_ML_XX_HD_PATH" >&5
+$as_echo "$as_me: Enabling option 'sky130_ml_xx_hd' at $SKY130_ML_XX_HD_PATH" >&6;}
             fi
             SKY130_ML_XX_HD_PATH=`realpath $SKY130_ML_XX_HD_PATH`
 
@@ -2566,54 +2487,24 @@
 
 
 
-
-
-    # echo target targetvar flag url location
+    # echo target targetvar flag location
 
     XSCHEM_SKY130_PATH=""
-    XSCHEM_SKY130_GET() {
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sources/xschem_sky130" >&5
-$as_echo_n "checking for ../sources/xschem_sky130... " >&6; }
-if ${ac_cv_file____sources_xschem_sky130+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r "../sources/xschem_sky130"; then
-  ac_cv_file____sources_xschem_sky130=yes
-else
-  ac_cv_file____sources_xschem_sky130=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sources_xschem_sky130" >&5
-$as_echo "$ac_cv_file____sources_xschem_sky130" >&6; }
-if test "x$ac_cv_file____sources_xschem_sky130" = xyes; then :
-
-                echo "Using pre-existing xschem_sky130 download..."
-
-else
-
-                mkdir -p ../sources/xschem_sky130
-                sh ./download.sh 'https://github.com/StefanSchippers/xschem_sky130/archive/main.tar.gz' ../sources/xschem_sky130.tar.gz
-                (echo "Extracting xschem_sky130..." && cd ../sources && tar -xf xschem_sky130.tar.gz --strip-components 1 -C ../sources/xschem_sky130 && rm xschem_sky130.tar.gz )
-
-
-fi
-
-        export XSCHEM_SKY130_PATH=../sources/xschem_sky130
-    }
 
     # Check whether --enable-xschem-sky130 was given.
 if test "${enable_xschem_sky130+set}" = set; then :
   enableval=$enable_xschem_sky130;
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                XSCHEM_SKY130_GET
-                XSCHEM_INST=1
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Option 'xschem_sky130' will be installed automatically during make." >&5
+$as_echo "$as_me: Option 'xschem_sky130' will be installed automatically during make." >&6;}
+        	export XSCHEM_SKY130_PATH=../sources/xschem_sky130
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                echo "Disabling xschem_sky130..."
-                XSCHEM_DISABLED=1
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling option 'xschem_sky130'" >&5
+$as_echo "$as_me: Disabling option 'xschem_sky130'" >&6;}
             else
                 XSCHEM_SKY130_PATH=$enableval
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling option 'xschem_sky130' at $XSCHEM_SKY130_PATH" >&5
+$as_echo "$as_me: Enabling option 'xschem_sky130' at $XSCHEM_SKY130_PATH" >&6;}
             fi
             XSCHEM_SKY130_PATH=`realpath $XSCHEM_SKY130_PATH`
 
diff --git a/scripts/configure.ac b/scripts/configure.ac
index 05ef504..3dbc09a 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -30,35 +30,19 @@
         pdkvar[]_DIST_PATH=""
         pdkvar[]_LINK_TARGETS="none"
 
-        pdk_get() {
-            AC_CHECK_FILE(../pdk/[pdk]_info.txt, [
-                AC_CHECK_FILE(../sources/pdk,[
-                    echo "Using pre-existing pdk download..."
-                ], [
-                    REPO=$(cat "../pdk/pdk_info.txt" | sed -n "1p")
-                    POST_CLONE_COMMANDS=$(cat "../pdk/pdk_info.txt" | sed "1d")
-                    mkdir -p ../sources
-                    git clone "$REPO" ../sources/pdk;
-                    (cd ../sources/pdk && sh -c "$POST_CLONE_COMMANDS")
-                ])
-                export pdkvar[]_SOURCE_PATH=../sources/pdk
-            ], [
-                AC_MSG_ERROR([PDK pdk cannot be automatically downloaded and requires a path.])
-            ])
-        }
-
         pdk_find() {
             FOUND=0
             for path in /opt/pdks/pdk /usr/share/pdks/pdk /usr/local/share/pdks/pdk; do
                 if @<:@ -d $path @:>@ ; then
                     echo "Found pdk in $path, using this installation..."
                     export pdkvar[]_SOURCE_PATH=$path
+                    export pdkvar[]_FOUND=1
                     FOUND=1
                 fi
             done
             if @<:@ "$FOUND" = "0" @:>@; then
-                echo "Could not find pdk in standard search paths, automatically fetching repository to ../sources/pdk ..."
-                pdk_get
+                export pdkvar[]_SOURCE_PATH=../sources/pdk-[pdk]
+                export pdkvar[]_FOUND=0
             fi
         }
 
@@ -84,13 +68,18 @@
 	    if @<:@ "$[]pdkvar[]_BASENAME" = "libraries" @:>@; then
 		pdkvar[]_SOURCE_PATH=`dirname $[]pdkvar[]_SOURCE_PATH`
 	    fi
-            # basic check that the PDK exists there (the path must exist in any case)
-            AC_MSG_NOTICE([Checking specified path for 'pdk' at $[]pdkvar[]_SOURCE_PATH])
-            AC_CHECK_FILE($pdkvar[]_SOURCE_PATH,[
-                AC_MSG_NOTICE(['pdk' source path found at $pdkvar[]_SOURCE_PATH])
-            ], [
-                AC_MSG_ERROR([Specified path for 'pdk' at $pdkvar[]_SOURCE_PATH not found])
-            ])
+            # Basic check that the PDK path exists, unless depending on Makefile
+	    # to download it automatically.
+            if @<:@ "$[]pdkvar[]_FOUND" == "1" @:>@; then
+                AC_MSG_NOTICE([Checking specified path for 'pdk' at $[]pdkvar[]_SOURCE_PATH])
+                AC_CHECK_FILE($pdkvar[]_SOURCE_PATH,[
+                    AC_MSG_NOTICE(['pdk' source path found at $pdkvar[]_SOURCE_PATH])
+                ], [
+                    AC_MSG_ERROR([Specified path for 'pdk' at $pdkvar[]_SOURCE_PATH not found])
+                ])
+	    else
+		AC_MSG_NOTICE([PDK 'pdk' will be downloaded automatically during make.])
+	    fi
 
             # --with-pdk-local-path=PDK_LOCAL_PATH
             AC_ARG_WITH(pdk-local-path,
@@ -182,25 +171,11 @@
     m4_define([target], $1)
     m4_define([targetvar], [m4_normalize(m4_esyscmd(echo target | tr "a-z-" "A-Z_"))])
     m4_define([flag], $2)
-    m4_define([url], $3)
-    m4_define([location], $4)
+    m4_define([location], $3)
 
-    # echo target targetvar flag url location
+    # echo target targetvar flag location
 
     targetvar[]_PATH=""
-    targetvar[]_GET() {
-        AC_CHECK_FILE(
-            location/target,
-            [
-                echo "Using pre-existing target download..."
-            ], [
-                mkdir -p location/target
-                sh ./download.sh url location/target.tar.gz
-                (echo "Extracting target..." && cd location && tar -xf target.tar.gz --strip-components 1 -C location/target && rm target.tar.gz )
-            ]
-        )
-        export targetvar[]_PATH=location/target
-    }
 
     AC_ARG_ENABLE(
         flag,
@@ -209,27 +184,26 @@
             [Install target. If path is omitted, it'll be downloaded. @<:@default=disabled@:>@]
         ), [
             if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                targetvar[]_GET
-                XSCHEM_INST=1
+                AC_MSG_NOTICE([Option 'target' will be installed automatically during make.])
+        	export targetvar[]_PATH=location/target
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                echo "Disabling target..."
-                XSCHEM_DISABLED=1
+                AC_MSG_NOTICE([Disabling option 'target'])
             else
                 targetvar[]_PATH=$enableval
+                AC_MSG_NOTICE([Enabling option 'target' at $[]targetvar[]_PATH])
             fi
             targetvar[]_PATH=`realpath $[]targetvar[]_PATH`
         ],
         []
     )
 
-    $5
+    $4
 
     AC_SUBST(targetvar[]_PATH)
 ])
 
-M4_GEN_INSTALLATION(sky130_ml_xx_hd, alpha-sky130, 'https://github.com/PaulSchulz/sky130_pschulz_xx_hd/archive/master.tar.gz', ../sources)
-
-M4_GEN_INSTALLATION(xschem_sky130, xschem-sky130, 'https://github.com/StefanSchippers/xschem_sky130/archive/main.tar.gz', ../sources)
+M4_GEN_INSTALLATION(sky130_ml_xx_hd, alpha-sky130, ../sources)
+M4_GEN_INSTALLATION(xschem_sky130, xschem-sky130, ../sources)
 
 AC_DEFUN([M4_GEN_WITH_TOOLS], [
     m4_foreach_w(tool, $1, [
diff --git a/scripts/download.sh b/scripts/download.sh
old mode 100644
new mode 100755
index ec206a5..1bfadc1
--- a/scripts/download.sh
+++ b/scripts/download.sh
@@ -1,8 +1,22 @@
 #!/bin/sh
 #
+# 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>
+#
+# where:
+#
+#	<url> is the URL of the repository to download, in gzipped tarball format
+#	<target_dir> is the local name to call the untarred directory.  The
+#		tarball will be downloaded to the directory above this,
+#		untarred while renaming to <target_dir>, and then the tarball
+#		file will be deleted.
+#
+
 # Neither curl or wget are guaranteed to be included in all *nix systems,
 # (but most have *one* of them). This tools tries its best to find one.
-#
 
 DL_CMD=
 if type "wget" > /dev/null; then
@@ -14,9 +28,18 @@
 fi
 
 if [ "$DL_CMD" = "" ]; then
-    echo "Either curl or wget are required to automatically install tools."
+    echo "ERROR: Either curl or wget are required to automatically install tools."
     exit 1
 fi
 
-echo "Downloading $1 to $2..."
-$DL_CMD $2 $1
+pdir=`dirname $2`
+mkdir -p $pdir
+cd $pdir
+
+echo "Downloading $1 to $2"
+$DL_CMD $2.tar.gz $1
+
+mkdir -p $2
+tar -xf $2.tar.gz --strip-components 1 -C $2
+rm $2.tar.gz
+exit 0
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index f822cc8..f0bb291 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -160,13 +160,19 @@
 # Path to skywater_pdk
 SKYWATER_PATH = @SKY130_SOURCE_PATH@
 ifneq ($(SKYWATER_PATH),)
-    SKYWATER_PATH := $(SKYWATER_PATH)/libraries
+    SKYWATER_LIBS_PATH = ${SKYWATER_PATH}/libraries
+else
+    SKYWATER_LIBS_PATH =
 endif
 
 # Path to independent library sources (to be added to configuration options).
 ALPHA_PATH = @SKY130_ML_XX_HD_PATH@
 XSCHEM_PATH = @XSCHEM_SKY130_PATH@
 
+PDK_URL = https://github.com/google/skywater-pdk
+ALPHA_URL = https://github.com/PaulSchulz/sky130_pshulz_xx_hd/archive/master.tar.gz
+XSCHEM_URL = https://github.com/StefanSchippers/xschem_sky130/archive/main.tar.gz
+
 # NOTE:  Install destination is the git repository of the technology platform.
 # Once updated in git, the git project can be distributed to all hosts.
 #
@@ -316,7 +322,40 @@
 
 all: all-a
 
-all-a:
+# Handle prerequisites (fetch and install the PDK and requested libraries)
+prerequisites: pdk-repo alpha-repo xschem-repo
+
+pdk-repo:
+	if test "x${SKYWATER_PATH}" != "x" ; then \
+		if test -d "${SKYWATER_PATH}" ; then \
+			echo "Using existing installation of SkyWater PDK from ${SKYWATER_PATH}" ; \
+		else \
+			echo "Downloading SkyWater PDK from ${PDK_URL}" ; \
+			custom/scripts/pdk_download.sh ${PDK_URL} ${SKYWATER_PATH} ; \
+		fi ; \
+	fi
+
+alpha-repo:
+	if test "x${ALPHA_PATH}" != "x" ; then \
+		if test -d "${ALPHA_PATH}" ; then \
+			echo "Using existing installation of alphanumeric library from ${ALPHA_PATH}" ; \
+		else \
+			echo "Downloading alphanumeric library from ${ALPHA_URL}" ; \
+			../scripts/download.sh ${ALPHA_URL} ${ALPHA_PATH} ; \
+		fi ; \
+	fi
+
+xschem-repo:
+	if test "x${XSCHEM_PATH}" != "x" ; then \
+		if test -d "${XSCHEM_PATH}" ; then \
+			echo "Using existing installation of xschem setup from ${XSCHEM_PATH}" ; \
+		else \
+			echo "Downloading xschem setup from ${XSCHEM_URL}" ; \
+			../scripts/download.sh ${XSCHEM_URL} ${XSCHEM_PATH} ; \
+		fi ; \
+	fi
+
+all-a: prerequisites
 	echo "Starting sky130A PDK staging on "`date` > ${SKY130A}_install.log
 	${MAKE} tools-a
 	${MAKE} vendor-a
@@ -498,12 +537,12 @@
 vendor-a:
 	# Modify the LEF files to update hs and ms libraries
 	# Install device subcircuits from vendor files
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
+	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-ngspice sky130_fd_pr/latest/models/* \
 		filter=custom/scripts/rename_models.py \
 		|& tee -a ${SKY130A}_install.log
 	# Install base device library from vendor files
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
+	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-gds %l/latest/cells/*/*.gds compile-only \
 		-cdl %l/latest/cells/*/*.cdl compile-only \
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
@@ -524,7 +563,7 @@
 		-lef %l/lef/*.lef compile-only rename=sky130_ef_io \
 		-library general sky130_fd_io |& tee -a ${SKY130A}_install.log
 	# Install SkyWater I/O pad library
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
+	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-spice %l/latest/cells/*/*.spice compile-only \
 			sort=custom/scripts/sort_pdkfiles.py \
 		-cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
@@ -555,7 +594,7 @@
 	${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_io sky130_fd_io__top_gpiov2 \
 		"MASKHINTS_HVI 1346 17198 5828 19224 13700 1890 15920 2360 24 17522 1778 20612" -mag
 	# Install all SkyWater digital standard cells.
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
+	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-techlef %l/latest/tech/*.tlef \
 		-spice %l/latest/cells/*/*.spice compile-only \
 			sort=custom/scripts/sort_pdkfiles.py \
@@ -610,7 +649,7 @@
 	cp custom/scripts/text2mag.py \
 		${STAGING_PATH}/${SKY130A}/libs.ref/sky130_ml_xx_hd/scripts
 	# Install OSU digital standard cells.
-	${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
+	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-techlef %l/latest/lef/sky130_osu_sc.tlef rename=sky130_osu_sc_t18.tlef \
 		-cdl %l/latest/cdl/*.cdl ignore=topography compile-only \
 		-lef %l/latest/lef/*.lef compile-only \
@@ -656,3 +695,4 @@
 veryclean-a: clean-a
 	${RM} ${SKY130A}_install.log
 	${RM} ${SKY130A}_migrate.log
+
diff --git a/sky130/custom/scripts/pdk_download.sh b/sky130/custom/scripts/pdk_download.sh
new file mode 100755
index 0000000..70f9ae0
--- /dev/null
+++ b/sky130/custom/scripts/pdk_download.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+#  pdk_download.sh --
+#
+#	Download and install a PDK from git
+# 	(mainly for use with the Google/SkyWater SKY130 PDK)
+#
+#  Usage:	pdk_download.sh <url> <destination>
+#
+
+pdir=`dirname $2`
+mkdir -p $pdir
+cd $pdir
+
+# Clone repository
+
+echo "Cloning PDK repository"
+git clone $1 $2
+
+# Get submodules
+
+echo "Getting PDK library submodules"
+cd $2
+for i in $(git submodule | grep /latest | awk '{print $2}'); do
+	git submodule init $i
+done
+git submodule update
+
+# Generate liberty files
+
+echo "Building liberty timing files"
+make timing
diff --git a/sky130/pdk_info.txt b/sky130/pdk_info.txt
deleted file mode 100644
index ee872cd..0000000
--- a/sky130/pdk_info.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-https://github.com/google/skywater-pdk
-
-# Post Clone Commands
-for i in $(git submodule | grep /latest | awk '{print $2}'); do
-    git submodule init $i
-done
-
-git submodule update
-
-make timing
\ No newline at end of file
