Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Develop 27 09 #404

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
193 changes: 178 additions & 15 deletions gf180mcu/magic/gf180mcu.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ namespace eval gf180mcu {
dict set ruleset diffres_spacing 0.40 ;# Diffusion resistor spacing rule
dict set ruleset polyres_spacing 0.40 ;# Poly resistor spacing rule
dict set ruleset diff_poly_space 0.10 ;# Diffusion to poly spacing rule
dict set ruleset diff_gate_space 0.10 ;# Diffusion to gate poly spacing rule
dict set ruleset diff_gate_space 0.11 ;# Diffusion to gate poly spacing rule
dict set ruleset metal_spacing 0.23 ;# Metal1 spacing rule
dict set ruleset mmetal_spacing 0.23 ;# Metal spacing rule (above metal1)
dict set ruleset mmetal_spacing 0.38 ;# Metal spacing rule (above metal1)
dict set ruleset sblk_to_cont 0.33 ;# resistor to contact center
dict set ruleset sblk_diff_space 0.44 ;# resistor to guard ring
}
Expand All @@ -99,13 +99,18 @@ proc gf180mcu::addtechmenu {framename} {
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
Expand Down Expand Up @@ -2775,10 +2780,10 @@ proc gf180mcu::nwell_draw {parameters} {
plus_contact_type psc \
sub_type pwell \
end_surround $diff_surround \
end_spacing 1.2 \
end_spacing 1.4 \
overlap_compress -0.84 \
res_to_endcont 0.22 \
res_spacing 1.2 \
res_to_endcont 0.38 \
res_spacing 1.4 \
res_diff_spacing 0.28 \
well_res_overlap 0.24 \
]
Expand Down Expand Up @@ -2948,8 +2953,8 @@ proc gf180mcu::rm5_draw {parameters} {
res_type rm5 \
end_type m5 \
end_surround 0.0 \
end_spacing 0.0 \
res_to_endcont 0.2 \
end_spacing 0.0\
res_to_endcont 0.265 \
res_spacing $mmetal_spacing \
]
set drawdict [dict merge $gf180mcu::ruleset $newdict $parameters]
Expand Down Expand Up @@ -3232,6 +3237,21 @@ proc gf180mcu::pfet_06v0_defaults {} {
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
Expand Down Expand Up @@ -3262,19 +3282,35 @@ proc gf180mcu::nfet_06v0_nvt_defaults {} {
}

proc gf180mcu::nfet_10v0_asym_defaults {} {
return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
return {w 4 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 1.0 wmin 1.0 \
topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.6 wmin 4 \
full_metal 1 }
}

proc gf180mcu::pfet_10v0_asym_defaults {} {
return {w 1.0 l 1.0 m 1 nf 1 diffcov 100 polycov 100 \
return {w 4.0 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 1.0 wmin 1.0 \
topc 1 botc 1 poverlap 0 doverlap 1 lmin 0.6 wmin 4.0 \
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
Expand Down Expand Up @@ -3363,6 +3399,21 @@ proc gf180mcu::pfet_10v0_asym_convert {parameters} {
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
Expand Down Expand Up @@ -3447,6 +3498,21 @@ proc gf180mcu::pfet_10v0_asym_dialog {parameters} {
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
#----------------------------------------------------------------
Expand Down Expand Up @@ -4175,6 +4241,87 @@ proc gf180mcu::nfet_06v0_nvt_draw {parameters} {
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
#-----------------------
Expand Down Expand Up @@ -4416,6 +4563,22 @@ proc gf180mcu::pfet_10v0_asym_check {parameters} {
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
#
Expand Down
96 changes: 48 additions & 48 deletions gf180mcu/magic/gf180mcu.tech
Original file line number Diff line number Diff line change
Expand Up @@ -4787,60 +4787,60 @@ variants *
# All devices except diodes are modeled as subcircuits

# device list:
# nfet_03v3 mosfet
# pfet_03v3 mosfet
# nfet_06v0 mosfet (thick oxide)
# pfet_06v0 mosfet (thick oxide)
# nfet_06v0_nvt mosfet (native Vt)
# nfet_03v3_dss mosfet (unsalicided drain)
# pfet_03v3_dss mosfet (unsalicided drain)
# nfet_06v0_dss mosfet (unsalicided drain, thick oxide)
# pfet_06v0_dss mosfet (unsalicided drain, thick oxide)
# nfet_10v0_asym LDNMOS (extended drain)
# pfet_10v0_asym LDPMOS (extended drain)
## nfet_03v3 mosfet
## pfet_03v3 mosfet
## nfet_06v0 mosfet (thick oxide)
## pfet_06v0 mosfet (thick oxide)
## nfet_06v0_nvt mosfet (native Vt)
## nfet_03v3_dss mosfet (unsalicided drain)
## pfet_03v3_dss mosfet (unsalicided drain)
## nfet_06v0_dss mosfet (unsalicided drain, thick oxide)
## pfet_06v0_dss mosfet (unsalicided drain, thick oxide)
## nfet_10v0_asym LDNMOS (extended drain)
## pfet_10v0_asym LDPMOS (extended drain)
#
# diode_nd2ps_03v3 diode (N+/pwell)
# diode_pd2nw_03v3 diode (P+/nwell)
# diode_nd2ps_06v0 diode (N+/pwell, high voltage)
# diode_pd2nw_06v0 diode (P+/nwell, high voltage)
# diode_nw2pw_03v3 diode (nwell/pwell)
# diode_nw2pw_06v0 diode (nwell/pwell, high voltage)
# diode_dnw2pw diode (pwell/dnwell)
# diode_dnw2ps diode (dnwll/substrate)
# sc_diode diode (Schottky)
## diode_nd2ps_03v3 diode (N+/pwell)
## diode_pd2nw_03v3 diode (P+/nwell)
## diode_nd2ps_06v0 diode (N+/pwell, high voltage)
## diode_pd2nw_06v0 diode (P+/nwell, high voltage)
## diode_nw2pw_03v3 diode (nwell/pwell)
## diode_nw2pw_06v0 diode (nwell/pwell, high voltage)
## diode_dnw2pw diode (pwell/dnwell)
## diode_dnw2ps diode (dnwll/substrate)
## sc_diode diode (Schottky)
#
# pnp_WxL BJT (10x10, 5x5, 0.42x10, 0.42x5 emitter sizes)
# npn_WxL BJT (10x10, 5x5, 0.54x16, 0.54x8, 0.54x4, 0.54x2)
#
# npolyf_u resistor (N+ poly, unsalicided)
# ppolyf_u resistor (P+ poly, unsalicided)
# ppolyf_u_1k resistor (high res resistor)*
# ppolyf_u_1k_6p0 resistor (high res resistor, high voltage)*
# nplus_u resistor (N+ diffusion, unsalicided)
# pplus_u resistor (P+ diffusion, unsalicided)
# npolyf_s resistor (N+ poly, salicided)
# ppolyf_s resistor (P+ poly, salicided)
# nplus_s resistor (N+ diffusion, salicided)
# pplus_s resistor (N+ diffusion, salicided)
# nwell resistor (N-well resistor)
# rm1 resistor (metal1)
# rm2 resistor (metal2)
# rm3 resistor (metal3)
# rm4 resistor (metal4)
# rm5 resistor (metal5)
# tm6k resistor (top metal, 0.6um thick (standard))**
# tm9k resistor (top metal, 0.9um thick)
# tm11k resistor (top metal, 1.1um thick)
# tm30k resistor (top metal, 3.0um thick)
## npolyf_u resistor (N+ poly, unsalicided)
## ppolyf_u resistor (P+ poly, unsalicided)
## ppolyf_u_1k resistor (high res resistor)*
## ppolyf_u_1k_6p0 resistor (high res resistor, high voltage)*
## nplus_u resistor (N+ diffusion, unsalicided)
## pplus_u resistor (P+ diffusion, unsalicided)
## npolyf_s resistor (N+ poly, salicided)
## ppolyf_s resistor (P+ poly, salicided)
## nplus_s resistor (N+ diffusion, salicided)
## pplus_s resistor (N+ diffusion, salicided)
## nwell resistor (N-well resistor)
## rm1 resistor (metal1)
## rm2 resistor (metal2)
## rm3 resistor (metal3)
## rm4 resistor (metal4)
## rm5 resistor (metal5)
## tm6k resistor (top metal, 0.6um thick (standard))**
## tm9k resistor (top metal, 0.9um thick)
## tm11k resistor (top metal, 1.1um thick)
## tm30k resistor (top metal, 3.0um thick)
#
# cap_nmos_03v3 mosfet (source-drain tied)
# cap_pmos_03v3 mosfet (source-drain tied)
# cap_nmos_06v0 mosfet (source-drain tied, high voltage)
# cap_pmos_06v0 mosfet (source-drain tied, high voltage)
# cap_nmos_03v3_b mosfet (n-varactor)
# cap_pmos_03v3_b mosfet (p-varactor)
# cap_nmos_06v0_b mosfet (n-varactor, high voltage)
# cap_pmos_06v0_b mosfet (p-varactor, high voltage)
## cap_nmos_03v3 mosfet (source-drain tied)
## cap_pmos_03v3 mosfet (source-drain tied)
## cap_nmos_06v0 mosfet (source-drain tied, high voltage)
## cap_pmos_06v0 mosfet (source-drain tied, high voltage)
## cap_nmos_03v3_b mosfet (n-varactor)
## cap_pmos_03v3_b mosfet (p-varactor)
## cap_nmos_06v0_b mosfet (n-varactor, high voltage)
## cap_pmos_06v0_b mosfet (p-varactor, high voltage)
#
# cap_mim_2f0fF capacitor (MiM)*,**
#
Expand Down
Loading
Loading