added LDNMOSand LDPMOS devices and resloved DRC errors for diodes
diff --git a/gf180mcu/magic/gf180mcu.tcl b/gf180mcu/magic/gf180mcu.tcl
index b7bb5d6..4632459 100644
--- a/gf180mcu/magic/gf180mcu.tcl
+++ b/gf180mcu/magic/gf180mcu.tcl
@@ -103,6 +103,11 @@
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 "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 "npn_10p00x10p00 (3.3V) - 10.0um x 10.0um " "magic::gencell gf180mcu::npn_10p00x10p00" pdk1
magic::add_toolkit_command $layoutframe "npn_05p00x05p00 (3.3V) - 5.0um x 5.0um " "magic::gencell gf180mcu::npn_05p00x05p00" pdk1
magic::add_toolkit_command $layoutframe "npn_10p00x10p00 (3.3V) - 10.0um x 10.0um " "magic::gencell gf180mcu::npn_00p54x04p00" pdk1
@@ -692,6 +697,7 @@
nx 1 ny 1 dummy 0 lmin 0.45 wmin 0.45 \
elc 1 erc 1 etc 1 ebc 1 \
glc 1 grc 1 gtc 0 gbc 0 doverlap 0 \
+ full_metal 1 \
compatible {diode_pd2nw_03v3 diode_pd2nw_06v0}}
}
@@ -935,9 +941,9 @@
dev_contact_type ndic \
end_type psd \
end_contact_type psc \
- end_contact_size 0.16 \
+ end_contact_size 0.25 \
end_sub_type pwell \
- dev_spacing 0.25 \
+ dev_spacing 0.30 \
dev_surround ${diff_surround} \
end_spacing ${diff_spacing} \
end_surround ${diff_surround} \
@@ -961,12 +967,12 @@
dev_contact_type pdic \
end_type nsd \
end_contact_type nsc \
- end_contact_size 0.16 \
+ end_contact_size 0.25 \
end_sub_type nwell \
plus_diff_type psd \
plus_contact_type psc \
sub_type pwell \
- dev_spacing 0.25 \
+ dev_spacing 0.30 \
dev_surround ${diff_surround} \
end_spacing ${diff_spacing} \
end_surround ${diff_surround} \
@@ -993,9 +999,9 @@
end_type mvpsd \
end_contact_type mvpsc \
end_sub_type pwell \
- dev_spacing 0.25 \
+ dev_spacing 0.40 \
dev_surround ${diff_surround} \
- end_spacing 0.36 \
+ end_spacing 0.17 \
end_surround ${diff_surround} \
]
set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
@@ -1021,10 +1027,11 @@
end_type mvnsd \
end_contact_type mvnsc \
end_sub_type nwell \
+ sub_surround 0.16 \
plus_diff_type mvpsd \
plus_contact_type mvpsc \
sub_type pwell \
- dev_spacing ${diff_spacing} \
+ dev_spacing 0.36 \
dev_surround ${diff_surround} \
end_spacing ${diff_spacing} \
end_surround ${diff_surround} \
@@ -3254,6 +3261,20 @@
compatible {nfet_03v3 nfet_06v0 nfet_06v0_nvt}}
}
+proc gf180mcu::nfet_10v0_asym_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 1.0 wmin 1.0 \
+ full_metal 1 }
+}
+
+proc gf180mcu::pfet_10v0_asym_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 1.0 wmin 1.0 \
+ full_metal 1 }
+}
+
#----------------------------------------------------------------
# mosvc: Specify all user-editable default values and those
# needed by nmoscap_3p3_check
@@ -3334,6 +3355,15 @@
return [gf180mcu::mos_convert $parameters]
}
+proc gf180mcu::nfet_10v0_asym_convert {parameters} {
+ return [gf180mcu::mos_convert $parameters]
+}
+
+proc gf180mcu::pfet_10v0_asym_convert {parameters} {
+ return [gf180mcu::mos_convert $parameters]
+}
+
+
#----------------------------------------------------------------
# mos: Interactively specifies the fixed layout parameters
#----------------------------------------------------------------
@@ -3409,6 +3439,14 @@
gf180mcu::mos_dialog nmoscap_6p0 $parameters
}
+proc gf180mcu::nfet_10v0_asym_dialog {parameters} {
+ gf180mcu::mos_dialog nfet_10v0_asym $parameters
+}
+
+proc gf180mcu::pfet_10v0_asym_dialog {parameters} {
+ gf180mcu::mos_dialog pfet_10v0_asym $parameters
+}
+
#----------------------------------------------------------------
# getbox: Get the current cursor box, in microns
#----------------------------------------------------------------
@@ -4137,6 +4175,55 @@
set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
return [gf180mcu::mos_draw $drawdict]
}
+#-----------------------
+# 10V LDNMOS
+#-----------------------
+
+proc gf180mcu::nfet_10v0_asym_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 mvndiff \
+ diff_contact_type mvndc \
+ drain_diff_type ldndiff \
+ drain_diff_contact_type ldndiffc \
+ 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 LDPMOS
+#-----------------------
+
+proc gf180mcu::pfet_10v0_asym_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 mvpdiff \
+ diff_contact_type mvpdc \
+ drain_diff_type ldpdiff \
+ drain_diff_contact_type ldpdiffc \
+ plus_diff_type mvnsd \
+ plus_contact_type mvnsc \
+ poly_type poly \
+ poly_contact_type pc \
+ sub_type nwell \
+ sub_surround 0.16 \
+ ]
+ set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
+ return [gf180mcu::mos_draw $drawdict]
+}
#------------------------
# MOS varactor (3.3V)
@@ -4321,6 +4408,14 @@
return [gf180mcu::mos_check $parameters]
}
+proc gf180mcu::nfet_10v0_asym_check {parameters} {
+ return [gf180mcu::mos_check $parameters]
+}
+
+proc gf180mcu::pfet_10v0_asym_check {parameters} {
+ return [gf180mcu::mos_check $parameters]
+}
+
#----------------------------------------------------------------
# Bipolar: Specify all user-editable default values
#