diff --git a/gf180mcu/magic/gf180mcu.tcl b/gf180mcu/magic/gf180mcu.tcl
index 532f983..6de2076 100644
--- a/gf180mcu/magic/gf180mcu.tcl
+++ b/gf180mcu/magic/gf180mcu.tcl
@@ -99,13 +99,18 @@
    magic::add_toolkit_command $layoutframe "pmos - pMOSFET" "magic::gencell gf180mcu::pfet_03v3" pdk1
 
    magic::add_toolkit_separator	$layoutframe pdk1
-   magic::add_toolkit_command $layoutframe "diode_nd2ps_03v3 - n-diode" "magic::gencell gf180mcu::diode_nd2ps_03v3" pdk1
-   magic::add_toolkit_command $layoutframe "diode_pd2nw_03v3 - p-diode" "magic::gencell gf180mcu::diode_pd2nw_03v3" pdk1
+   magic::add_toolkit_command $layoutframe "nfet_03v3_dss - mosfet (unsalicided drain)" "magic::gencell gf180mcu::nfet_03v3_dss" pdk1
+   magic::add_toolkit_command $layoutframe "pfet_03v3_dss - mosfet (unsalicided drain)" "magic::gencell gf180mcu::pfet_03v3_dss" pdk1
+   magic::add_toolkit_command $layoutframe "nfet_06v0_dss - mosfet (unsalicided drain, thick oxide)" "magic::gencell gf180mcu::nfet_06v0_dss" pdk1
+   magic::add_toolkit_command $layoutframe "pfet_06v0_dss - mosfet (unsalicided drain, thick oxide)" "magic::gencell gf180mcu::pfet_06v0_dss" pdk1
 
-   magic::add_toolkit_separator	$layoutframe pdk1
+ magic::add_toolkit_separator	$layoutframe pdk1
    magic::add_toolkit_command $layoutframe "ldnmos - nMOSFET" "magic::gencell gf180mcu::nfet_10v0_asym" pdk1
    magic::add_toolkit_command $layoutframe "ldpmos - nMOSFET" "magic::gencell gf180mcu::pfet_10v0_asym" pdk1
- 
+
+   magic::add_toolkit_separator	$layoutframe pdk1
+   magic::add_toolkit_command $layoutframe "diode_nd2ps_03v3 - n-diode" "magic::gencell gf180mcu::diode_nd2ps_03v3" pdk1
+   magic::add_toolkit_command $layoutframe "diode_pd2nw_03v3 - p-diode" "magic::gencell gf180mcu::diode_pd2nw_03v3" pdk1
 
    magic::add_toolkit_separator	$layoutframe pdk1
    magic::add_toolkit_command $layoutframe "npn_10p00x10p00  (3.3V) - 10.0um x 10.0um " "magic::gencell gf180mcu::npn_10p00x10p00" pdk1
@@ -3232,6 +3237,21 @@
 		compatible {pfet_03v3 pfet_06v0}}
 }
 
+proc gf180mcu::pfet_03v3_dss_defaults {} {
+    return {w 0.220 l 0.280 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 \
+		full_metal 1 \
+		compatible {pfet_03v3_dss}}
+}
+
+proc gf180mcu::pfet_06v0_dss_defaults {} {
+    return {w 0.3 l 0.5 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.5 wmin 0.3 \
+		full_metal 1 \
+		compatible {pfet_06v0_dss}}
+}
 #----------------------------------------------------------------
 # nmos: Specify all user-editable default values and those
 # needed by nmos_check
@@ -3275,6 +3295,22 @@
 		full_metal 1 }
 }
 
+proc gf180mcu::nfet_03v3_dss_defaults {} {
+    return {w 0.220 l 0.280 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 \
+		full_metal 1 \
+		compatible {nfet_03v3_dss}}
+}
+
+proc gf180mcu::nfet_06v0_dss_defaults {} {
+    return {w 0.3 l 0.6 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.6 wmin 0.3 \
+		full_metal 1 \
+		compatible {nfet_06v0_dss}}
+}
+
 #----------------------------------------------------------------
 # mosvc: Specify all user-editable default values and those
 # needed by nmoscap_3p3_check
@@ -3363,6 +3399,21 @@
     return [gf180mcu::mos_convert $parameters]
 }
 
+proc gf180mcu::nfet_03v3_dss_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::pfet_03v3_dss_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::nfet_06v0_dss_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::pfet_06v0_dss_convert {parameters} {
+    return [gf180mcu::mos_convert $parameters]
+}
 
 #----------------------------------------------------------------
 # mos: Interactively specifies the fixed layout parameters
@@ -3447,6 +3498,21 @@
     gf180mcu::mos_dialog pfet_10v0_asym $parameters
 }
 
+proc gf180mcu::nfet_03v3_dss_dialog {parameters} {
+    gf180mcu::mos_dialog nfet_03v3_dss $parameters
+}
+
+proc gf180mcu::nfet_06v0_dss_dialog {parameters} {
+    gf180mcu::mos_dialog nfet_06v0_dss $parameters
+}
+
+proc gf180mcu::pfet_03v3_dss_dialog {parameters} {
+    gf180mcu::mos_dialog pfet_03v3_dss $parameters
+}
+
+proc gf180mcu::pfet_06v0_dss_dialog {parameters} {
+    gf180mcu::mos_dialog pfet_06v0_dss $parameters
+}
 #----------------------------------------------------------------
 # getbox:  Get the current cursor box, in microns
 #----------------------------------------------------------------
@@ -4175,6 +4241,87 @@
     set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
     return [gf180mcu::mos_draw $drawdict]
 }
+#-------------------
+# nMOS dss 3.0V
+#-------------------
+proc gf180mcu::nfet_03v3_dss_draw {parameters} {
+    set newdict [dict create \
+	    gate_type		nfet \
+	    diff_type 		ndiffres \
+	    diff_contact_type	ndc \
+	    plus_diff_type	psd \
+	    plus_contact_type	psc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		pwell \
+	    sub_surround	0.12 \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+proc gf180mcu::pfet_03v3_dss_draw {parameters} {
+    set newdict [dict create \
+	    gate_type		pfet \
+	    diff_type 		pdiffres \
+	    diff_contact_type	pdc \
+	    plus_diff_type	nsd \
+	    plus_contact_type	nsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    dev_surround	0.43 \
+	    sub_type		nwell \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#-------------------
+# pMOS 6.0V
+#-------------------
+
+proc gf180mcu::pfet_06v0_dss_draw {parameters} {
+    set newdict [dict create \
+	    diff_poly_space	0.30 \
+	    diff_gate_space	0.30 \
+	    diff_spacing	0.36 \
+	    gate_type		mvpfet \
+	    diff_type 		mvpdiffres \
+	    diff_contact_type	mvpdc \
+	    plus_diff_type	mvnsd \
+	    plus_contact_type	mvnsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_surround	0.16 \
+	    dev_surround	0.43 \
+	    sub_type		nwell \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
+
+#-------------------
+# nMOS 6.0V dss
+#-------------------
+
+proc gf180mcu::nfet_06v0_dss_draw {parameters} {
+    set newdict [dict create \
+	    diff_poly_space	0.30 \
+	    diff_gate_space	0.30 \
+	    diff_spacing	0.36 \
+	    gate_type		mvnfet \
+	    diff_type 		mvndiffres \
+	    diff_contact_type	mvndc \
+	    plus_diff_type	mvpsd \
+	    plus_contact_type	mvpsc \
+	    poly_type		poly \
+	    poly_contact_type	pc \
+	    sub_type		pwell \
+	    sub_surround	0.16 \
+    ]
+    set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+    return [gf180mcu::mos_draw $drawdict]
+}
 #-----------------------
 # 10V LDNMOS
 #-----------------------
@@ -4416,6 +4563,22 @@
    return [gf180mcu::mos_check $parameters]
 }
 
+proc gf180mcu::nfet_03v3_dss_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::nfet_06v0_dss_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::pfet_03v3_dss_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::pfet_06v0_dss_check {parameters} {
+   return [gf180mcu::mos_check $parameters]
+}
+
 #----------------------------------------------------------------
 # Bipolar: Specify all user-editable default values
 #
