Corrected all of the gf180mcu moscap and varactor drawing routines
in the magic device generator;  all of the types exist in the
device generator now, and draw cleanly with and without guard
rings.  Also:  Ran an update on the libraries to catch changes
made to the Avalon Semiconductors' standard cells, and re-wrote
the references.
diff --git a/gf180mcu/gf180mcu.json b/gf180mcu/gf180mcu.json
index d88bf4d..ab40d9e 100644
--- a/gf180mcu/gf180mcu.json
+++ b/gf180mcu/gf180mcu.json
@@ -97,8 +97,8 @@
         "magic": "MAGIC_COMMIT"
     },
     "reference": {
-        "open_pdks": "9233c19260cd813c3fa67dd4594fe4cc67016832",
-        "magic": "14afb4bd5207392dc6a2efb0b47cc176e28496ed",
+        "open_pdks": "2d4fecdb34596a309e19a0513541c2c0f22a84a8",
+        "magic": "d44aeaa1d107733532cf47b7c9f1af5374577cbf",
         "gf180mcu_pdk": "a897aa30369d3bcec87d9d50ce9b01f320f854ef",
         "gf180mcu_fd_pr": "6e186e964fb59211e214b8cde5d6b1912e13db42",
         "gf180mcu_fd_pv": "13f5cb3829f7ec3fe1d4469534fd60c12aaaa477",
@@ -106,7 +106,7 @@
         "gf180mcu_fd_sc_mcu7t5v0": "5641d172662a7d9086e5b99c5d54506c05e65cee",
         "gf180mcu_fd_sc_mcu9t5v0": "e0e80f5a6522f10b82165d3aeab9b8ee28e89849",
         "gf180mcu_fd_ip_sram": "b98653230f05be17867c70870ecacfa6a6bca7ff",
-        "gf180mcu_as_sc_mcu7t3v3": "8f8c3c4e2eaefda6e408e9f92322431f7bedfbe2",
+        "gf180mcu_as_sc_mcu7t3v3": "66751b40df57f561e530e4cd22ad82717b22e19c",
         "gf180mcu_re_efuse": "9941e38e7670a12f3f3a744bea4f9d2f04e6a669",
         "gf180mcu_ocd_io": "f06b365b763826856be080f23b46047c50467072",
         "gf180mcu_ocd_alpha": "0597ebd5732987dbcd149e02c38525c1c5bf2a58",
diff --git a/gf180mcu/magic/gf180mcu.tcl b/gf180mcu/magic/gf180mcu.tcl
index 80a785c..8bcbb00 100644
--- a/gf180mcu/magic/gf180mcu.tcl
+++ b/gf180mcu/magic/gf180mcu.tcl
@@ -127,7 +127,10 @@
    magic::add_toolkit_command $layoutframe "eFuse" "magic::gencell gf180mcu::eFuse" pdk1
 
    magic::add_toolkit_separator	$layoutframe pdk1
-   magic::add_toolkit_command $layoutframe "mos capacitor" "magic::gencell gf180mcu::nmoscap_3p3" pdk1
+   magic::add_toolkit_command $layoutframe "nMOS capacitor" "magic::gencell gf180mcu::nmoscap_3p3" pdk1
+   magic::add_toolkit_command $layoutframe "pMOS capacitor" "magic::gencell gf180mcu::pmoscap_3p3" pdk1
+   magic::add_toolkit_command $layoutframe "nMOS varactor" "magic::gencell gf180mcu::nvaractor_3p3" pdk1
+   magic::add_toolkit_command $layoutframe "pMOS varactor" "magic::gencell gf180mcu::pvaractor_3p3" pdk1
 
    magic::add_toolkit_menu $layoutframe "Devices 2" pdk2
 
@@ -3534,7 +3537,7 @@
 }
 
 #----------------------------------------------------------------
-# mosvc: Specify all user-editable default values and those
+# moscap: Specify all user-editable default values and those
 # needed by nmoscap_3p3_check
 #----------------------------------------------------------------
 
@@ -3552,6 +3555,52 @@
 		class mosfet full_metal 1 compatible {nmoscap_3p3 nmoscap_6p0}}
 }
 
+proc gf180mcu::pmoscap_3p3_defaults {} {
+    return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
+		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
+		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.22 \
+		class mosfet full_metal 1 compatible {pmoscap_3p3 pmoscap_6p0}}
+}
+
+proc gf180mcu::pmoscap_6p0_defaults {} {
+    return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
+		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
+		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.3 \
+		class mosfet full_metal 1 compatible {pmoscap_3p3 pmoscap_6p0}}
+}
+
+#----------------------------------------------------------------
+# Varactors (called moscaps by the foundry)
+#----------------------------------------------------------------
+
+proc gf180mcu::nvaractor_3p3_defaults {} {
+    return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
+		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
+		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.22 \
+		class mosfet full_metal 1 compatible {nvaractor_3p3 nvaractor_6p0}}
+}
+
+proc gf180mcu::nvaractor_6p0_defaults {} {
+    return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
+		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
+		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.3 \
+		class mosfet full_metal 1 compatible {nvaractor_3p3 nvaractor_6p0}}
+}
+
+proc gf180mcu::pvaractor_3p3_defaults {} {
+    return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
+		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
+		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.22 \
+		class mosfet full_metal 1 compatible {pvaractor_3p3 pvaractor_6p0}}
+}
+
+proc gf180mcu::pvaractor_6p0_defaults {} {
+    return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
+		guard 1 glc 1 grc 1 gtc 0 gbc 0 tbcov 100 rlcov 100 \
+		topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.28 wmin 0.3 \
+		class mosfet full_metal 1 compatible {pvaractor_3p3 pvaractor_6p0}}
+}
+
 #----------------------------------------------------------------
 # mos: Conversion from SPICE netlist parameters to toolkit
 #----------------------------------------------------------------
@@ -3652,6 +3701,30 @@
     return [gf180mcu::mos_convert $parameters]
 }
 
+proc gf180mcu::pmoscap_3p3_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::pmoscap_6p0_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::nvaractor_3p3_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::nvaractor_6p0_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::pvaractor_3p3_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::pvaractor_6p0_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
 proc gf180mcu::nfet_10v0_asym_convert {parameters} {
     return [gf180mcu::mos_convert $parameters]
 }
@@ -3759,6 +3832,30 @@
     gf180mcu::mos_dialog nmoscap_6p0 $parameters
 }
 
+proc gf180mcu::pmoscap_3p3_dialog {parameters} {
+    gf180mcu::mos_dialog pmoscap_3p3 $parameters
+}
+
+proc gf180mcu::pmoscap_6p0_dialog {parameters} {
+    gf180mcu::mos_dialog pmoscap_6p0 $parameters
+}
+
+proc gf180mcu::nvaractor_3p3_dialog {parameters} {
+    gf180mcu::mos_dialog nvaractor_3p3 $parameters
+}
+
+proc gf180mcu::nvaractor_6p0_dialog {parameters} {
+    gf180mcu::mos_dialog nvaractor_6p0 $parameters
+}
+
+proc gf180mcu::pvaractor_3p3_dialog {parameters} {
+    gf180mcu::mos_dialog pvaractor_3p3 $parameters
+}
+
+proc gf180mcu::pvaractor_6p0_dialog {parameters} {
+    gf180mcu::mos_dialog pvaractor_6p0 $parameters
+}
+
 proc gf180mcu::nfet_10v0_asym_dialog {parameters} {
     gf180mcu::mos_dialog nfet_10v0_asym $parameters
 }
@@ -4693,12 +4790,97 @@
 }
 
 #------------------------
-# MOS varactor (3.3V)
+# nMOS cap (3.3V)
 #------------------------
 
 proc gf180mcu::nmoscap_3p3_draw {parameters} {
     set newdict [dict create \
-	    gate_type		var \
+	    gate_type		ncap \
+	    diff_type 		ndiff \
+	    diff_contact_type	ndc \
+	    plus_diff_type	psd \
+	    plus_contact_type	psc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		pwell \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#------------------------
+# nMOS cap (6.0V)
+#------------------------
+
+proc gf180mcu::nmoscap_6p0_draw {parameters} {
+    set newdict [dict create \
+	    diff_poly_space	0.30 \
+	    diff_gate_space	0.30 \
+	    diff_spacing	0.36 \
+	    gate_type		mvncap \
+	    diff_type 		mvndiff \
+	    diff_contact_type	mvndc \
+	    plus_diff_type	mvpsd \
+	    plus_contact_type	mvpsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		pwell \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#------------------------
+# pMOS cap (3.3V)
+#------------------------
+
+proc gf180mcu::pmoscap_3p3_draw {parameters} {
+    set newdict [dict create \
+	    gate_type		pcap \
+	    diff_type 		pdiff \
+	    diff_contact_type	pdc \
+	    plus_diff_type	nsd \
+	    plus_contact_type	nsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		nwell \
+	    dev_surround	0.43 \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#------------------------
+# pMOS cap (6.0V)
+#------------------------
+
+proc gf180mcu::pmoscap_6p0_draw {parameters} {
+    set newdict [dict create \
+	    diff_poly_space	0.30 \
+	    diff_gate_space	0.30 \
+	    diff_spacing	0.36 \
+	    gate_type		mvpcap \
+	    diff_type 		mvpdiff \
+	    diff_contact_type	mvpdc \
+	    plus_diff_type	mvnsd \
+	    plus_contact_type	mvnsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		nwell \
+	    sub_surround	0.16 \
+	    dev_surround	0.60 \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#------------------------
+# n-varactor (3.3V)
+#------------------------
+
+proc gf180mcu::nvaractor_3p3_draw {parameters} {
+    set newdict [dict create \
+	    gate_type		nvar \
 	    diff_type 		nsd \
 	    diff_contact_type	nsc \
 	    plus_diff_type	psd \
@@ -4708,21 +4890,22 @@
 	    sub_type		pwell \
 	    dev_sub_type	nwell \
 	    dev_sub_dist	0.12 \
+	    dev_surround	-0.01 \
     ]
     set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
     return [gf180mcu::mos_draw $drawdict]
 }
 
 #------------------------
-# MOS varactor (6.0V)
+# n-varactor (6.0V)
 #------------------------
 
-proc gf180mcu::nmoscap_6p0_draw {parameters} {
+proc gf180mcu::nvaractor_6p0_draw {parameters} {
     set newdict [dict create \
 	    diff_poly_space	0.30 \
 	    diff_gate_space	0.30 \
 	    diff_spacing	0.36 \
-	    gate_type		mvvar \
+	    gate_type		mvnvar \
 	    diff_type 		mvnsd \
 	    diff_contact_type	mvnsc \
 	    plus_diff_type	mvpsd \
@@ -4732,6 +4915,56 @@
 	    sub_type		pwell \
 	    sub_surround	0.16 \
 	    dev_sub_type	nwell \
+	    dev_sub_dist	0.16 \
+	    dev_surround	-0.01 \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#------------------------
+# p-varactor (3.3V)
+#------------------------
+
+proc gf180mcu::pvaractor_3p3_draw {parameters} {
+    set newdict [dict create \
+	    gate_type		pvar \
+	    diff_type 		psd \
+	    diff_contact_type	psc \
+	    plus_diff_type	nsd \
+	    plus_contact_type	nsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		nwell \
+	    sub_surround	0.26 \
+	    dev_sub_type	pwell \
+	    dev_sub_dist	0.24 \
+	    dev_surround	-0.01 \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#------------------------
+# p-varactor (6.0V)
+#------------------------
+
+proc gf180mcu::pvaractor_6p0_draw {parameters} {
+    set newdict [dict create \
+	    diff_poly_space	0.30 \
+	    diff_gate_space	0.30 \
+	    diff_spacing	0.36 \
+	    gate_type		mvpvar \
+	    diff_type 		mvpsd \
+	    diff_contact_type	mvpsc \
+	    plus_diff_type	mvnsd \
+	    plus_contact_type	mvnsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		nwell \
+	    sub_surround	0.20 \
+	    dev_sub_type	pwell \
+	    dev_surround	-0.01 \
     ]
     set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
     return [gf180mcu::mos_draw $drawdict]
@@ -4889,6 +5122,30 @@
    return [gf180mcu::mos_check $parameters]
 }
 
+proc gf180mcu::pmoscap_3p3_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::pmoscap_6p0_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::nvaractor_3p3_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::nvaractor_6p0_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::pvaractor_3p3_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::pvaractor_6p0_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
 proc gf180mcu::nfet_10v0_asym_check {parameters} {
    return [gf180mcu::mos_check $parameters]
 }
diff --git a/gf180mcu/magic/gf180mcu.tech b/gf180mcu/magic/gf180mcu.tech
index 2cccb2e..8a37bcb 100644
--- a/gf180mcu/magic/gf180mcu.tech
+++ b/gf180mcu/magic/gf180mcu.tech
@@ -115,7 +115,7 @@
  -active srampdiff
  -active sramndc
  -active srampdc
-# Varactors
+# Varactors.  NOTE:  GF does not provide varactor models.
   active nvaractor,nvaract,nvar
   active pvaractor,pvaract,pvar
   active mvnvaractor,mvnvaract,mvnvar
diff --git a/sky130/sky130.json b/sky130/sky130.json
index eb7caa5..ce55c29 100644
--- a/sky130/sky130.json
+++ b/sky130/sky130.json
@@ -94,8 +94,8 @@
         "magic": "MAGIC_COMMIT"
     },
     "reference": {
-        "open_pdks": "9233c19260cd813c3fa67dd4594fe4cc67016832",
-        "magic": "14afb4bd5207392dc6a2efb0b47cc176e28496ed",
+        "open_pdks": "2d4fecdb34596a309e19a0513541c2c0f22a84a8",
+        "magic": "d44aeaa1d107733532cf47b7c9f1af5374577cbf",
         "sky130_fd_pr": "403964dc7f9cca5ec1a8cc7b4f2a6f532b781676",
         "sky130_fd_io": "b0c377d9c91b4152e0edd3a766a19185df819888",
         "sky130_fd_sc_hs": "c3d7991a9bcb4fc33cbd43262b44bb5560d6fdd0",