Added recipes to the Makefiles to execute "make update", which
visits all directories in source/ that are git repositories and
runs "git pull".  Also:  Removed the recipe for installing the
xschem sky130 library, and added a new one which reflects recent
changes in the repository supporting the PDK_ROOT environment
variable and supporting the reram device in sky130B.  Properly
resolved differences in xschem's setup for sky130A vs. sky130B.
diff --git a/.gitignore b/.gitignore
index e140415..7fe9b79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,6 @@
 
 # local install cache
 /sources
+
+# can use this file to aid in local installations
+reconfigure.sh
diff --git a/Makefile.in b/Makefile.in
index 1c59993..65efa56 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -48,6 +48,7 @@
 endif
 
 TECHS_ALL = $(addprefix tech-,$(ENABLED_TECHS))
+TECHS_UPDATE = $(addprefix update-,$(ENABLED_TECHS))
 TECHS_INSTALL = $(addprefix install-,$(ENABLED_TECHS))
 TECHS_UNINSTALL = $(addprefix uninstall-,$(TECHS))
 TECHS_CLEAN = $(addprefix clean-,$(TECHS))
@@ -55,7 +56,7 @@
 
 #---------------------------------------------------
 
-.PHONY: all install uninstall clean veryclean
+.PHONY: all install uninstall clean veryclean update
 
 all: $(TECHS_ALL)
 	@echo $(DONE_MESSAGE)
@@ -66,6 +67,9 @@
 uninstall: $(TECHS_UNINSTALL)
 	@echo $(DONE_MESSAGE)
 
+update: $(TECHS_UPDATE)
+	@echo $(DONE_MESSAGE)
+
 clean: $(TECHS_CLEAN)
 	@echo $(DONE_MESSAGE)
 
@@ -123,6 +127,9 @@
 uninstall-%: %
 	(cd $* && ${MAKE} uninstall)
 
+update-%: %
+	(cd $* && ${MAKE} update)
+
 clean-%:
 	(cd $* && ${MAKE} clean)
 
diff --git a/VERSION b/VERSION
index cff7ecc..c3ace87 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.285
+1.0.286
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index d89cfdf..54494fe 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -632,6 +632,51 @@
 		fi ; \
 	fi
 
+# Update prerequisites
+update: update-pdk-repo update-alpha-repo update-xschem-repo update-sram-repo update-osu-t12-repo update-osu-t15-repo update-osu-t18-repo
+
+update-pdk-repo:
+	if test "x${SKYWATER_PATH}" != "x" ; then \
+		echo "Updating SkyWater PDK from ${PDK_URL}" ; \
+		custom/scripts/pdk_update.sh ${SKYWATER_PATH} ; \
+	fi
+
+update-alpha-repo:
+	if test "x${ALPHA_PATH}" != "x" ; then \
+		echo "Updating alphanumeric library from ${ALPHA_URL}" ; \
+		../scripts/update.sh ${ALPHA_PATH} ; \
+	fi
+
+update-sram-repo:
+	if test "x${SRAM_PATH}" != "x" ; then \
+		echo "Updating SRAM macro library from ${SRAM_URL}" ; \
+		../scripts/update.sh ${SRAM_PATH} ; \
+	fi
+
+update-xschem-repo:
+	if test "x${XSCHEM_PATH}" != "x" ; then \
+		echo "Updating xschem setup from ${XSCHEM_URL}" ; \
+		../scripts/update.sh ${XSCHEM_PATH} ; \
+	fi
+
+update-osu-t12-repo:
+	if test "x${OSU_T12_PATH}" != "x" ; then \
+		echo "Updating OSU standard T12 cell library from ${OSU_T12_URL}" ; \
+		../scripts/update.sh ${OSU_T12_PATH} ; \
+	fi
+
+update-osu-t15-repo:
+	if test "x${OSU_T15_PATH}" != "x" ; then \
+		echo "Updating OSU standard T15 cell library from ${OSU_T15_URL}" ; \
+		../scripts/update.sh ${OSU_T15_PATH} ; \
+	fi
+
+update-osu-t18-repo:
+	if test "x${OSU_T18_PATH}" != "x" ; then \
+		echo "Updating OSU standard T18 cell library from ${OSU_T18_URL}" ; \
+		../scripts/update.sh ${OSU_T18_PATH} ; \
+	fi
+
 all-%: prerequisites
 	echo "Starting sky130$* PDK staging on "`date` > ${SKY130$*}_make.log
 	${MAKE} general-$*
@@ -813,9 +858,6 @@
 	${CPP} ${SKY130$*_DEFS} xcircuit/${TECH}.xcircuitrc \
 		${XCIRCUIT_STAGING_$*}/${SKY130$*}.xcircuitrc
 
-
-
-
 xschem-%: ${XSCHEM_PATH}
 	if test "x${XSCHEM_PATH}" != "x" ; then \
 		rm -rf ${XSCHEM_STAGING_$*} ; \
@@ -826,23 +868,32 @@
 	if test "x${XSCHEM_PATH}" != "x" ; then \
 		cp -rp ${XSCHEM_PATH}/* ${XSCHEM_STAGING_$*} ; \
 	fi
-
-	#add the correct libraries into the test files
-	if test "x${XSCHEM_PATH}" != "x" ; then \
-		for file in ${XSCHEM_STAGING_$*}/sky130_tests/* ; do \
-			${SED} -i '/.include $$\:\:SKYWATER_MODELS/d' $$file ; \
-			grep -zl 'sky130.lib.spice' $$file || ${SED} -z 's|format="tcleval( @value )"\nvalue="|format="tcleval( @value )"\nvalue="\n.lib $$\:\:SKYWATER_MODELS/sky130.lib.spice tt |' -i $$file ; \
-		done ; \
-	fi
-	# Re-copy the xschemrc, with one change to add the PDK install path as
-	# a component of XSCHEM_LIBRARY_PATH
+	# xschem setup is for sky130A.  Fix for the given target variant.
+	# Add custom additions to the startup file for open_pdk.
 	if test "x${XSCHEM_PATH}" != "x" ; then \
 		cat ${XSCHEM_PATH}/xschemrc | \
-			${SED} -e "/PWD/aappend XSCHEM_LIBRARY_PATH :${XSCHEM_STAGING_$*}" | \
-			${SED} -e '/netlist_dir/aset netlist_dir $$env(PWD)' | \
-			${SED} -e "/SKYWATER_MODELS/s#~/pdks/sky130$*/libs.tech/ngspice#${NGSPICE_STAGING_$*}#" | \
-			${SED} -e "/SKYWATER_STDCELLS/s#~/pdks/sky130$*/libs.ref/sky130_fd_sc_hd/spice#${STAGING_PATH}/${SKY130$*}/libs.ref/${HD_SPICE}#" \
-			> ${XSCHEM_STAGING_$*}/xschemrc ; \
+			${SED} -e "/sky130A/s#sky130A#TECHNAME#" \
+			> ${XSCHEM_STAGING_$*}/xschemrc_source ; \
+		${CPP} ${SKY130$*_DEFS} ${XSCHEM_STAGING_$*}/xschemrc_source \
+			${XSCHEM_STAGING_$*}/xschemrc ; \
+		cat ${XSCHEM_PATH}/xschem_verilog_import/xschemrc | \
+			${SED} -e "/sky130A/s#sky130A#TECHNAME#" \
+			> ${XSCHEM_STAGING_$*}/xschemrc_source ; \
+		${CPP} ${SKY130$*_DEFS} ${XSCHEM_STAGING_$*}/xschemrc_source \
+			${XSCHEM_STAGING_$*}/xschem_verilog_import/xschemrc ; \
+		rm -f ${XSCHEM_STAGING_$*}/xschemrc_source ; \
+		cat ./custom/xschem/xschemrc_append >> ${XSCHEM_STAGING_$*}/xschemrc ; \
+	fi
+	# In the sky130A variant, remove the reram schematic/symbol and references
+	if test "x${XSCHEM_PATH}" != "x" ; then \
+		if test "x$*" == "xA" ; then \
+			rm -f  ${XSCHEM_STAGING_$*}/sky130_tests/tb_reram* ; \
+			rm -f  ${XSCHEM_STAGING_$*}/sky130_fd_pr/reram* ; \
+			cat ${XSCHEM_STAGING_$*}/sky130_tests/top.sch | \
+				${SED} -e "/reram/,+7d" \
+				> ${XSCHEM_STAGING_$*}/temp ; \
+			mv ${XSCHEM_STAGING_$*}/temp ${XSCHEM_STAGING_$*}/sky130_tests/top.sch ; \
+		fi ; \
 	fi
 
 openlane-%: openlane/config.tcl openlane/rcx_rules.info openlane/sky130_fd_sc_hd/config.tcl  openlane/sky130_fd_sc_hs/config.tcl openlane/sky130_fd_sc_ms/config.tcl openlane/sky130_fd_sc_ls/config.tcl openlane/sky130_fd_sc_hdll/config.tcl openlane/sky130_osu_sc_t18/config.tcl
diff --git a/sky130/custom/scripts/pdk_update.sh b/sky130/custom/scripts/pdk_update.sh
new file mode 100755
index 0000000..47910b2
--- /dev/null
+++ b/sky130/custom/scripts/pdk_update.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+#  pdk_update.sh --
+#
+#	Update the PDK from git
+# 	(mainly for use with the Google/SkyWater SKY130 PDK)
+#
+#  Usage:	pdk_update.sh <directory>
+#
+
+if [ ! test -d $1 ] ; then
+    echo "Project does not exist in $pdir ;  Cannot update."
+    exit 0
+fi
+
+cd $1
+
+# Update top-level PDK repository
+
+echo "Pulling PDK repository"
+git pull
+
+# Update submodules
+
+echo "Updating PDK library submodules"
+git submodule update --remote
+
+# Regenerate liberty files
+
+echo "Regenerating liberty timing files"
+make timing
diff --git a/sky130/custom/xschem/xschemrc_append b/sky130/custom/xschem/xschemrc_append
new file mode 100644
index 0000000..0a922f3
--- /dev/null
+++ b/sky130/custom/xschem/xschemrc_append
@@ -0,0 +1,8 @@
+
+# open_pdks specific:
+# Set variables after ${PDK_ROOT} is known
+# This overrides some of the variables set above.
+
+set XSCHEM_START_WINDOW ${PDK_ROOT}/${PDK}/libs.tech/xschem/sky130_tests/top.sch
+append XSCHEM_LIBRARY_PATH :${PDK_ROOT}/${PDK}/libs.tech/xschem
+