Migrated klayout DRC sources from gf180mcu_fd_pr to gf180mcu_fd_pv.
They will be removed from gf180mcu_fd_pr soon.
diff --git a/VERSION b/VERSION
index 6863b30..3f2d5b1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.395
+1.0.396
diff --git a/gf180mcu/Makefile.in b/gf180mcu/Makefile.in
index b78bf33..da16966 100644
--- a/gf180mcu/Makefile.in
+++ b/gf180mcu/Makefile.in
@@ -153,6 +153,7 @@
 # Path to GF180MCU open PDK sources.  If this is specified, then all
 # library repositories must be subdirectories of this path.
 GF180MCU_PR_PATH = @GF180MCU_FD_PR_PATH@
+GF180MCU_PV_PATH = @GF180MCU_FD_PV_PATH@
 GF180MCU_IO_PATH = @GF180MCU_FD_IO_PATH@
 GF180MCU_SC_7T5V0_PATH = @GF180MCU_FD_SC_MCU7T5V0_PATH@
 GF180MCU_SC_9T5V0_PATH = @GF180MCU_FD_SC_MCU9T5V0_PATH@
@@ -176,6 +177,7 @@
 # NOTE:  Switching PDK_LIB_PR and PDK_LIB_SC_7T5V0 to Efabless versions
 # having "quick fixes" under development.
 PDK_LIB_PR =       ${EF_URL}/globalfoundries-pdk-libs-gf180mcu_fd_pr
+PDK_LIB_PV =       ${EF_URL}/globalfoundries-pdk-libs-gf180mcu_fd_pv
 PDK_LIB_IO =       ${PDK_URL}/globalfoundries-pdk-libs-gf180mcu_fd_io
 PDK_LIB_SC_7T5V0 = ${EF_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu7t5v0
 PDK_LIB_SC_9T5V0 = ${EF_URL}/globalfoundries-pdk-libs-gf180mcu_fd_sc_mcu9t5v0
@@ -249,6 +251,11 @@
 else
     COMMIT_DEFS += -DFD_PR_COMMIT=$(shell cd ${GF180MCU_PR_PATH} ; git rev-parse HEAD)
 endif
+ifeq (${GF180MCU_PV_PATH},)
+    COMMIT_DEFS += -DFD_PV_COMMIT="unknown"
+else
+    COMMIT_DEFS += -DFD_PV_COMMIT=$(shell cd ${GF180MCU_PV_PATH} ; git rev-parse HEAD)
+endif
 ifeq (${GF180MCU_IO_PATH},)
     COMMIT_DEFS += -DFD_IO_COMMIT="unknown"
 else
@@ -483,7 +490,7 @@
 	../common/save_commit_refs.py ${COMMIT_DEFS} ${TECH}.json
 
 # Handle prerequisites
-prerequisites: pr-repo io-repo sc-7t-repo sc-9t-repo sram-repo osu-sc-repo
+prerequisites: pr-repo pv-repo io-repo sc-7t-repo sc-9t-repo sram-repo osu-sc-repo
 
 pr-repo:
 	if test "x${REFERENCE_JSON}" != "x"; then \
@@ -498,6 +505,19 @@
 		fi ; \
 	fi
 
+pv-repo:
+	if test "x${REFERENCE_JSON}" != "x"; then \
+		FD_PV_COMMIT = `cat ${REFERENCE_JSON} | grep gf180mcu_fd_pv | grep -v COMMIT | cut -d'"' -f4` ; \
+	fi
+	if test "x${GF180MCU_PV_PATH}" != "x" ; then \
+		if test -d "${GF180MCU_PV_PATH}" ; then \
+			echo "Using existing installation of verification library from ${GF180MCU_PV_PATH}" ; \
+		else \
+			echo "Downloading verification library from ${GF180MCU_PV_PATH}" ; \
+			../scripts/download.sh ${PDK_LIB_PV} ${GF180MCU_PV_PATH} ${FD_PV_COMMIT}; \
+		fi ; \
+	fi
+
 io-repo:
 	if test "x${REFERENCE_JSON}" != "x"; then \
 		FD_IO_COMMIT = `cat ${REFERENCE_JSON} | grep gf180mcu_fd_io | grep -v COMMIT | cut -d'"' -f4` ; \
@@ -564,7 +584,7 @@
 	fi
 
 # Update prerequisites
-update: update-pr-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-sram-repo update-osu-sc-repo
+update: update-pr-repo update-pv-repo update-io-repo update-sc-7t-repo update-sc-9t-repo update-sram-repo update-osu-sc-repo
 
 update-pr-repo:
 	if test "x${GF180MCU_PR_PATH}" != "x" ; then \
@@ -572,6 +592,12 @@
 		../scripts/update.sh ${GF180MCU_PR_PATH} ; \
 	fi
 
+update-pv-repo:
+	if test "x${GF180MCU_PV_PATH}" != "x" ; then \
+		echo "Updating GF180MCU verification library from ${PDK_LIB_PV}" ; \
+		../scripts/update.sh ${GF180MCU_PV_PATH} ; \
+	fi
+
 update-io-repo:
 	if test "x${GF180MCU_IO_PATH}" != "x" ; then \
 		echo "Updating GF180MCU I/O library from ${PDK_LIB_IO}" ; \
@@ -678,7 +704,7 @@
 	mkdir -p ${IRSIMTOP_STAGING_$*}
 	mkdir -p ${IRSIM_STAGING_$*}
 
-klayout-%: ${GF180MCU_PR_PATH}
+klayout-%: ${GF180MCU_PV_PATH} ${GF180MCU_PR_PATH}
 	mkdir -p ${KLAYOUTTOP_STAGING_$*}
 	mkdir -p ${KLAYOUT_STAGING_$*}
 	rm -rf ${KLAYOUT_STAGING_$*}/drc
@@ -690,7 +716,7 @@
 	mkdir ${KLAYOUT_STAGING_$*}/tech
 	mkdir ${KLAYOUT_STAGING_$*}/pymacros
 
-	cp -rp ${GF180MCU_PR_PATH}/rules/klayout/drc/* \
+	cp -rp ${GF180MCU_PV_PATH}/klayout/drc/* \
 		${KLAYOUT_STAGING_$*}/drc
 	cp -rp ${GF180MCU_PR_PATH}/rules/klayout/lvs/* \
 		${KLAYOUT_STAGING_$*}/lvs
diff --git a/gf180mcu/gf180mcu.json b/gf180mcu/gf180mcu.json
index be9ea82..7bdef04 100644
--- a/gf180mcu/gf180mcu.json
+++ b/gf180mcu/gf180mcu.json
@@ -74,6 +74,9 @@
     "primitive": {
         "gf180mcu_fd_pr": "FD_PR_COMMIT"
     },
+    "verification": {
+        "gf180mcu_fd_pv": "FD_PV_COMMIT"
+    },
     "memory": {
         "gf180mcu_fd_ip_sram": "FD_IP_SRAM_COMMIT"
     },
@@ -86,15 +89,16 @@
         "magic": "MAGIC_COMMIT"
     },
     "reference": {
-        "open_pdks": "237959eeddfe01b19f76dd7a500e25b36d36a23f",
-        "magic": "be40825e9aadc1bed858801572bef0415444b516",
+        "open_pdks": "815863e7bf1848eb9e21ac1fba50fba0fcbde173",
+        "magic": "e72f85fd105f2f87a809a0512f85b0da75b0350e",
         "gf180mcu_pdk": "a897aa30369d3bcec87d9d50ce9b01f320f854ef",
-        "gf180mcu_fd_pr": "e50ad570729356f65dd77e8c5f0745a6a27afd6c",
+        "gf180mcu_fd_pr": "9d03c3186e8ebfb97c0d05e3d35e64fe6dbbf511",
+        "gf180mcu_fd_pv": "1984a3ca2749350060799115ebb1af41ad4af495",
         "gf180mcu_fd_io": "2aeec51ea2824b6cc0b396acfc39f4535f40b23a",
         "gf180mcu_fd_sc_mcu7t5v0": "8743b6f9641eb8707179c4e51703380d4dc90f16",
         "gf180mcu_fd_sc_mcu9t5v0": "376ea56fa36ce7702595ce4e0e3c9357ee38c81c",
         "gf180mcu_fd_ip_sram": "9c411928870ce15226228fa52ddb6ecc0ea4ffbe",
-	"gf180mcu_osu_sc_gf12t3v3": "e16f26cda99e81e004d7141fc815e67b66f971c2",
-	"gf180mcu_osu_sc_gf9t3v3": "e16f26cda99e81e004d7141fc815e67b66f971c2"
+	"gf180mcu_osu_sc_gf12t3v3": "c33c01c9de46b944401f3f33d9787fb16280be11",
+	"gf180mcu_osu_sc_gf9t3v3": "c33c01c9de46b944401f3f33d9787fb16280be11"
     }
 }
diff --git a/scripts/configure b/scripts/configure
index 1c5c461..f1ad989 100755
--- a/scripts/configure
+++ b/scripts/configure
@@ -596,6 +596,7 @@
 GF180MCU_FD_SC_MCU9T5V0_PATH
 GF180MCU_FD_SC_MCU7T5V0_PATH
 GF180MCU_FD_IO_PATH
+GF180MCU_FD_PV_PATH
 GF180MCU_FD_PR_PATH
 SKY130_OSU_T18_PATH
 SKY130_OSU_T15_PATH
@@ -699,6 +700,7 @@
 enable_osu_t15_sky130
 enable_osu_t18_sky130
 enable_primitive_gf180mcu
+enable_verification_gf180mcu
 enable_io_gf180mcu
 enable_sc_7t5v0_gf180mcu
 enable_sc_9t5v0_gf180mcu
@@ -1397,6 +1399,9 @@
   --enable-primitive-gf180mcu[=path]
                           Install gf180mcu_fd_pr. If path is omitted, the repository
                           will be downloaded. [default=enabled]
+  --enable-verification-gf180mcu[=path]
+                          Install gf180mcu_fd_pv. If path is omitted, the repository
+                          will be downloaded. [default=enabled]
   --enable-io-gf180mcu[=path]
                           Install gf180mcu_fd_io. If path is omitted, the repository
                           will be downloaded. [default=enabled]
@@ -3119,6 +3124,48 @@
 
     # echo target targetvar flag location
 
+    GF180MCU_FD_PV_PATH=""
+
+    # Check whether --enable-verification-gf180mcu was given.
+if test "${enable_verification_gf180mcu+set}" = set; then :
+  enableval=$enable_verification_gf180mcu;
+            if test "$enableval" == "yes" -o "$enableval" == "YES"; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&5
+$as_echo "$as_me: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&6;}
+        	export GF180MCU_FD_PV_PATH=../sources/gf180mcu_fd_pv
+            elif test "$enableval" == "no" -o "$enableval" == "NO"; then
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Disabling package 'gf180mcu_fd_pv'" >&5
+$as_echo "$as_me: Disabling package 'gf180mcu_fd_pv'" >&6;}
+    		export GF180MCU_FD_PV_PATH=""
+            else
+                GF180MCU_FD_PV_PATH=$enableval
+                { $as_echo "$as_me:${as_lineno-$LINENO}: Enabling package 'gf180mcu_fd_pv' at $GF180MCU_FD_PV_PATH" >&5
+$as_echo "$as_me: Enabling package 'gf180mcu_fd_pv' at $GF180MCU_FD_PV_PATH" >&6;}
+            fi
+            GF180MCU_FD_PV_PATH=`realpath $GF180MCU_FD_PV_PATH`
+
+else
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&5
+$as_echo "$as_me: Package 'gf180mcu_fd_pv' will be installed automatically during make." >&6;}
+	    GF180MCU_FD_PV_PATH=../sources/gf180mcu_fd_pv
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+    # echo target targetvar flag location
+
     GF180MCU_FD_IO_PATH=""
 
     # Check whether --enable-io-gf180mcu was given.
diff --git a/scripts/configure.ac b/scripts/configure.ac
index 216b520..4662e99 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -243,6 +243,7 @@
 
 # GlobalFoundries gf180mcu essential
 M4_GEN_INSTALLATION(gf180mcu_fd_pr, primitive-gf180mcu, ../sources)
+M4_GEN_INSTALLATION(gf180mcu_fd_pv, verification-gf180mcu, ../sources)
 M4_GEN_INSTALLATION(gf180mcu_fd_io, io-gf180mcu, ../sources)
 M4_GEN_INSTALLATION(gf180mcu_fd_sc_mcu7t5v0, sc-7t5v0-gf180mcu, ../sources)
 M4_GEN_INSTALLATION(gf180mcu_fd_sc_mcu9t5v0, sc-9t5v0-gf180mcu, ../sources)
diff --git a/sky130/sky130.json b/sky130/sky130.json
index e211b16..0418ed8 100644
--- a/sky130/sky130.json
+++ b/sky130/sky130.json
@@ -94,17 +94,17 @@
         "magic": "MAGIC_COMMIT"
     },
     "reference": {
-        "open_pdks": "3f9bdbd857564726b731760dc2c817e84ca7d8ac",
-        "magic": "6cefbd13f1dac2293aaa1537a6ee2ad23c11a273",
-        "skywater_pdk": "f70d8ca46961ff92719d8870a18a076370b85f6c",
-        "sky130_osu_sc_t12": "ac90ef0c622a9377a16b5218d9da3ac4169eeaaf",
-        "sky130_osu_sc_t15": "95d1c19abb47e1b2945847acb4e817b1b8417c43",
-        "sky130_osu_sc_t18": "aa2b509f3c8f32ea94fdb55ac9768754667c1658",
-        "sky130_sram_macros": "c2333394e0b0b9d9d71185678a8d8087715d5e3b",
+        "open_pdks": "815863e7bf1848eb9e21ac1fba50fba0fcbde173",
+        "magic": "e72f85fd105f2f87a809a0512f85b0da75b0350e",
+        "skywater_pdk": "unknown",
+        "sky130_osu_sc_t12": "unknown",
+        "sky130_osu_sc_t15": "unknown",
+        "sky130_osu_sc_t18": "unknown",
+        "sky130_sram_macros": "unknown",
         "sky130_fd_bd_sram": "be33adbcf188fdeab5c061699847d9d440f7a084",
         "sky130_ml_xx_hd": "6eb3b0718552b034f1bf1870285ff135e3fb2dcb",
-        "xschem_sky130": "5fa1b2e30eda4cdc9949a989d7482531a30b56d4",
-        "klayout_sky130": "1d53b55625d854ebfdd9f7f2941a35f3ffbdf185",
-        "precheck_sky130": "a8a54b74961a43f3a7b85d44843ae2adbc93b233"
+        "xschem_sky130": "e5e0ff5c76732ae899d2b96bf556523118a3982b",
+        "klayout_sky130": "00f6055166cf790587c457f90bbcba33fc076dcd",
+        "precheck_sky130": "86b7c42bfeb41d39c053a4f54677fb187ab350b1"
     }
 }