diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 88ad096..9525d38 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -73,7 +73,7 @@
 # This Makefile contains bash-isms
 SHELL = bash
 
-REVISION    = 20200508
+REVISION    = 20200927
 TECH        = sky130
 
 # If EF_STYLE is set to 1, then efabless naming conventions are
diff --git a/sky130/custom/scripts/sort_pdkfiles.py b/sky130/custom/scripts/sort_pdkfiles.py
deleted file mode 100755
index ac0a107..0000000
--- a/sky130/custom/scripts/sort_pdkfiles.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python3
-#
-# sort_pdkfiles.py
-#
-# Read "filelist.txt" which is a list of all files to be compiled.
-# Do a natural sort, which puts the "base" files (those without a
-# drive strength) in front of "top level" files (those with a drive
-# strength), and orders the drive strengths numerically.
-#
-# Note that foundry_install.py executes this script using 'subprocess'
-# in the directory where "filelist.txt" and the files are located.  No
-# path components are in the file list.
-
-import re
-import os
-import sys
-
-# Natural sort thanks to Mark Byers in StackOverflow
-def natural_sort(l):
-    convert = lambda text: int(text) if text.isdigit() else text.lower()
-    alphanum_key= lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
-    return sorted(l, key = alphanum_key)
-
-def pdk_sort(destdir):
-    if not os.path.isfile(destdir + '/filelist.txt'):
-        print('No file "filelist.txt" in ' + destdir + '. . .  Nothing to sort.')
-        sys.exit()
-
-    with open(destdir + '/filelist.txt', 'r') as ifile:
-        vlist = ifile.read().splitlines()
-
-    vlist = natural_sort(vlist)
-    
-    with open(destdir + '/filelist.txt', 'w') as ofile:
-        for vfile in vlist:
-            print(vfile, file=ofile)
-
-if __name__ == '__main__':
-
-    # This script expects to get one argument, which is a path name
-
-    options = []
-    arguments = []
-    for item in sys.argv[1:]:
-        if item.find('-', 0) == 0:
-            options.append(item[1:])
-        else:
-            arguments.append(item)
-
-    if len(arguments) > 0:
-        destdir = arguments[0]
-
-    pdk_sort(destdir)
-    sys.exit(0)
-
