diff --git a/pdk.patch b/pdk.patch
new file mode 100644
index 0000000..166dda4
--- /dev/null
+++ b/pdk.patch
@@ -0,0 +1,337 @@
+commit c8e490f65d8624cc2e39147afd1c0269cac7f8b4
+Author: Donn <me@donn.website>
+Date:   Tue Dec 29 01:38:02 2020 +0200
+
+    Looking for PDKs in standard directories then downloading
+
+diff --git a/scripts/.gitignore b/scripts/.gitignore
+index b1083e1..1383243 100644
+--- a/scripts/.gitignore
++++ b/scripts/.gitignore
+@@ -4,4 +4,4 @@
+ !configure.ac
+ !tools.txt
+ !print_tools_make.pl
+-!dl
+\ No newline at end of file
++!download.sh
+\ No newline at end of file
+diff --git a/scripts/configure b/scripts/configure
+index ba4f0c8..5e03076 100755
+--- a/scripts/configure
++++ b/scripts/configure
+@@ -628,6 +628,7 @@ infodir
+ docdir
+ oldincludedir
+ includedir
++runstatedir
+ localstatedir
+ sharedstatedir
+ sysconfdir
+@@ -706,6 +707,7 @@ datadir='${datarootdir}'
+ sysconfdir='${prefix}/etc'
+ sharedstatedir='${prefix}/com'
+ localstatedir='${prefix}/var'
++runstatedir='${localstatedir}/run'
+ includedir='${prefix}/include'
+ oldincludedir='/usr/include'
+ docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+@@ -958,6 +960,15 @@ do
+   | -silent | --silent | --silen | --sile | --sil)
+     silent=yes ;;
+ 
++  -runstatedir | --runstatedir | --runstatedi | --runstated \
++  | --runstate | --runstat | --runsta | --runst | --runs \
++  | --run | --ru | --r)
++    ac_prev=runstatedir ;;
++  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
++  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
++  | --run=* | --ru=* | --r=*)
++    runstatedir=$ac_optarg ;;
++
+   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+     ac_prev=sbindir ;;
+   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+@@ -1095,7 +1106,7 @@ fi
+ for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ 		datadir sysconfdir sharedstatedir localstatedir includedir \
+ 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+-		libdir localedir mandir
++		libdir localedir mandir runstatedir
+ do
+   eval ac_val=\$$ac_var
+   # Remove trailing slashes.
+@@ -1248,6 +1259,7 @@ Fine tuning of the installation directories:
+   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
++  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
+   --libdir=DIR            object code libraries [EPREFIX/lib]
+   --includedir=DIR        C header files [PREFIX/include]
+   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+@@ -1279,7 +1291,7 @@ Optional Features:
+   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+   --enable-sky130-pdk=[/path/to/sky130/] --disable-sky130-pdk
+                           "location of the source files for the sky130 (pdks
+-                          with a pdk_url file can automatically download them
++                          with a pdk_info file can automatically download them
+                           if the path is omitted)"
+   --enable-klayout
+                 Enable or disable klayout [default=enabled]
+@@ -1797,22 +1809,22 @@ $as_echo "$as_me: Found technology directories: sky130" >&6;}
+         SKY130_LINK_TARGETS="none"
+ 
+         pdk_get() {
+-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sky130/pdk_url" >&5
+-$as_echo_n "checking for ../sky130/pdk_url... " >&6; }
+-if ${ac_cv_file____sky130_pdk_url+:} false; then :
++            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sky130/pdk_info" >&5
++$as_echo_n "checking for ../sky130/pdk_info... " >&6; }
++if ${ac_cv_file____sky130_pdk_info+:} 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_url"; then
+-  ac_cv_file____sky130_pdk_url=yes
++if test -r "../sky130/pdk_info"; then
++  ac_cv_file____sky130_pdk_info=yes
+ else
+-  ac_cv_file____sky130_pdk_url=no
++  ac_cv_file____sky130_pdk_info=no
+ fi
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sky130_pdk_url" >&5
+-$as_echo "$ac_cv_file____sky130_pdk_url" >&6; }
+-if test "x$ac_cv_file____sky130_pdk_url" = xyes; then :
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sky130_pdk_info" >&5
++$as_echo "$ac_cv_file____sky130_pdk_info" >&6; }
++if test "x$ac_cv_file____sky130_pdk_info" = xyes; then :
+ 
+                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../pdks/sky130" >&5
+ $as_echo_n "checking for ../pdks/sky130... " >&6; }
+@@ -1835,9 +1847,11 @@ if test "x$ac_cv_file____pdks_sky130" = xyes; then :
+ 
+ else
+ 
+-                    mkdir -p ../pdks/sky130
+-                    sh dl $(cat "../sky130/pdk_get") ../pdks/sky130.tar.gz;
+-                    (echo "Extracting sky130" && cd ../pdks && tar -xf sky130.tar.gz --strip-components 1 -C ../pdks/sky130)
++                    REPO=$(cat "../sky130/pdk_info" | sed -n "1p")
++                    POST_CLONE_COMMANDS=$(cat "../sky130/pdk_info" | sed "1d")
++                    mkdir -p ../pdks
++                    git clone "$REPO" ../pdks/sky130;
++                    (cd ../pdks/sky130 && sh -c "$POST_CLONE_COMMANDS")
+ 
+ fi
+ 
+@@ -1851,11 +1865,26 @@ 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
++                    FOUND=1
++                fi
++            done
++            if [ "$FOUND" = "sky130" ]; then
++                echo "Could not found sky130 in standard search paths, manually downloading to ../pdks/sky130 ..."
++                pdk_find
++            fi
++        }
++
+         # Check whether --enable-sky130-sky130 was given.
+ if test "${enable_sky130_pdk+set}" = set; then :
+   enableval=$enable_sky130_pdk;
+                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
+-                    pdk_get
++                   pdk_find
+                 elif test "$enableval" == "no" -o "$enableval" == "NO"; then
+                     echo "Disabling sky130..."
+                 else
+@@ -1864,7 +1893,7 @@ if test "${enable_sky130_pdk+set}" = set; then :
+ 
+ else
+ 
+-                pdk_get
++                pdk_find
+ 
+ 
+ fi
+@@ -2455,7 +2484,7 @@ if ${am_cv_pathless_PYTHON+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+ 
+-	for am_cv_pathless_PYTHON in python python2 python3 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
++	for am_cv_pathless_PYTHON in python python2 python3 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
+ # split strings by '.' and convert to numeric.  Append some zeros
+@@ -2678,28 +2707,33 @@ $as_echo "$am_cv_python_pyexecdir" >&6; }
+ 
+     if test -z $PYTHON;
+     then
+-        PYTHON="python"
++        if test -z "";
++        then
++            PYTHON="python3"
++        else
++            PYTHON=""
++        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; }
+-	$PYTHON -c "import distutils" 2>/dev/null
+-	if test $? -eq 0;
+-	then
+-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++    $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; }
+-		eval HAVE_PYMOD_DISTUTILS=yes
+-	else
+-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++        eval HAVE_PYMOD_DISTUTILS=yes
++    else
++        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+-		eval HAVE_PYMOD_DISTUTILS=no
+-		#
+-		if test -n ""
+-		then
+-			as_fn_error $? "failed to find required module distutils" "$LINENO" 5
+-			exit 1
+-		fi
+-	fi
++        eval HAVE_PYMOD_DISTUTILS=no
++        #
++        if test -n ""
++        then
++            as_fn_error $? "failed to find required module distutils" "$LINENO" 5
++            exit 1
++        fi
++    fi
+ 
+ 
+ # Check for "--with-ef-style"
+diff --git a/scripts/configure.ac b/scripts/configure.ac
+index 1c06fcf..03866fc 100755
+--- a/scripts/configure.ac
++++ b/scripts/configure.ac
+@@ -24,13 +24,15 @@ AC_DEFUN([M4_GEN_WITH_PDK_ARGS], [
+         pdkvar[]_LINK_TARGETS="none"
+ 
+         pdk_get() {
+-            AC_CHECK_FILE(../pdk/[pdk]_url, [
++            AC_CHECK_FILE(../pdk/[pdk]_info, [
+                 AC_CHECK_FILE(../pdks/pdk,[
+                     echo "Using pre-existing pdk download..."
+                 ], [
+-                    mkdir -p ../pdks/pdk
+-                    sh dl $(cat "../pdk/pdk_get") ../pdks/pdk.tar.gz;
+-                    (echo "Extracting pdk..." && cd ../pdks && tar -xf pdk.tar.gz --strip-components 1 -C ../pdks/pdk)
++                    REPO=$(cat "../pdk/pdk_info" | sed -n "1p")
++                    POST_CLONE_COMMANDS=$(cat "../pdk/pdk_info" | sed "1d")
++                    mkdir -p ../pdks
++                    git clone "$REPO" ../pdks/pdk;
++                    (cd ../pdks/pdk && sh -c "$POST_CLONE_COMMANDS")
+                 ])
+                 export pdkvar[]_SOURCE_PATH=../pdks/pdk
+             ], [
+@@ -38,18 +40,33 @@ AC_DEFUN([M4_GEN_WITH_PDK_ARGS], [
+             ])
+         }
+ 
++        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
++                    FOUND=1
++                fi
++            done
++            if @<:@ "$FOUND" = "$1" @:>@; then
++                echo "Could not found pdk in standard search paths, manually downloading to ../pdks/pdk ..."
++                pdk_find
++            fi
++        }
++
+         AC_ARG_ENABLE(pdk-[pdk],
+             [AS_HELP_STRING([--enable-pdk-[pdk]=@<:@/path/to/pdk/@:>@ --disable-pdk-[pdk]], "location of the source files for the pdk (pdks with a [pdk]_url file can automatically download them if the path is omitted)")],
+             [
+                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
+-                    pdk_get
++                   pdk_find
+                 elif test "$enableval" == "no" -o "$enableval" == "NO"; then
+                     echo "Disabling pdk..."
+                 else
+                     export pdkvar[]_SOURCE_PATH=$enableval
+                 fi
+             ], [
+-                pdk_get
++                pdk_find
+             ]
+         )
+ 	    # # Require this argument
+diff --git a/scripts/download.sh b/scripts/download.sh
+new file mode 100755
+index 0000000..7623f32
+--- /dev/null
++++ b/scripts/download.sh
+@@ -0,0 +1,22 @@
++#!/bin/sh
++#
++# 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
++    DL_CMD="wget -qO"
++fi
++
++if type "curl" > /dev/null; then
++    DL_CMD="curl -sLo"
++fi
++
++if [ "$DL_CMD" = "" ]; then
++    echo "Either curl or wget are required to automatically install tools."
++    exit 1
++fi
++
++echo "Downloading $1 to $2..."
++$DL_CMD $2 $1
+\ No newline at end of file
+diff --git a/sky130/pdk_info b/sky130/pdk_info
+new file mode 100644
+index 0000000..ee872cd
+--- /dev/null
++++ b/sky130/pdk_info
+@@ -0,0 +1,10 @@
++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
+diff --git a/sky130/pdk_url b/sky130/pdk_url
+deleted file mode 100644
+index 11a17e1..0000000
+--- a/sky130/pdk_url
++++ /dev/null
+@@ -1 +0,0 @@
+-https://github.com/google/skywater-pdk/archive/master.tar.gz
+\ No newline at end of file
diff --git a/scripts/.gitignore b/scripts/.gitignore
index b1083e1..1383243 100644
--- a/scripts/.gitignore
+++ b/scripts/.gitignore
@@ -4,4 +4,4 @@
 !configure.ac
 !tools.txt
 !print_tools_make.pl
-!dl
\ No newline at end of file
+!download.sh
\ No newline at end of file
diff --git a/scripts/configure b/scripts/configure
index ba4f0c8..5e03076 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -628,6 +628,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -706,6 +707,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -958,6 +960,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1095,7 +1106,7 @@
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1248,6 +1259,7 @@
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1279,7 +1291,7 @@
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-sky130-pdk=[/path/to/sky130/] --disable-sky130-pdk
                           "location of the source files for the sky130 (pdks
-                          with a pdk_url file can automatically download them
+                          with a pdk_info file can automatically download them
                           if the path is omitted)"
   --enable-klayout
                 Enable or disable klayout [default=enabled]
@@ -1797,22 +1809,22 @@
         SKY130_LINK_TARGETS="none"
 
         pdk_get() {
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sky130/pdk_url" >&5
-$as_echo_n "checking for ../sky130/pdk_url... " >&6; }
-if ${ac_cv_file____sky130_pdk_url+:} false; then :
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../sky130/pdk_info" >&5
+$as_echo_n "checking for ../sky130/pdk_info... " >&6; }
+if ${ac_cv_file____sky130_pdk_info+:} 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_url"; then
-  ac_cv_file____sky130_pdk_url=yes
+if test -r "../sky130/pdk_info"; then
+  ac_cv_file____sky130_pdk_info=yes
 else
-  ac_cv_file____sky130_pdk_url=no
+  ac_cv_file____sky130_pdk_info=no
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sky130_pdk_url" >&5
-$as_echo "$ac_cv_file____sky130_pdk_url" >&6; }
-if test "x$ac_cv_file____sky130_pdk_url" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____sky130_pdk_info" >&5
+$as_echo "$ac_cv_file____sky130_pdk_info" >&6; }
+if test "x$ac_cv_file____sky130_pdk_info" = xyes; then :
 
                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../pdks/sky130" >&5
 $as_echo_n "checking for ../pdks/sky130... " >&6; }
@@ -1835,9 +1847,11 @@
 
 else
 
-                    mkdir -p ../pdks/sky130
-                    sh dl $(cat "../sky130/pdk_get") ../pdks/sky130.tar.gz;
-                    (echo "Extracting sky130" && cd ../pdks && tar -xf sky130.tar.gz --strip-components 1 -C ../pdks/sky130)
+                    REPO=$(cat "../sky130/pdk_info" | sed -n "1p")
+                    POST_CLONE_COMMANDS=$(cat "../sky130/pdk_info" | sed "1d")
+                    mkdir -p ../pdks
+                    git clone "$REPO" ../pdks/sky130;
+                    (cd ../pdks/sky130 && sh -c "$POST_CLONE_COMMANDS")
 
 fi
 
@@ -1851,11 +1865,26 @@
 
         }
 
+        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
+                    FOUND=1
+                fi
+            done
+            if [ "$FOUND" = "sky130" ]; then
+                echo "Could not found sky130 in standard search paths, manually downloading to ../pdks/sky130 ..."
+                pdk_find
+            fi
+        }
+
         # Check whether --enable-sky130-sky130 was given.
 if test "${enable_sky130_pdk+set}" = set; then :
   enableval=$enable_sky130_pdk;
                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                    pdk_get
+                   pdk_find
                 elif test "$enableval" == "no" -o "$enableval" == "NO"; then
                     echo "Disabling sky130..."
                 else
@@ -1864,7 +1893,7 @@
 
 else
 
-                pdk_get
+                pdk_find
 
 
 fi
@@ -2455,7 +2484,7 @@
   $as_echo_n "(cached) " >&6
 else
 
-	for am_cv_pathless_PYTHON in python python2 python3 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
+	for am_cv_pathless_PYTHON in python python2 python3 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
 # split strings by '.' and convert to numeric.  Append some zeros
@@ -2678,28 +2707,33 @@
 
     if test -z $PYTHON;
     then
-        PYTHON="python"
+        if test -z "";
+        then
+            PYTHON="python3"
+        else
+            PYTHON=""
+        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; }
-	$PYTHON -c "import distutils" 2>/dev/null
-	if test $? -eq 0;
-	then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    $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; }
-		eval HAVE_PYMOD_DISTUTILS=yes
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+        eval HAVE_PYMOD_DISTUTILS=yes
+    else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-		eval HAVE_PYMOD_DISTUTILS=no
-		#
-		if test -n ""
-		then
-			as_fn_error $? "failed to find required module distutils" "$LINENO" 5
-			exit 1
-		fi
-	fi
+        eval HAVE_PYMOD_DISTUTILS=no
+        #
+        if test -n ""
+        then
+            as_fn_error $? "failed to find required module distutils" "$LINENO" 5
+            exit 1
+        fi
+    fi
 
 
 # Check for "--with-ef-style"
diff --git a/scripts/configure.ac b/scripts/configure.ac
index 1c06fcf..03866fc 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -24,13 +24,15 @@
         pdkvar[]_LINK_TARGETS="none"
 
         pdk_get() {
-            AC_CHECK_FILE(../pdk/[pdk]_url, [
+            AC_CHECK_FILE(../pdk/[pdk]_info, [
                 AC_CHECK_FILE(../pdks/pdk,[
                     echo "Using pre-existing pdk download..."
                 ], [
-                    mkdir -p ../pdks/pdk
-                    sh dl $(cat "../pdk/pdk_get") ../pdks/pdk.tar.gz;
-                    (echo "Extracting pdk..." && cd ../pdks && tar -xf pdk.tar.gz --strip-components 1 -C ../pdks/pdk)
+                    REPO=$(cat "../pdk/pdk_info" | sed -n "1p")
+                    POST_CLONE_COMMANDS=$(cat "../pdk/pdk_info" | sed "1d")
+                    mkdir -p ../pdks
+                    git clone "$REPO" ../pdks/pdk;
+                    (cd ../pdks/pdk && sh -c "$POST_CLONE_COMMANDS")
                 ])
                 export pdkvar[]_SOURCE_PATH=../pdks/pdk
             ], [
@@ -38,18 +40,33 @@
             ])
         }
 
+        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
+                    FOUND=1
+                fi
+            done
+            if @<:@ "$FOUND" = "$1" @:>@; then
+                echo "Could not found pdk in standard search paths, manually downloading to ../pdks/pdk ..."
+                pdk_find
+            fi
+        }
+
         AC_ARG_ENABLE(pdk-[pdk],
             [AS_HELP_STRING([--enable-pdk-[pdk]=@<:@/path/to/pdk/@:>@ --disable-pdk-[pdk]], "location of the source files for the pdk (pdks with a [pdk]_url file can automatically download them if the path is omitted)")],
             [
                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                    pdk_get
+                   pdk_find
                 elif test "$enableval" == "no" -o "$enableval" == "NO"; then
                     echo "Disabling pdk..."
                 else
                     export pdkvar[]_SOURCE_PATH=$enableval
                 fi
             ], [
-                pdk_get
+                pdk_find
             ]
         )
 	    # # Require this argument
diff --git a/scripts/download.sh b/scripts/download.sh
new file mode 100644
index 0000000..ec206a5
--- /dev/null
+++ b/scripts/download.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# 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
+    DL_CMD="wget -qO"
+fi
+
+if type "curl" > /dev/null; then
+    DL_CMD="curl -sLo"
+fi
+
+if [ "$DL_CMD" = "" ]; then
+    echo "Either curl or wget are required to automatically install tools."
+    exit 1
+fi
+
+echo "Downloading $1 to $2..."
+$DL_CMD $2 $1
diff --git a/sky130/pdk_info b/sky130/pdk_info
new file mode 100644
index 0000000..ee872cd
--- /dev/null
+++ b/sky130/pdk_info
@@ -0,0 +1,10 @@
+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
diff --git a/sky130/pdk_url b/sky130/pdk_url
deleted file mode 100644
index 11a17e1..0000000
--- a/sky130/pdk_url
+++ /dev/null
@@ -1 +0,0 @@
-https://github.com/google/skywater-pdk/archive/master.tar.gz
\ No newline at end of file
