RF CMOS SPST Switch

Generated from RF_CMOS.wxm with rfMaxima 0.2.5 on Maxima 5.46.0. All results were computed by executing the notebook; none is transcribed.

/* Put rfMaxima.mac in the same directory as this notebook, or add its
   directory to file_search_maxima. */
load("rfMaxima.mac")$

https://qucs.sourceforge.net/docs/report/EKV26.pdf
https://ngspice.sourceforge.io/external-documents/models/ekv_v262.pdf
(parameter set formerly published by EPFL at legwww.epfl.ch/ekv/paramset.html; no longer online)

EKV v2.6 Parameters for 0.5 um CMOS (EPFL-LEG, 1999)

ELDO (LEVEL = 44) / PSPICE (LEVEL = 5) example parameter set for the EKV v2.6 model is provided for NMOS and PMOS.

IMPORTANT NOTES: ---------------- Parameters do not correspond to a particular technology but have reasonable values for standard 0.5um CMOS. Not intended for use in real design.

Includes all intrinsic model parameters. An example set for extrinsic model parameters is provided.

Geometry range: W >= 0.8um, L >= 0.5um
Voltage range: |Vgb| < 3.3V, |Vdb| < 3.3V, |Vsb| < 2V

For use with either simulator, comment/uncomment respective lines. Use of extrinsic model parameters and models (series resistance, junction currents/capacitances) is in general simulator-dependent.

Description [Unit], SPICE Symbol Channel length [m], L Channel width [m], W Parallel multiple device number [], NP Series multiple device number [], NS Gate oxide capacitance per unit area [F/m^2], COX Junction length [m], XJ Channel width correction [m], DW Channel length correction [m], DL Long-channel threshold voltage [V], VTO Body effect parameter [sqrt(V)], GAMMA Bulk Fermi potential [V], PHI Transconductance parameter [A/V^2], KP Mobility reduction coefficient [1/V], THETA Threshold voltage temperature coefficient [V/K], TCV Heavily doped diffusion length [m], HDIF Drain-source diffusion sheet resistance [Ohm/sq.], RSH Source contact resistance [Ohm], RSC Drain contact resistance [Ohm], RDC Gate to source overlay capacitance[F/m], CGSO Gate to drain overlay capacitance [F/m], CGDO Gate to bulk overlay capacitance [F/m], CGBO Diode emission coefficient [], N Leakage current [A], IS Reverse breakdown voltage [V], BV Current at Bv [A], IBV Junction potenVial [V], VJ Zero bias depletion capacitance [F], CJ Grading coefficient [], M Relative area [], AREA Forward-bias depletion capcitance coefficient [], FC Transit time [s], TT Saturation current temperature exponent [], XTI Flicker noise coefficient [], KF Flicker noise exponent [], AF Parameter measurement temperature [deg. Celsius], TNOM Device temperature [deg. C], TEMP

NMOS

Process Related Model Parameters

COX:3.45E-3$
XJ:0.15E-6$

Intrinsic Model Parameters

VTO:0.6$
GAMMA:0.71$
PHI:0.97$
KP:150E-6$
E0:88.0E6$
UCRIT:4.5E6$
DL:-0.05E-6$
DW:-0.02E-6$
LAMBDA:0.23$
LETA:0.28$
WETA:0.05$
Q0:280E-6$
LK:0.5E-6$

Substrate Current Parameters

IBN:1.0$
IBA:200E6$
IBB:350E6$

Intrinsic Model Temperature Parameters

TNOM:25.0$
TCV:1.5E-3$
BEX:-1.5$
UCEX:1.7$
IBBT:0.0$

1/f Noise Model Parameters

KF:1E-27$
AF:1$

Series Resistance and Area Calulation Parameters

HDIF:0.9E-6$
RSH:510$

Junction Current Parameters

JS:8.0E-6$
JSW:1.5E-10$
XTI:0$
N:1.5$

Junction Capacitances Parameters

CJ:8.0E-4$
CJSW:3.0E-10$
MJ:0.5$
MJSW:0.3$
PB:0.9$
PBSW:0.5$
FC:0.5$

Gate Overlap Capacitances

CGSO:1.5E-10$
CGDO:1.5E-10$
CGBO:4.0E-10$

PMOS

Process Related Model Parameters

COX:3.45E-3$
XJ:0.15E-6$

*** Intrinsic Model Parameters

VTO:-0.55$
GAMMA:0.69$
PHI:0.87$
KP:35.0E-6$
E0:51.0E6$
UCRIT:18.0E6$
DL:-0.05E-6$
DW:-0.03E-6$
LAMBDA:1.1$
LETA:0.45$
WETA:0.0$
Q0:200E-6$
LK:0.6E-6$

Substrate Current Parameters

IBN:1.0$
IBA:0.0$
IBB:300E6$

Intrinsic Model Temperature Parameters

TNOM:25.0$
TCV:-1.4E-3$
BEX:-1.4$
UCEX:2.0$
IBBT:0.0$

1/f Noise Model Parameters

KF:1.0E-28$
AF:1$

Series Resistance and Area Calulation Parameters

HDIF:0.9E-6$
RSH:990$

Junction Current Parameters

JS:4.0E-5$
JSW:7.0E-10$
XTI:0$
N:1.8$

Junction Capacitances Parameters

CJ:8.0E-4$
CJSW:4.0E-10$
MJ:0.5$
MJSW:0.35$
PB:0.9$
PBSW:0.8$
FC:0.5$

Gate Overlap Capacitances

CGSO:1.5E-10$
CGDO:1.5E-10$
CGBO:4.0E-10$

Device Under Analysis (NMOS)

IMPORTANT: the NMOS and PMOS blocks above use the SAME symbol names, so the PMOS cell overwrites every NMOS value. rfMaxima 0.2.4 then evaluated the "NMOS" switch below with PMOS parameters (VTO = -0.55 V, KP = 35 uA/V^2, RSH = 990 Ohm/sq). Re-assert the NMOS set here, explicitly, immediately before the device analysis.

COX:3.45E-3$ XJ:0.15E-6$
VTO:0.6$ GAMMA:0.71$ PHI:0.97$ KP:150E-6$
E0:88.0E6$ UCRIT:4.5E6$ DL:-0.05E-6$ DW:-0.02E-6$
LAMBDA:0.23$ LETA:0.28$ WETA:0.05$ Q0:280E-6$ LK:0.5E-6$
HDIF:0.9E-6$ RSH:510$
CJ:8.0E-4$ CJSW:3.0E-10$ MJ:0.5$ MJSW:0.3$ PB:0.9$ PBSW:0.5$ FC:0.5$
CGSO:1.5E-10$ CGDO:1.5E-10$ CGBO:4.0E-10$
KF:1E-27$ AF:1$

Small Signal RF Model

%epsilon_Si:104.5e-12$
%epsilon_ox:34.5e-12$
q:1.602e-19$
k:1.3807e-23$
TOX:34.5e-12/COX;
UO:KP/(COX)*10000;
LD:CGDO/COX;
9.999999999999999×1099.999999999999999 \times 10^{-9}434.7826086956522434.78260869565224.347826086956522×1084.347826086956522 \times 10^{-8}
/* The EKV set above is documented as valid for W >= 0.8 um and L >= 0.5 um
   ("reasonable values for standard 0.5um CMOS ... Not intended for use in
   real design").  0.2.4 evaluated it at L = 0.13 um, four times outside that
   range.  For a 130 nm switch, load a 130 nm parameter set instead. */
L:0.5e-6$
W:10e-6$

Assuming strong inversion, linear region

ON State (VGS>VTO, VDS=0V)

COX gives rise to three capacitances:
- an overlap capacitance between gate and source: CGSO*W
- a gate to channel capacitance, equally divided between source and drain: COX*W*L/2
- an overlap capacitance between gate and drain: CGDO*W

VGS:3;
CGS:COX*W*L/2+CGSO*W;
CGD:COX*W*L/2+CGDO*W;
CSB:CJ*W*HDIF+CJSW*2*(W+HDIF);
CDB:CJ*W*HDIF+CJSW*2*(W+HDIF);
RDS:1/(KP*W/L*(VGS-VTO));
ZDS:(1/RDS+(1/(s*CGS)+1/(s*CGD))^(-1))^(-1);
S_SIMPLE:ABCD2S(ABCD_SeriesImpedance(ZDS));
S:ABCD2S(ABCD_ShuntAdmittance(s*CSB).ABCD_SeriesImpedance(ZDS).ABCD_ShuntAdmittance(s*CDB));
331.0125×10141.0125 \times 10^{-14}1.0125×10141.0125 \times 10^{-14}1.374×10141.374 \times 10^{-14}1.374×10141.374 \times 10^{-14}138.8888888888889138.888888888888915.062500000000001×1015s+0.0072{{1}\over{5.062500000000001 \times 10^{-15}\,s+0.0072}}(1234567901234568751250Z0s+1777777777777779Z0+1234567901234568751250Z0s+1777777777777779Z01250Z0s+1777777777777779Z0+1234567901234568751250Z0s+1777777777777779Z01250Z0s+1777777777777779Z0+1234567901234568751234567901234568751250Z0s+1777777777777779Z0+123456790123456875)\begin{pmatrix} {{123456790123456875}\over{1250\,Z_{0}\,s+1777777777777779\,Z_{0}+123456790123456875}}&{{1250\,Z_{0}\,s+1777777777777779\,Z_{0}}\over{1250\,Z_{0}\,s+1777777777777779\,Z_{0}+123456790123456875}}\\ {{1250\,Z_{0}\,s+1777777777777779\,Z_{0}}\over{1250\,Z_{0}\,s+1777777777777779\,Z_{0}+123456790123456875}}&{{123456790123456875}\over{1250\,Z_{0}\,s+1777777777777779\,Z_{0}+123456790123456875}} \end{pmatrix}(93638447534572142294656358080000Z02s2+56500886004518676297242686136785471079668368Z02s28556569426511503897311327494210939141039850232150384138500093638447534572142294656358080000Z02s2+(56500886004518676297242686136785471079668368Z02+10738697932839641519327507511485585649487315625Z0)s+4112145997417656561212831159166375236309738433429655315944Z0+2855656942651150389731132749421093914103985023215038413850002891352654434287781797821985216007602027670000Z0s+4112145997417656561212831159166375236309738433429655315944Z093638447534572142294656358080000Z02s2+(56500886004518676297242686136785471079668368Z02+10738697932839641519327507511485585649487315625Z0)s+4112145997417656561212831159166375236309738433429655315944Z0+2855656942651150389731132749421093914103985023215038413850002891352654434287781797821985216007602027670000Z0s+4112145997417656561212831159166375236309738433429655315944Z093638447534572142294656358080000Z02s2+(56500886004518676297242686136785471079668368Z02+10738697932839641519327507511485585649487315625Z0)s+4112145997417656561212831159166375236309738433429655315944Z0+28556569426511503897311327494210939141039850232150384138500093638447534572142294656358080000Z02s2+56500886004518676297242686136785471079668368Z02s28556569426511503897311327494210939141039850232150384138500093638447534572142294656358080000Z02s2+(56500886004518676297242686136785471079668368Z02+10738697932839641519327507511485585649487315625Z0)s+4112145997417656561212831159166375236309738433429655315944Z0+285565694265115038973113274942109391410398502321503841385000)\begin{pmatrix} -{{93638447534572142294656358080000\,Z_{0}^2\,s^2+56500886004518676297242686136785471079668368\,Z_{0}^2\,s-285565694265115038973113274942109391410398502321503841385000}\over{93638447534572142294656358080000\,Z_{0}^2\,s^2+\left(56500886004518676297242686136785471079668368\,Z_{0}^2+10738697932839641519327507511485585649487315625\,Z_{0}\right)\,s+4112145997417656561212831159166375236309738433429655315944\,Z_{0}+285565694265115038973113274942109391410398502321503841385000}}&{{2891352654434287781797821985216007602027670000\,Z_{0}\,s+4112145997417656561212831159166375236309738433429655315944\,Z_{0}}\over{93638447534572142294656358080000\,Z_{0}^2\,s^2+\left(56500886004518676297242686136785471079668368\,Z_{0}^2+10738697932839641519327507511485585649487315625\,Z_{0}\right)\,s+4112145997417656561212831159166375236309738433429655315944\,Z_{0}+285565694265115038973113274942109391410398502321503841385000}}\\ {{2891352654434287781797821985216007602027670000\,Z_{0}\,s+4112145997417656561212831159166375236309738433429655315944\,Z_{0}}\over{93638447534572142294656358080000\,Z_{0}^2\,s^2+\left(56500886004518676297242686136785471079668368\,Z_{0}^2+10738697932839641519327507511485585649487315625\,Z_{0}\right)\,s+4112145997417656561212831159166375236309738433429655315944\,Z_{0}+285565694265115038973113274942109391410398502321503841385000}}&-{{93638447534572142294656358080000\,Z_{0}^2\,s^2+56500886004518676297242686136785471079668368\,Z_{0}^2\,s-285565694265115038973113274942109391410398502321503841385000}\over{93638447534572142294656358080000\,Z_{0}^2\,s^2+\left(56500886004518676297242686136785471079668368\,Z_{0}^2+10738697932839641519327507511485585649487315625\,Z_{0}\right)\,s+4112145997417656561212831159166375236309738433429655315944\,Z_{0}+285565694265115038973113274942109391410398502321503841385000}} \end{pmatrix}
define(S11(s),block([Z_0],Z_0:50,ev(S[1,1])))$
S11(s);
PlotSmithChart([
    parametric,
    realpart(S11(%i*%omega)),
    imagpart(S11(%i*%omega)),
    [%omega,2*%pi*1e6,2*%pi*100e9],
    [nticks,1000]]);
234096118836430355736640895200000000s2+141252215011296690743106715341963677699170920000s285565694265115038973113274942109391410398502321503841385000234096118836430355736640895200000000s2+678187111653278766709482090916242960173536701250s+491172994135997867033754832900428153225885423992986607182200-{{234096118836430355736640895200000000\,s^2+141252215011296690743106715341963677699170920000\,s-285565694265115038973113274942109391410398502321503841385000}\over{234096118836430355736640895200000000\,s^2+678187111653278766709482090916242960173536701250\,s+491172994135997867033754832900428153225885423992986607182200}}
Plot generated by RF_CMOS.wxm
define(S12(s),block([Z_0],Z_0:50,ev(S[1,2])))$
S12(s);
/* S12 is a TRANSMISSION coefficient; a Smith chart maps REFLECTION
   coefficient.  Plot its magnitude against frequency instead. */
wxplot2d(20*log10(cabs(S12(%i*2*%pi*f*1e9))),
    [f,0.001,100],
    [logx],
    [legend,false],
    [xlabel,"Frequency [GHz]"],
    [ylabel,"dB20(|S12|) [dB]"],
    [style,[lines,3,2]],
    [gnuplot_preamble,"set grid"]);
144567632721714389089891099260800380101383500000s+205607299870882828060641557958318761815486921671482765797200234096118836430355736640895200000000s2+678187111653278766709482090916242960173536701250s+491172994135997867033754832900428153225885423992986607182200{{144567632721714389089891099260800380101383500000\,s+205607299870882828060641557958318761815486921671482765797200}\over{234096118836430355736640895200000000\,s^2+678187111653278766709482090916242960173536701250\,s+491172994135997867033754832900428153225885423992986607182200}}
Plot generated by RF_CMOS.wxm
define(S21(s),block([Z_0],Z_0:50,ev(S[2,1])))$
S21(s);
/* S21 is a TRANSMISSION coefficient; a Smith chart maps REFLECTION
   coefficient.  Plot its magnitude against frequency instead. */
wxplot2d(20*log10(cabs(S21(%i*2*%pi*f*1e9))),
    [f,0.001,100],
    [logx],
    [legend,false],
    [xlabel,"Frequency [GHz]"],
    [ylabel,"dB20(|S21|) [dB]"],
    [style,[lines,3,2]],
    [gnuplot_preamble,"set grid"]);
144567632721714389089891099260800380101383500000s+205607299870882828060641557958318761815486921671482765797200234096118836430355736640895200000000s2+678187111653278766709482090916242960173536701250s+491172994135997867033754832900428153225885423992986607182200{{144567632721714389089891099260800380101383500000\,s+205607299870882828060641557958318761815486921671482765797200}\over{234096118836430355736640895200000000\,s^2+678187111653278766709482090916242960173536701250\,s+491172994135997867033754832900428153225885423992986607182200}}
Plot generated by RF_CMOS.wxm
define(S22(s),block([Z_0],Z_0:50,ev(S[2,2])))$
S22(s);
PlotSmithChart([
    parametric,
    realpart(S22(%i*%omega)),
    imagpart(S22(%i*%omega)),
    [%omega,2*%pi*1e6,2*%pi*100e9],
    [nticks,1000]]);
234096118836430355736640895200000000s2+141252215011296690743106715341963677699170920000s285565694265115038973113274942109391410398502321503841385000234096118836430355736640895200000000s2+678187111653278766709482090916242960173536701250s+491172994135997867033754832900428153225885423992986607182200-{{234096118836430355736640895200000000\,s^2+141252215011296690743106715341963677699170920000\,s-285565694265115038973113274942109391410398502321503841385000}\over{234096118836430355736640895200000000\,s^2+678187111653278766709482090916242960173536701250\,s+491172994135997867033754832900428153225885423992986607182200}}
Plot generated by RF_CMOS.wxm

OFF State (VGS=0V, VDS=0V)

VGS:0;
CGS:COX*W*L/2+CGSO*W;
CGD:COX*W*L/2+CGDO*W;
CSB:CJ*W*HDIF+CJSW*2*(W+HDIF);
CDB:CJ*W*HDIF+CJSW*2*(W+HDIF);
/* 0.2.4 had RDS:RSH*W/L here.  RSH counts SQUARES, so the number of squares
   is L/W, not W/L -- and in any case an OFF channel is not an RSH-defined
   resistor: the isolation is set by C_off (below) with subthreshold leakage
   on top.  The line was also never used: ZDS below is purely capacitive. */
ZDS:1/(s*CGS)+1/(s*CGD);
S_SIMPLE:ABCD2S(ABCD_SeriesImpedance(ZDS));
S:ABCD2S(ABCD_ShuntAdmittance(s*CSB).ABCD_SeriesImpedance(ZDS).ABCD_ShuntAdmittance(s*CDB));
001.0125×10141.0125 \times 10^{-14}1.0125×10141.0125 \times 10^{-14}1.374×10141.374 \times 10^{-14}1.374×10141.374 \times 10^{-14}1.975308641975309×10+14s{{1.975308641975309 \times 10^{+14}}\over{s}}(1975308641975312Z0s+1975308641975312Z0s2Z0s+1975308641975312Z0s2Z0s+1975308641975311975308641975312Z0s+197530864197531)\begin{pmatrix} {{197530864197531}\over{2\,Z_{0}\,s+197530864197531}}&{{2\,Z_{0}\,s}\over{2\,Z_{0}\,s+197530864197531}}\\ {{2\,Z_{0}\,s}\over{2\,Z_{0}\,s+197530864197531}}&{{197530864197531}\over{2\,Z_{0}\,s+197530864197531}} \end{pmatrix}(600Z02s21829797706714534591319256699575600Z02s2+68809542761000026Z0s+182979770671453459131925669957518526701780484650Z0s600Z02s2+68809542761000026Z0s+182979770671453459131925669957518526701780484650Z0s600Z02s2+68809542761000026Z0s+1829797706714534591319256699575600Z02s21829797706714534591319256699575600Z02s2+68809542761000026Z0s+1829797706714534591319256699575)\begin{pmatrix} -{{600\,Z_{0}^2\,s^2-1829797706714534591319256699575}\over{600\,Z_{0}^2\,s^2+68809542761000026\,Z_{0}\,s+1829797706714534591319256699575}}&{{18526701780484650\,Z_{0}\,s}\over{600\,Z_{0}^2\,s^2+68809542761000026\,Z_{0}\,s+1829797706714534591319256699575}}\\ {{18526701780484650\,Z_{0}\,s}\over{600\,Z_{0}^2\,s^2+68809542761000026\,Z_{0}\,s+1829797706714534591319256699575}}&-{{600\,Z_{0}^2\,s^2-1829797706714534591319256699575}\over{600\,Z_{0}^2\,s^2+68809542761000026\,Z_{0}\,s+1829797706714534591319256699575}} \end{pmatrix}
define(S11(s),block([Z_0],Z_0:50,ev(S[1,1])))$
S11(s);
PlotSmithChart([
    parametric,
    realpart(S11(%i*%omega)),
    imagpart(S11(%i*%omega)),
    [%omega,2*%pi*1e6,2*%pi*100e9],
    [nticks,1000]]);
1500000s218297977067145345913192566995751500000s2+3440477138050001300s+1829797706714534591319256699575-{{1500000\,s^2-1829797706714534591319256699575}\over{1500000\,s^2+3440477138050001300\,s+1829797706714534591319256699575}}
Plot generated by RF_CMOS.wxm
define(S12(s),block([Z_0],Z_0:50,ev(S[1,2])))$
S12(s);
/* S12 is a TRANSMISSION coefficient; a Smith chart maps REFLECTION
   coefficient.  Plot its magnitude against frequency instead. */
wxplot2d(20*log10(cabs(S12(%i*2*%pi*f*1e9))),
    [f,0.001,100],
    [logx],
    [legend,false],
    [xlabel,"Frequency [GHz]"],
    [ylabel,"dB20(|S12|) [dB]"],
    [style,[lines,3,2]],
    [gnuplot_preamble,"set grid"]);
926335089024232500s1500000s2+3440477138050001300s+1829797706714534591319256699575{{926335089024232500\,s}\over{1500000\,s^2+3440477138050001300\,s+1829797706714534591319256699575}}
Plot generated by RF_CMOS.wxm
define(S21(s),block([Z_0],Z_0:50,ev(S[2,1])))$
S21(s);
/* S21 is a TRANSMISSION coefficient; a Smith chart maps REFLECTION
   coefficient.  Plot its magnitude against frequency instead. */
wxplot2d(20*log10(cabs(S21(%i*2*%pi*f*1e9))),
    [f,0.001,100],
    [logx],
    [legend,false],
    [xlabel,"Frequency [GHz]"],
    [ylabel,"dB20(|S21|) [dB]"],
    [style,[lines,3,2]],
    [gnuplot_preamble,"set grid"]);
926335089024232500s1500000s2+3440477138050001300s+1829797706714534591319256699575{{926335089024232500\,s}\over{1500000\,s^2+3440477138050001300\,s+1829797706714534591319256699575}}
Plot generated by RF_CMOS.wxm
define(S22(s),block([Z_0],Z_0:50,ev(S[2,2])))$
S22(s);
PlotSmithChart([
    parametric,
    realpart(S22(%i*%omega)),
    imagpart(S22(%i*%omega)),
    [%omega,2*%pi*1e6,2*%pi*100e9],
    [nticks,1000]]);
1500000s218297977067145345913192566995751500000s2+3440477138050001300s+1829797706714534591319256699575-{{1500000\,s^2-1829797706714534591319256699575}\over{1500000\,s^2+3440477138050001300\,s+1829797706714534591319256699575}}
Plot generated by RF_CMOS.wxm