added new unsalicided drain devices
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 #