Added code to the process_params.py script to catch about a dozen
or so parameter names in parameters/critical.spice that shadow
device names.  ngspice does a search-and-replace for parameters
so these will destroy the simulation.  They are not even used in
the models as far as I could discover, so just removing them
seems to be the right approach.
diff --git a/sky130/custom/scripts/process_params.py b/sky130/custom/scripts/process_params.py
index ca0f95a..64647c4 100755
--- a/sky130/custom/scripts/process_params.py
+++ b/sky130/custom/scripts/process_params.py
@@ -25,6 +25,17 @@
 
 filelist = []
 
+# Manual hack---flag all parameters that have the same name as devices.
+# These parameters are unused and must be deleted.
+
+excludelist = ['sky130_fd_pr__nfet_20v0_nvt', 'sky130_fd_pr__nfet_20v0_nvt_iso',
+	'sky130_fd_pr__nfet_20v0', 'sky130_fd_pr__nfet_20v0_iso',
+	'sky130_fd_pr__nfet_20v0_zvt', 'sky130_fd_pr__pfet_20v0',
+	'sky130_fd_pr__nfet_01v8_lvt', 'sky130_fd_pr__special_nfet_pass_lvt',
+	'sky130_fd_pr__nfet_g5v0d16v0', 'sky130_fd_pr__pfet_01v8_mvt',
+	'sky130_fd_pr__pnp_05v5_W0p68L0p68', 'sky130_fd_pr__pfet_01v8',
+	'sky130_fd_pr__pfet_g5v0d16v0']
+
 #--------------------------------------------------------------------
 # Step 1.  Gather variables
 #--------------------------------------------------------------------
@@ -57,12 +68,27 @@
                         if 'vary' in tokens:
                             if ('dist=gauss' in tokens) or ('gauss' in tokens):
                                 process_param = tokens[2]
-                                std_dev = float(tokens[-1].split('=')[-1])
-                                replacement = ' + {}*AGAUSS(0,{!s},1)'.format(pr_switch_param, std_dev)
+                                # Issue:  There are improper parameters that
+                                # shadow device names.  They are not used and
+                                # should be detected and elminated.
+                                if (process_param in excludelist):
+                                    print('Found parameter ' + process_param + ' that shadows a device name.')
+                                    replacement = ''
+                                else:
+                                    std_dev = float(tokens[-1].split('=')[-1])
+                                    replacement = ' + {}*AGAUSS(0,{!s},1)'.format(pr_switch_param, std_dev)
                                 process_params.append((process_param, replacement))
 
             infile.close()
 
+# Sort the process parameters so that names that are subsets of other
+# names appear later in the list.
+
+def getKey(item):
+    return item[0]
+
+process_params.sort(reverse=True, key=getKey)
+
 print('') 
 print('Process parameters found:')
 for (process_param, addendum) in process_params:
@@ -98,10 +124,13 @@
                 if pmatch:
                     newline = line
                     for (param, replacement) in process_params:
-                        if param in newline:
-                            newline = newline.strip('\n') + replacement + '\n'
+                        if ' ' + param + ' ' in newline:
                             replaced_something = True
-                            print("  Line {}: Found process parameter '{}' and appended '{}'.".format(line_number, param, replacement))
+                            if replacement == '':
+                                newline = '** ' + newline
+                            else:
+                                newline = newline.strip('\n') + replacement + '\n'
+                                print("  Line {}: Found process parameter '{}' and appended '{}'.".format(line_number, param, replacement))
                     outfile.write(newline)
                 else:
                     outfile.write(line)