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)
