Modified the Makefile to correct several errors when installing
with the "ef-style" option.  This required splitting the patch
file for sky130_fd_pr into two so they could be applied separately
to files in the libs.ref path and the libs.tech path.
diff --git a/VERSION b/VERSION
index 54e242a..cf652ee 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.149
+1.0.150
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index afbfe8d..617b5ca 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -270,6 +270,7 @@
 OPENLANETOP = libs.tech/openlane
 XSCHEMTOP = libs.tech/xschem
 XCIRCUITTOP = libs.tech/xcircuit
+NGSPICETOP = libs.tech/ngspice
 
 ifeq (${EF_STYLE}, 1)
     MAGICPATH = ${MAGICTOP}/${REVISION}
@@ -287,6 +288,7 @@
 OPENLANEPATH = ${OPENLANETOP}
 XSCHEMPATH = ${XSCHEMTOP}
 XCIRCUITPATH = ${XCIRCUITTOP}
+NGSPICEPATH = ${NGSPICETOP}
 
 MAGICTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${MAGICTOP}
 NETGENTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${NETGENTOP}
@@ -296,6 +298,7 @@
 OPENLANETOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${OPENLANETOP}
 XSCHEMTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${XSCHEMTOP}
 XCIRCUITTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${XCIRCUITTOP}
+NGSPICETOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${NGSPICETOP}
 
 MAGIC_STAGING_A = ${STAGING_PATH}/${SKY130A}/${MAGICPATH}
 NETGEN_STAGING_A = ${STAGING_PATH}/${SKY130A}/${NETGENPATH}
@@ -305,6 +308,7 @@
 OPENLANE_STAGING_A = ${STAGING_PATH}/${SKY130A}/${OPENLANEPATH}
 XSCHEM_STAGING_A = ${STAGING_PATH}/${SKY130A}/${XSCHEMPATH}
 XCIRCUIT_STAGING_A = ${STAGING_PATH}/${SKY130A}/${XCIRCUITPATH}
+NGSPICE_STAGING_A = ${STAGING_PATH}/${SKY130A}/${NGSPICEPATH}
 
 SKY130A_DEFS += -DMAGIC_CURRENT=${MAGICCURRENT}
 
@@ -377,6 +381,35 @@
         TOOLS += xcircuit
 endif
 
+# These definitions depend on the setting of EF_STYLE
+ifeq (${EF_STYLE}, 1)
+	IO_VERILOG = verilog/sky130_fd_io
+	HD_VERILOG = verilog/sky130_fd_sc_hd
+	HDLL_VERILOG = verilog/sky130_fd_sc_hdll
+	HVL_VERILOG = verilog/sky130_fd_sc_hvl
+	HS_VERILOG = verilog/sky130_fd_sc_hs
+	MS_VERILOG = verilog/sky130_fd_sc_ms
+	LS_VERILOG = verilog/sky130_fd_sc_ls
+	LP_VERILOG = verilog/sky130_fd_sc_lp
+	HD_TECHLEF = techLEF/sky130_fd_sc_hd
+	HDLL_TECHLEF = techLEF/sky130_fd_sc_hdll
+	MLXX_SCRIPTS = scripts/sky130_ml_xx_hd
+	PR_SPICE = spi/sky130_fd_pr
+else
+	IO_VERILOG = sky130_fd_io/verilog
+	HD_VERILOG = sky130_fd_sc_hd/verilog
+	HDLL_VERILOG = sky130_fd_sc_hdll/verilog
+	HVL_VERILOG = sky130_fd_sc_hvl/verilog
+	HS_VERILOG = sky130_fd_sc_hs/verilog
+	MS_VERILOG = sky130_fd_sc_ms/verilog
+	LS_VERILOG = sky130_fd_sc_ls/verilog
+	LP_VERILOG = sky130_fd_sc_lp/verilog
+	HD_TECHLEF = sky130_fd_sc_hd/techlef
+	HDLL_TECHLEF = sky130_fd_sc_hdll/techlef
+	MLXX_SCRIPTS = sky130_ml_xx_hd/scripts
+	PR_SPICE = sky130_fd_pr/spice
+endif
+
 all: all-a
 
 # Handle prerequisites (fetch and install the PDK and requested libraries)
@@ -691,9 +724,12 @@
 
 	# Custom:  Patch the models to work around ngspice issue with the relative
 	# order of the "nf" and "mult" parameters.
-	patch -p1 -f -d ${STAGING_PATH}/${SKY130A} \
+	patch -p4 -f -d ${STAGING_PATH}/${SKY130A}/libs.ref/${PR_SPICE} \
 		< custom/patches/sky130_fd_pr.patch \
 		2>&1 | tee -a ${SKY130A}_make.log || true
+	patch -p1 -f -d ${STAGING_PATH}/${SKY130A} \
+		< custom/patches/sky130_fd_pr_2.patch \
+		2>&1 | tee -a ${SKY130A}_make.log || true
 	# Custom:  Add "spinit" file
 	cat ./custom/models/spinit >> \
 		${STAGING_PATH}/${SKY130A}/libs.tech/ngspice/spinit
@@ -727,7 +763,7 @@
 		-library general sky130_fd_io 2>&1 | tee -a ${SKY130A}_make.log
 	# Remove the base verilog files which have already been included into
 	# the libraries
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_io/verilog/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${IO_VERILOG}/*.*.v
 	# Install custom additions to standard cell libraries
 	${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130A} \
 		-gds %l/gds/*.gds options=custom/scripts/gds_import_setup.tcl \
@@ -776,18 +812,18 @@
 		"MASKHINTS_NSDM 0 280 92 506" -mag
 	# Remove the base verilog files which have already been included into
 	# the libraries
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hd/verilog/*.*.v
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hdll/verilog/*.*.v
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hvl/verilog/*.*.v
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hs/verilog/*.*.v
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_ms/verilog/*.*.v
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_ls/verilog/*.*.v
-	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_lp/verilog/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${HD_VERILOG}/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${HDLL_VERILOG}/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${HVL_VERILOG}/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${HS_VERILOG}/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${MS_VERILOG}/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${LS_VERILOG}/*.*.v
+	${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/${LP_VERILOG}/*.*.v
 	# Apply extra PDK patches until they get fixed properly in the source
-	patch -p1 -f -d ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hd/techlef \
+	patch -p1 -f -d ${STAGING_PATH}/${SKY130A}/libs.ref/${HD_TECHLEF} \
 		< custom/patches/hd_minenclosed.squeaky.patch \
 		2>&1 | tee -a ${SKY130A}_make.log || true
-	patch -p1 -f -d ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hdll/techlef \
+	patch -p1 -f -d ${STAGING_PATH}/${SKY130A}/libs.ref/${HDLL_TECHLEF} \
 		< custom/patches/hdll_minenclosed.squeaky.patch \
 		2>&1 | tee -a ${SKY130A}_make.log || true
 
@@ -797,9 +833,9 @@
 		-mag %l/mag/*.mag filter=custom/scripts/text2m5.py \
 		-library general sky130_ml_xx_hd 2>&1 | tee -a ${SKY130A}_make.log
 	# Install text2mag.py script for alphanumeric library
-	mkdir -p ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_ml_xx_hd/scripts
+	mkdir -p ${STAGING_PATH}/${SKY130A}/libs.ref/${MLXX_SCRIPTS}
 	cp custom/scripts/text2mag.py \
-		${STAGING_PATH}/${SKY130A}/libs.ref/sky130_ml_xx_hd/scripts
+		${STAGING_PATH}/${SKY130A}/libs.ref/${MLXX_SCRIPTS}
 
 sram-a:
 	# Install SRAM library.  NOTE:  SRAM macros share some of the same
diff --git a/sky130/custom/patches/sky130_fd_pr.patch b/sky130/custom/patches/sky130_fd_pr.patch
index 2e54f7b..27dad22 100644
--- a/sky130/custom/patches/sky130_fd_pr.patch
+++ b/sky130/custom/patches/sky130_fd_pr.patch
@@ -826,13 +826,3 @@
  rldd d d1 '(1/w)*rdiff' tc1 = 'rdiff_tc1' tc2 = 'rdiff_tc2'
  dnw1 d b sky130_fd_pr__pfet_g5v0d16v0__parasitic__diode_pw2dn area='ad/2' pj='pd/2'
  dnw2 d1 b sky130_fd_pr__pfet_g5v0d16v0__parasitic__diode_pw2dn area='ad/2' pj='pd/2'
---- sky130A_patched/libs.tech/ngspice/r+c.mrp1monte.spice	2021-02-13 15:52:18.387658549 +0000
-+++ sky130A/libs.tech/ngspice/r+c.mrp1monte.spice	2021-02-13 16:16:04.480347264 +0000
-@@ -30,6 +30,6 @@
- .param  w = 1 l = 0 mult = 1 r = 0 tc1 = {tc1rsgpu*sky130_fd_pr__res_generic_po__tc1_slope} tc2 = {tc2rsgpu*sky130_fd_pr__res_generic_po__tc2_slope}
- + rp1_mm = {rp1*sky130_fd_pr__res_generic_po__slope/sqrt(2.0*l*w*mult+rp1/100000.0)}
- + r_tot = {(rp1+rp1_mm)*l/(w-1e6*(-tol_poly-poly_dw))+r}
-+rsky130_fd_pr__res_generic_po r0 r1 sky130_fd_pr__res_generic_po__monte r = {r_tot} tc1 = {tc1} tc2 = {tc2}
--sky130_fd_pr__res_generic_po r0 r1 sky130_fd_pr__res_generic_po__monte r = {r_tot} tc1r = {tc1} tc2r = {tc2}
- .model sky130_fd_pr__res_generic_po__monte r tref = 30.0
- .ends sky130_fd_pr__res_generic_po
diff --git a/sky130/custom/patches/sky130_fd_pr_2.patch b/sky130/custom/patches/sky130_fd_pr_2.patch
new file mode 100644
index 0000000..ac512a1
--- /dev/null
+++ b/sky130/custom/patches/sky130_fd_pr_2.patch
@@ -0,0 +1,10 @@
+--- sky130A_patched/libs.tech/ngspice/r+c.mrp1monte.spice	2021-02-13 15:52:18.387658549 +0000
++++ sky130A/libs.tech/ngspice/r+c.mrp1monte.spice	2021-02-13 16:16:04.480347264 +0000
+@@ -30,6 +30,6 @@
+ .param  w = 1 l = 0 mult = 1 r = 0 tc1 = {tc1rsgpu*sky130_fd_pr__res_generic_po__tc1_slope} tc2 = {tc2rsgpu*sky130_fd_pr__res_generic_po__tc2_slope}
+ + rp1_mm = {rp1*sky130_fd_pr__res_generic_po__slope/sqrt(2.0*l*w*mult+rp1/100000.0)}
+ + r_tot = {(rp1+rp1_mm)*l/(w-1e6*(-tol_poly-poly_dw))+r}
++rsky130_fd_pr__res_generic_po r0 r1 sky130_fd_pr__res_generic_po__monte r = {r_tot} tc1 = {tc1} tc2 = {tc2}
+-sky130_fd_pr__res_generic_po r0 r1 sky130_fd_pr__res_generic_po__monte r = {r_tot} tc1r = {tc1} tc2r = {tc2}
+ .model sky130_fd_pr__res_generic_po__monte r tref = 30.0
+ .ends sky130_fd_pr__res_generic_po