Added a filter script that inserts a liberty file format snippet
containing wire models into each standard cell library liberty
timing file.  Note that the wire load model may not be appropriate
for all corners or all libraries, but may be used as a stand-in
and adjusted as necessary if more specific wire load models are
developed.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 2ac9c4c..1da74c2 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -1050,7 +1050,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib filter=custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			options=custom/scripts/gds_import_setup.tcl \
 			sort=../common/sort_pdkfiles.py \
@@ -1091,7 +1091,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			options=custom/scripts/gds_import_setup.tcl \
 			sort=../common/sort_pdkfiles.py \
@@ -1127,7 +1127,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			options=custom/scripts/gds_import_setup.tcl \
 			sort=../common/sort_pdkfiles.py \
@@ -1166,7 +1166,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			options=custom/scripts/gds_import_setup.tcl \
 			sort=../common/sort_pdkfiles.py \
@@ -1198,7 +1198,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			exclude=sky130_fd_sc_hs__decap_8.gds \
 			options=custom/scripts/gds_import_setup.tcl \
@@ -1227,7 +1227,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			options=custom/scripts/gds_import_setup.tcl \
 			sort=../common/sort_pdkfiles.py \
@@ -1255,7 +1255,7 @@
 		-lef %l/latest/cells/*/*.magic.lef compile-only \
 			sort=../common/sort_pdkfiles.py \
 		-doc %l/latest/cells/*/*.pdf \
-		-lib %l/latest/timing/*.lib \
+		-lib %l/latest/timing/*.lib custom/scripts/add_wireloads.py \
 		-gds %l/latest/cells/*/*.gds compile-only \
 			options=custom/scripts/gds_import_setup.tcl \
 			sort=../common/sort_pdkfiles.py \
diff --git a/sky130/custom/scripts/add_wireloads.py b/sky130/custom/scripts/add_wireloads.py
new file mode 100755
index 0000000..89480ce
--- /dev/null
+++ b/sky130/custom/scripts/add_wireloads.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python3
+#
+# add_wireloads ---
+#
+# This script adds wireload models to the digital standard cell library
+# liberty timing files.  No wireload models were provided with the
+# foundry set.
+#
+# This script is a filter to be run by setting the name of this script as
+# the value to "filter=" for the lib install in the sky130 Makefile.
+
+import re
+import os
+import sys
+
+def filter(inname, outname):
+
+    # Read input
+    try:
+        with open(inname, 'r') as inFile:
+            stext = inFile.read()
+            slines = stext.splitlines()
+    except:
+        print('add_wireloads.py: failed to open ' + fnmIn + ' for reading.', file=sys.stderr)
+        return 1
+
+    # Process input with regexp
+
+    fixedlines = []
+    modified = False
+
+    lutrex = re.compile('[ \t]*power_lut_template.*')
+
+    for line in slines:
+
+        # Check for first power_lut_template
+        lmatch = lutrex.match(line)
+        if lmatch and not modified:
+            # Read and add the contents of "wireload.lib"
+            with open('custom/scripts/wireload.lib', 'r') as libFile:
+                ltext = libFile.read()
+                for lline in ltext.splitlines():
+                    fixedlines.append(lline)
+
+            modified = True
+
+        fixedlines.append(line)
+
+    # Write output
+    if outname == None:
+        for i in fixedlines:
+            print(i)
+    else:
+        # If the output is a symbolic link but no modifications have been made,
+        # then leave it alone.  If it was modified, then remove the symbolic
+        # link before writing.
+        if os.path.islink(outname):
+            if not modified:
+                return 0
+            else:
+                os.unlink(outname)
+        try:
+            with open(outname, 'w') as outFile:
+                for i in fixedlines:
+                    print(i, file=outFile)
+        except:
+            print('add_wireloads.py: failed to open ' + outname + ' for writing.', file=sys.stderr)
+            return 1
+
+
+if __name__ == '__main__':
+
+    # This script expects to get one or two arguments.  One argument is
+    # mandatory and is the input file.  The other argument is optional and
+    # is the output file.  The output file and input file may be the same
+    # name, in which case the original input is overwritten.
+
+    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:
+        infilename = arguments[0]
+
+    if len(arguments) > 1:
+        outfilename = arguments[1]
+    else:
+        outfilename = None
+
+    result = filter(infilename, outfilename)
+    sys.exit(result)
diff --git a/sky130/custom/scripts/wireload.lib b/sky130/custom/scripts/wireload.lib
new file mode 100644
index 0000000..cec7933
--- /dev/null
+++ b/sky130/custom/scripts/wireload.lib
@@ -0,0 +1,53 @@
+    /* Wire load tables */
+
+    wire_load("Small") {
+      capacitance : 1.42e-05;
+      resistance : 0.0745;
+      slope : 8.3631;
+      fanout_length( 1, 23.2746);
+      fanout_length( 2, 32.1136);
+      fanout_length( 3, 48.4862);
+      fanout_length( 4, 64.0974);
+      fanout_length( 5, 86.2649);
+      fanout_length( 6, 84.2649);
+    }
+
+    wire_load("Medium") {
+      capacitance : 1.42e-05;
+      resistance : 0.0745;
+      slope : 8.3631;
+      fanout_length( 1, 23.2746);
+      fanout_length( 2, 32.1136);
+      fanout_length( 3, 48.4862);
+      fanout_length( 4, 64.0974);
+      fanout_length( 5, 86.2649);
+      fanout_length( 6, 84.2649);
+    }
+
+    wire_load("Large") {
+      capacitance : 1.42e-05;
+      resistance : 0.0745;
+      slope : 8.3631;
+      fanout_length( 1, 23.2746);
+      fanout_length( 2, 32.1136);
+      fanout_length( 3, 48.4862);
+      fanout_length( 4, 64.0974);
+      fanout_length( 5, 86.2649);
+      fanout_length( 6, 84.2649);
+    }
+
+    wire_load("Huge") {
+      capacitance : 1.42e-05;
+      resistance : 0.0745;
+      slope : 8.3631;
+      fanout_length( 1, 23.2746);
+      fanout_length( 2, 32.1136);
+      fanout_length( 3, 48.4862);
+      fanout_length( 4, 64.0974);
+      fanout_length( 5, 86.2649);
+      fanout_length( 6, 84.2649);
+    }
+
+    default_wire_load : "Small" ;
+    default_wire_load_mode : top;
+