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 #