Updated VERSION along with pull request #107 from Manar Abdelaty.
Also revised the Makefile.in file to loop over install files for
openlane instead of enumerating each one.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 32feebe..e256282 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -249,6 +249,12 @@
 
 SKY130A_DEFS += -DMAGIC_CURRENT=${MAGICTOP}/current
 
+# Openlane has a number of files that are common to all digital
+# standard cell libraries, so these are collected in one definition
+# here:
+OPENLANE_COMMON = config.tcl tracks.info no_synth.cells
+OPENLANE_COMMON += tribuff_map.v latch_map.v mux2_map.v mux4_map.v fa_map.v rca_map.v
+
 # Where cpp syntax is followed, this is equivalent to cpp, but it does not
 # mangle non-C source files under the belief that they are actually C code.
 CPP   = ../common/preproc.py
@@ -419,82 +425,57 @@
 	mkdir -p ${OPENLANE_STAGING_A}/sky130_osu_sc_t18
 	rm -f ${OPENLANE_STAGING_A}/common_pdn.info
 	rm -f ${OPENLANE_STAGING_A}/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tracks.info
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/no_synth.cells
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tracks.info
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/no_synth.cells
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/tracks.info
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/no_synth.cells
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/tracks.info
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/no_synth.cells
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/tracks.info
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/no_synth.cells
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/tracks.info
-	rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/no_synth.cells
-	rm -f ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/config.tcl
-	rm -f ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/tracks.info
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    rm -f ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/$$file ; \
+	done
+
 	cp -r openlane/custom_cells ${OPENLANE_STAGING_A}
 	${CPP} ${SKY130A_DEFS} openlane/common_pdn.tcl > ${OPENLANE_STAGING_A}/common_pdn.tcl
 	${CPP} ${SKY130A_DEFS} openlane/config.tcl > ${OPENLANE_STAGING_A}/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tracks.info
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/no_synth.cells
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tribuff_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/latch_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/latch_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/mux2_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/mux2_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/mux4_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/mux4_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/fa_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/fa_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/rca_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/rca_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tracks.info
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/no_synth.cells
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tribuff_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/latch_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/latch_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/mux2_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/mux2_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/mux4_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/mux4_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/fa_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/fa_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/rca_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/rca_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/tracks.info
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/no_synth.cells
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/tribuff_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/latch_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/latch_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/mux2_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/mux2_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/mux4_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/mux4_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/fa_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/fa_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/rca_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/rca_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/tracks.info
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/no_synth.cells
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/tribuff_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/latch_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/latch_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/mux2_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/mux2_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/mux4_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/mux4_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/fa_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/fa_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/rca_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/rca_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/tracks.info
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/no_synth.cells
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/tribuff_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/latch_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/latch_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/mux2_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/mux2_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/fa_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/fa_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/rca_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/rca_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/config.tcl
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/tracks.info
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/no_synth.cells	
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/tribuff_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/latch_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/latch_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/mux2_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/mux2_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/mux4_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/mux4_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/fa_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/fa_map.v
-	${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/rca_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/rca_map.v
+
+	for file in ${OPENLANE_COMMON} ; do \
+	    ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/$$file > \
+		${OPENLANE_STAGING_A}/sky130_fd_sc_hd/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/$$file > \
+		${OPENLANE_STAGING_A}/sky130_fd_sc_hs/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/$$file > \
+		${OPENLANE_STAGING_A}/sky130_fd_sc_ms/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/$$file > \
+		${OPENLANE_STAGING_A}/sky130_fd_sc_ls/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/$$file > \
+		${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/$$file ; \
+	done
+	for file in ${OPENLANE_COMMON} ; do \
+	    ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/$$file > \
+		${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/$$file ; \
+	done
+
 	${CPP} ${SKY130A_DEFS} openlane/sky130_osu_sc_t18/config.tcl > ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/config.tcl
 	${CPP} ${SKY130A_DEFS} openlane/sky130_osu_sc_t18/tracks.info > ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/tracks.info
 
diff --git a/sky130/README b/sky130/README
index 3afe686..4463d30 100644
--- a/sky130/README
+++ b/sky130/README
@@ -196,6 +196,7 @@
 		    qflow/		qflow scripts and graywolf setup files.
 		    klayout/		setup files for klayout
 		    openlane/		setup files for openlane
+		    ngspice/		base model files and libraries for ngspice
 
 		libs.ref/		foundry data
 
@@ -224,9 +225,7 @@
 
 			sky130_fd_io/			Standard I/O
 
-			sky130_fd_pr_base/		Primitive devices w/fixed layout
-			sky130_fd_pr_rf/		RF primitive devices w/fixed layout
-			sky130_fd_pr_rf2/		Additional RF primitive devices w/fixed layout
+			sky130_fd_pr/			Primitive devices w/fixed layout
 
     The target installation destinations assume the directory structure above.  Changing
     this requires editing the source files.