diff --git a/common/foundry_install.py b/common/foundry_install.py
index 9a2793a..8909618 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -320,7 +320,7 @@
 # script using the "filter" option.
 #----------------------------------------------------------------------------
 
-def tfilter(targetroot, filterscript, outfile=[]):
+def tfilter(targetroot, filterscript, ef_format=False, outfile=[]):
     filterroot = os.path.split(filterscript)[1]
     if os.path.isfile(targetroot):
         print('   Filtering file ' + targetroot + ' with ' + filterroot)
@@ -331,7 +331,12 @@
             # Make sure this file is writable (as the original may not be)
             makeuserwritable(outfile)
 
-        fproc = subprocess.run([filterscript, targetroot, outfile],
+        if ef_format:
+            arguments = [filterscript, targetroot, outfile, '-ef_format']
+        else:
+            arguments = [filterscript, targetroot, outfile]
+
+        fproc = subprocess.run(arguments,
 			stdin = subprocess.DEVNULL, stdout = subprocess.PIPE,
 			stderr = subprocess.PIPE, universal_newlines = True)
         if fproc.stdout:
@@ -570,7 +575,7 @@
 
                     for filter_script in filter_scripts:
                         # Apply filter script to all files in the target directory
-                        tfilter(targname, filter_script)
+                        tfilter(targname, filter_script, ef_format)
 
                 optionlist.remove(option)
 
@@ -632,7 +637,7 @@
 
                             for filter_script in filter_scripts:
                                 # Apply filter script to all files in the target directory
-                                tfilter(subtargname, filter_script)
+                                tfilter(subtargname, filter_script, ef_format)
 
                     else:
                         # Remove any existing file
@@ -648,7 +653,7 @@
 
                         for filter_script in filter_scripts:
                             # Apply filter script to all files in the target directory
-                            tfilter(targname, filter_script)
+                            tfilter(targname, filter_script, ef_format)
 
                 optionlist.remove(option)
 
@@ -899,7 +904,7 @@
 
                 for filter_script in local_filter_scripts:
                     # Apply filter script to all files in the target directory
-                    tfilter(targname, filter_script)
+                    tfilter(targname, filter_script, ef_format)
 
                 destfilelist.append(os.path.split(targname)[1])
 
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 2af56d8..1bd22be 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -819,7 +819,7 @@
 	# Install device subcircuits from vendor files
 	${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
 		-ngspice sky130_fd_pr/latest/models/* \
-		filter=custom/scripts/rename_models.py ${EF_FORMAT} \
+		filter=custom/scripts/rename_models.py \
 		2>&1 | tee -a ${SKY130A}_make.log
 	# Install device layouts from custom sources
 	${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130A} \
@@ -868,12 +868,12 @@
 	tail -39 ${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/sky130_fd_pr__pnp_05v5_W3p40L3p40.model.spice >> ${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/temp
 	mv ${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/temp  ${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE}/sky130_fd_pr__pnp_05v5_W3p40L3p40.model.spice
 	# Custom:  Add the PNP 3.4x3.4um device model to the includes in "all.spice"
-	./custom/scripts/fix_spice_includes.py ${EF_FORMAT} \
+	./custom/scripts/fix_spice_includes.py \
 		${STAGING_PATH}/${SKY130A}/libs.tech/ngspice/all.spice \
 		2>&1 | tee -a ${SKY130A}_make.log || true
 	# Custom:  Parse the (commented out) statistics blocks and generate
 	# ngspice-compatible monte carlo parameters for mismatch and process
-	./custom/scripts/mismatch_params.py ${EF_FORMAT} \
+	./custom/scripts/mismatch_params.py \
 		2>&1 | tee -a ${SKY130A}_make.log || true
 	./custom/scripts/mismatch_params.py \
 		${STAGING_PATH}/${SKY130A}/libs.tech/ngspice \
@@ -904,7 +904,7 @@
 		2>&1 | tee -a ${SKY130A}_make.log || true
 	# Custom:  Add special device ID layers to bipolar layouts in magic
 	# to make the extraction models correct.
-	./custom/scripts/add_bipolar_ids.py ${EF_FORMAT} \
+	./custom/scripts/add_bipolar_ids.py \
 		2>&1 | tee -a ${SKY130A}_make.log || true
 
 	# Custom:  Add "spinit" file
diff --git a/sky130/custom/scripts/rename_cells.py b/sky130/custom/scripts/rename_cells.py
index b288a25..de47dcb 100755
--- a/sky130/custom/scripts/rename_cells.py
+++ b/sky130/custom/scripts/rename_cells.py
@@ -5,6 +5,7 @@
 # This script renames include paths from SPICE files in the cells
 # (libs.ref/sky130_fd_pr) directory that point to other cells
 # directories, to point to the correct location in libs.ref/sky130_fd_pr/spice/
+# (or libs.ref/spi/sky130_fd_pr, if -ef_format is specified).
 #
 #
 # This script is a filter to be run by setting the name of this script as
