diff --git a/scripts/configure b/scripts/configure
index a199e50..9af84fd 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -587,11 +587,11 @@
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 EF_STYLE
-XSCHEM_PATH
+XSCHEM_SKY130_PATH
 SKY130_ML_XX_HD_PATH
-OSU_PATH
 PATCH
 MAGIC
+XSCHEM_DISABLED
 QFLOW_DISABLED
 OPENLANE_DISABLED
 IRSIM_DISABLED
@@ -630,6 +630,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -662,9 +663,9 @@
 enable_irsim
 enable_openlane
 enable_qflow
-enable_osu_lib
-enable_alpha_lib
 enable_xschem
+enable_alpha_sky130
+enable_xschem_sky130
 with_ef_style
 '
       ac_precious_vars='build_alias
@@ -709,6 +710,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -961,6 +963,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=* \
@@ -1098,7 +1109,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.
@@ -1251,6 +1262,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]
@@ -1285,48 +1297,39 @@
                           with a pdk_url file can automatically download them
                           if the path is omitted)"
   --enable-klayout
-                Enable or disable klayout [default=enabled]
+                Enable or disable klayout setup [default=enabled]
 
 
   --enable-magic
-                Enable or disable magic [default=enabled]
+                Enable or disable magic setup [default=enabled]
 
 
   --enable-netgen
-                Enable or disable netgen [default=enabled]
+                Enable or disable netgen setup [default=enabled]
 
 
   --enable-irsim
-                Enable or disable irsim [default=enabled]
+                Enable or disable irsim setup [default=enabled]
 
 
   --enable-openlane
-                Enable or disable openlane [default=enabled]
+                Enable or disable openlane setup [default=enabled]
 
 
   --enable-qflow
-                Enable or disable qflow [default=enabled]
+                Enable or disable qflow setup [default=enabled]
 
 
-  --enable-osu-lib[=path] Install osu. If path is omitted, it'll be
-                          downloaded. [default=disabled]
-  --enable-alpha-lib[=path]
+  --enable-xschem
+                Enable or disable xschem setup [default=enabled]
+
+
+  --enable-alpha-sky130[=path]
                           Install sky130_ml_xx_hd. If path is omitted, it'll be
                           downloaded. [default=disabled]
-  --enable-xschem[=path]  Install xschem. If path is omitted, it'll be
+  --enable-xschem-sky130[=path]
+                          Install xschem_sky130. If path is omitted, it'll be
                           downloaded. [default=disabled]
-  --enable-klayout --disable-klayout
-                          Enable or disable klayout [default=enabled]
-  --enable-magic --disable-magic
-                          Enable or disable magic [default=enabled]
-  --enable-netgen --disable-netgen
-                          Enable or disable netgen [default=enabled]
-  --enable-irsim --disable-irsim
-                          Enable or disable irsim [default=enabled]
-  --enable-openlane --disable-openlane
-                          Enable or disable openlane [default=enabled]
-  --enable-qflow --disable-qflow
-                          Enable or disable qflow [default=enabled]
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1819,7 +1822,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.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
 # split strings by '.' and convert to numeric.  Append some zeros
@@ -2042,28 +2045,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
 
 
 realpath() {
@@ -2077,11 +2085,8 @@
 # define tools
 # define tools to install setup files for.  This does not imply that the tools are
 # available on the system;  just that open_pdks will install the setup files for them.
-## DO NOT INCLUDE XSCHEM IN THE TOOL LIST. XSCHEM CAN BE INSTALLED IN THE CONFIG SCRIPT
 
 
-mkdir -p ../pdks
-
 # check for the source and install paths for each PDK.
 
 
@@ -2092,6 +2097,7 @@
 
     # --enable-pdk-[pdk]=/path/to/pdk
 
+        echo "Checking technology sky130..."
 
 
         SKY130_SOURCE_PATH=""
@@ -2100,53 +2106,53 @@
         SKY130_LINK_TARGETS="none"
 
         pdk_get() {
-            { $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 "$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"; then
-  ac_cv_file____sky130_pdk_info=yes
+if test -r "../sky130/pdk_info.txt"; then
+  ac_cv_file____sky130_pdk_info_txt=yes
 else
-  ac_cv_file____sky130_pdk_info=no
+  ac_cv_file____sky130_pdk_info_txt=no
 fi
 fi
-{ $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}: 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 ../pdks/sky130" >&5
-$as_echo_n "checking for ../pdks/sky130... " >&6; }
-if ${ac_cv_file____pdks_sky130+:} false; 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 "../pdks/sky130"; then
-  ac_cv_file____pdks_sky130=yes
+if test -r "../sources/sky130"; then
+  ac_cv_file____sources_sky130=yes
 else
-  ac_cv_file____pdks_sky130=no
+  ac_cv_file____sources_sky130=no
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____pdks_sky130" >&5
-$as_echo "$ac_cv_file____pdks_sky130" >&6; }
-if test "x$ac_cv_file____pdks_sky130" = xyes; then :
+{ $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" | 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")
+                    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=../pdks/sky130
+                export SKY130_SOURCE_PATH=../sources/sky130
 
 else
 
@@ -2165,9 +2171,9 @@
                     FOUND=1
                 fi
             done
-            if [ "$FOUND" = "sky130" ]; then
-                echo "Could not found sky130 in standard search paths, manually downloading to ../pdks/sky130 ..."
-                pdk_find
+            if [ "$FOUND" = "0" ]; then
+                echo "Could not find sky130 in standard search paths, automatically fetching repository to ../sources/sky130 ..."
+                pdk_get
             fi
         }
 
@@ -2175,18 +2181,14 @@
 if test "${enable_sky130_pdk+set}" = set; then :
   enableval=$enable_sky130_pdk;
                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                   pdk_find
+		    echo "Looking for sky130 in usual places"
+                    pdk_find
                 elif test "$enableval" == "no" -o "$enableval" == "NO"; then
                     echo "Disabling sky130..."
                 else
                     SKY130_SOURCE_PATH=$enableval
                 fi
 
-else
-
-                pdk_find
-
-
 fi
 
 	    # # Require this argument
@@ -2292,8 +2294,8 @@
 # Set variables for tool setups
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Found tools: klayout magic netgen irsim openlane qflow" >&5
-$as_echo "$as_me: Found tools: klayout magic netgen irsim openlane qflow" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Found tools: klayout magic netgen irsim openlane qflow xschem" >&5
+$as_echo "$as_me: Found tools: klayout magic netgen irsim openlane qflow xschem" >&6;}
 
 
 
@@ -2389,6 +2391,21 @@
 
 
 
+        XSCHEM_DISABLED=0
+        # Check whether --enable-xschem was given.
+if test "${enable_xschem+set}" = set; then :
+  enableval=$enable_xschem;
+                if test "$enableval" == "no" -o "$enableval" == "NO"; then
+                    XSCHEM_DISABLED=1
+                fi
+
+
+fi
+
+
+
+
+
 # Magic
 # Extract the first word of "magic", so it can be a program name with args.
 set dummy magic; ac_word=$2
@@ -2478,71 +2495,6 @@
 fi
 
 # Other installations (libraries or tools if applicable)
-mkdir -p ../libs
-mkdir -p ../tools
-
-
-
-
-
-
-
-
-
-    # echo target targetvar flag url location
-
-    OSU_PATH=""
-    OSU_GET() {
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../libs/osu" >&5
-$as_echo_n "checking for ../libs/osu... " >&6; }
-if ${ac_cv_file____libs_osu+:} 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 "../libs/osu"; then
-  ac_cv_file____libs_osu=yes
-else
-  ac_cv_file____libs_osu=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____libs_osu" >&5
-$as_echo "$ac_cv_file____libs_osu" >&6; }
-if test "x$ac_cv_file____libs_osu" = xyes; then :
-
-                echo "Using pre-existing osu download..."
-
-else
-
-                mkdir -p ../libs/osu
-                sh ./download.sh 'https://vlsiarch.ecen.okstate.edu/flows/MOSIS_SCMOS/osu_stdcells_v2.4/osu_stdcells_lib.v2.4.tar.gz' ../libs/osu.tar.gz
-                (echo "Extracting osu..." && cd ../libs && tar -xf osu.tar.gz --strip-components 1 -C ../libs/osu)
-
-
-fi
-
-        export OSU_PATH=../libs/osu
-    }
-
-    # Check whether --enable-osu-lib was given.
-if test "${enable_osu_lib+set}" = set; then :
-  enableval=$enable_osu_lib;
-            if test "$enableval" == "yes" -o "$enableval" == "YES"; then
-                OSU_GET
-                XSCHEM_INST=1
-            elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                echo "Disabling osu..."
-                XSCHEM_DISABLED=1
-            else
-                OSU_PATH=$enableval
-            fi
-            OSU_PATH=`realpath $OSU_PATH`
-
-fi
-
-
-
-
 
 
 
@@ -2556,40 +2508,40 @@
 
     SKY130_ML_XX_HD_PATH=""
     SKY130_ML_XX_HD_GET() {
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../libs/sky130_ml_xx_hd" >&5
-$as_echo_n "checking for ../libs/sky130_ml_xx_hd... " >&6; }
-if ${ac_cv_file____libs_sky130_ml_xx_hd+:} false; then :
+        { $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 "../libs/sky130_ml_xx_hd"; then
-  ac_cv_file____libs_sky130_ml_xx_hd=yes
+if test -r "../sources/sky130_ml_xx_hd"; then
+  ac_cv_file____sources_sky130_ml_xx_hd=yes
 else
-  ac_cv_file____libs_sky130_ml_xx_hd=no
+  ac_cv_file____sources_sky130_ml_xx_hd=no
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____libs_sky130_ml_xx_hd" >&5
-$as_echo "$ac_cv_file____libs_sky130_ml_xx_hd" >&6; }
-if test "x$ac_cv_file____libs_sky130_ml_xx_hd" = xyes; then :
+{ $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 ../libs/sky130_ml_xx_hd
-                sh ./download.sh 'https://github.com/PaulSchulz/sky130_pschulz_xx_hd/archive/master.tar.gz' ../libs/sky130_ml_xx_hd.tar.gz
-                (echo "Extracting sky130_ml_xx_hd..." && cd ../libs && tar -xf sky130_ml_xx_hd.tar.gz --strip-components 1 -C ../libs/sky130_ml_xx_hd)
+                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=../libs/sky130_ml_xx_hd
+        export SKY130_ML_XX_HD_PATH=../sources/sky130_ml_xx_hd
     }
 
-    # Check whether --enable-alpha-lib was given.
-if test "${enable_alpha_lib+set}" = set; then :
-  enableval=$enable_alpha_lib;
+    # 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
@@ -2609,8 +2561,6 @@
 
 
 
-XSCHEM_DISABLED=0
-XSCHEM_INST=0
 
 
 
@@ -2620,112 +2570,52 @@
 
     # echo target targetvar flag url location
 
-    XSCHEM_PATH=""
-    XSCHEM_GET() {
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../tools/xschem" >&5
-$as_echo_n "checking for ../tools/xschem... " >&6; }
-if ${ac_cv_file____tools_xschem+:} false; then :
+    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 "../tools/xschem"; then
-  ac_cv_file____tools_xschem=yes
+if test -r "../sources/xschem_sky130"; then
+  ac_cv_file____sources_xschem_sky130=yes
 else
-  ac_cv_file____tools_xschem=no
+  ac_cv_file____sources_xschem_sky130=no
 fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____tools_xschem" >&5
-$as_echo "$ac_cv_file____tools_xschem" >&6; }
-if test "x$ac_cv_file____tools_xschem" = xyes; then :
+{ $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 download..."
+                echo "Using pre-existing xschem_sky130 download..."
 
 else
 
-                mkdir -p ../tools/xschem
-                sh ./download.sh 'https://github.com/StefanSchippers/xschem/archive/master.tar.gz' ../tools/xschem.tar.gz
-                (echo "Extracting xschem..." && cd ../tools && tar -xf xschem.tar.gz --strip-components 1 -C ../tools/xschem)
+                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_PATH=../tools/xschem
+        export XSCHEM_SKY130_PATH=../sources/xschem_sky130
     }
 
-    # Check whether --enable-xschem was given.
-if test "${enable_xschem+set}" = set; then :
-  enableval=$enable_xschem;
+    # 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_GET
+                XSCHEM_SKY130_GET
                 XSCHEM_INST=1
             elif test "$enableval" == "no" -o "$enableval" == "NO"; then
-                echo "Disabling xschem..."
+                echo "Disabling xschem_sky130..."
                 XSCHEM_DISABLED=1
             else
-                XSCHEM_PATH=$enableval
+                XSCHEM_SKY130_PATH=$enableval
             fi
-            XSCHEM_PATH=`realpath $XSCHEM_PATH`
-
-fi
-
-
-
-    if [ "$XSCHEM_INST" = 1 ]; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ../tools/xschem-install" >&5
-$as_echo_n "checking for ../tools/xschem-install... " >&6; }
-if ${ac_cv_file____tools_xschem_install+:} 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 "../tools/xschem-install"; then
-  ac_cv_file____tools_xschem_install=yes
-else
-  ac_cv_file____tools_xschem_install=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file____tools_xschem_install" >&5
-$as_echo "$ac_cv_file____tools_xschem_install" >&6; }
-if test "x$ac_cv_file____tools_xschem_install" = xyes; then :
-
-            echo "Using pre-existing xschem installation..."
-
-else
-
-            echo "---"
-            echo "Note: attempting to build xschem. Xschem requires all of Magic's dependencies and further, flex, bison and libxpm."
-            echo "Your build WILL fail if any of these are missing. You can choose to remove --enable-xschem or add a known installation path."
-            sleep 2
-            mkdir -p ../tools/xschem-install
-            XSCHEM_ABSOLUTE=`realpath ../tools/xschem-install`
-            (cd ../tools/xschem && ./configure --prefix=$XSCHEM_ABSOLUTE && make && make install)
-            XSCHEM_PATH=$XSCHEM_ABSOLUTE
-
-fi
-
-    fi
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow" >&5
-$as_echo "$as_me: Tools enabled for PDK setup installation: klayout magic netgen irsim openlane qflow" >&6;}
-
-
-
-
-
-        KLAYOUT_DISABLED=0
-        # Check whether --enable-klayout was given.
-if test "${enable_klayout+set}" = set; then :
-  enableval=$enable_klayout;
-                if test "$enableval" == "no" -o "$enableval" == "NO"; then
-                    KLAYOUT_DISABLED=1
-                fi
+            XSCHEM_SKY130_PATH=`realpath $XSCHEM_SKY130_PATH`
 
 fi
 
@@ -2733,75 +2623,12 @@
 
 
 
-        MAGIC_DISABLED=0
-        # Check whether --enable-magic was given.
-if test "${enable_magic+set}" = set; then :
-  enableval=$enable_magic;
-                if test "$enableval" == "no" -o "$enableval" == "NO"; then
-                    MAGIC_DISABLED=1
-                fi
-
-fi
 
 
 
 
-
-        NETGEN_DISABLED=0
-        # Check whether --enable-netgen was given.
-if test "${enable_netgen+set}" = set; then :
-  enableval=$enable_netgen;
-                if test "$enableval" == "no" -o "$enableval" == "NO"; then
-                    NETGEN_DISABLED=1
-                fi
-
-fi
-
-
-
-
-
-        IRSIM_DISABLED=0
-        # Check whether --enable-irsim was given.
-if test "${enable_irsim+set}" = set; then :
-  enableval=$enable_irsim;
-                if test "$enableval" == "no" -o "$enableval" == "NO"; then
-                    IRSIM_DISABLED=1
-                fi
-
-fi
-
-
-
-
-
-        OPENLANE_DISABLED=0
-        # Check whether --enable-openlane was given.
-if test "${enable_openlane+set}" = set; then :
-  enableval=$enable_openlane;
-                if test "$enableval" == "no" -o "$enableval" == "NO"; then
-                    OPENLANE_DISABLED=1
-                fi
-
-fi
-
-
-
-
-
-        QFLOW_DISABLED=0
-        # Check whether --enable-qflow was given.
-if test "${enable_qflow+set}" = set; then :
-  enableval=$enable_qflow;
-                if test "$enableval" == "no" -o "$enableval" == "NO"; then
-                    QFLOW_DISABLED=1
-                fi
-
-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;}
 
 # Check for "--with-ef-style"
 EF_STYLE=0
