From d244b1c0082afcf53c7917fcaa71e9c5e738599a Mon Sep 17 00:00:00 2001 From: dwarning Date: Sat, 25 Jan 2020 16:18:33 +0100 Subject: [PATCH] update vdmos examples to the new model interface --- examples/vdmos/100W.sp | 115 ++++++++++++++++++ examples/vdmos/100W_wingspread.sp | 92 ++++++++++++++ ....cir => IXTH80N20L-IXTH48P20P-quasisat.sp} | 2 +- ...IXTP6N100D2-cap.cir => IXTP6N100D2-cap.sp} | 0 ...weak-inv.cir => IXTP6N100D2-n-weak-inv.sp} | 0 examples/vdmos/VDMOS-DIO-AC.cir | 25 ---- .../vdmos/{VDMOS-DIO.cir => VDMOS-DIO.sp} | 14 ++- examples/vdmos/crss_coss_ciss.sp | 56 +++++++++ examples/vdmos/dcdc.sp | 43 +++++++ .../vdmos/{inv_vdmos.cir => inv_vdmos.sp} | 12 +- examples/vdmos/inv_vdmos_dc.cir | 25 ---- .../vdmos/{ro_11_vdmos.cir => ro_11_vdmos.sp} | 4 +- examples/vdmos/self-heating.sp | 24 ++++ examples/vdmos/soa_chk.sp | 40 ++++++ examples/vdmos/vdmos-out.cir | 18 --- .../vdmos/{vdmos-out_ir.cir => vdmos-out.sp} | 8 +- ...mos-out_ir_mtr.cir => vdmos-out_ir_mtr.sp} | 0 .../{vdmosp-out-mtr.cir => vdmosp-out-mtr.sp} | 0 .../vdmos/{vdmosp-out.cir => vdmosp-out.sp} | 0 19 files changed, 392 insertions(+), 86 deletions(-) create mode 100644 examples/vdmos/100W.sp create mode 100644 examples/vdmos/100W_wingspread.sp rename examples/vdmos/{IXTH80N20L-IXTH48P20P-quasisat.cir => IXTH80N20L-IXTH48P20P-quasisat.sp} (98%) rename examples/vdmos/{IXTP6N100D2-cap.cir => IXTP6N100D2-cap.sp} (100%) rename examples/vdmos/{IXTP6N100D2-n-weak-inv.cir => IXTP6N100D2-n-weak-inv.sp} (100%) delete mode 100644 examples/vdmos/VDMOS-DIO-AC.cir rename examples/vdmos/{VDMOS-DIO.cir => VDMOS-DIO.sp} (73%) create mode 100644 examples/vdmos/crss_coss_ciss.sp create mode 100644 examples/vdmos/dcdc.sp rename examples/vdmos/{inv_vdmos.cir => inv_vdmos.sp} (71%) delete mode 100644 examples/vdmos/inv_vdmos_dc.cir rename examples/vdmos/{ro_11_vdmos.cir => ro_11_vdmos.sp} (89%) create mode 100644 examples/vdmos/self-heating.sp create mode 100644 examples/vdmos/soa_chk.sp delete mode 100644 examples/vdmos/vdmos-out.cir rename examples/vdmos/{vdmos-out_ir.cir => vdmos-out.sp} (61%) rename examples/vdmos/{vdmos-out_ir_mtr.cir => vdmos-out_ir_mtr.sp} (100%) rename examples/vdmos/{vdmosp-out-mtr.cir => vdmosp-out-mtr.sp} (100%) rename examples/vdmos/{vdmosp-out.cir => vdmosp-out.sp} (100%) diff --git a/examples/vdmos/100W.sp b/examples/vdmos/100W.sp new file mode 100644 index 000000000..403436643 --- /dev/null +++ b/examples/vdmos/100W.sp @@ -0,0 +1,115 @@ +100W VDMOS power amplifier +*100W into 8Ω at less than .1% THD +*72° phase margin @ 950kHz +*Adjust R7 for 15mA quiescent current through Q1/Q2 +*R24 & R25 are optional output offset trimming +* +VTamb tamb 0 25 +MQ1 +V N010 N012 tn tcn IRFP240 tnodeout +X1 tcn tamb case-ambient +MQ2 -V N020 N017 tp tcp IRFP9240 tnodeout +X2 tcp tamb case-ambient +R1 OUT N017 .33 +R2 N012 OUT .33 +C1 OUT N016 100n +R3 N016 0 10 +R4 N010 N009 470 +R5 N020 N019 470 +V1 +V 0 50 +V2 0 -V 50 +Q3 N009 N006 N005 0 MJE350 +Q4 N006 N006 N004 0 MJE350 +R6 +V N005 100 +R7 N009 N019 820 +Q5 N019 N023 N024 0 MJE340 +R8 +V N004 100 +R9 N024 -V 100 +Q6 N022 N021 N024 0 MJE340 +C2 N023 N019 18p +C3 N022 N021 18p +R10 N006 N022 10K +Q7 N023 N015 N008 0 MJE350 +Q8 N021 N011 N008 0 MJE350 +R13 N023 -V 3.9K +R14 N021 -V 3.9K +Q9 N008 N003 N001 0 MJE350 +R15 +V N001 470 +R16 N002 N001 1K +Q10 N003 N002 +V 0 MJE350 +R17 N003 N007 10K +R18 N007 0 10K +C4 +V N007 47u +R19 OUT1 N011 27K +R20 N011 N018 1K +C5 N018 0 100u +C6 N015 0 330p +R21 N015 N014 2.2K +R22 N014 0 47K +C7 N014 N013 2.2u +Vin N013 0 ac 0 dc 0 SINE(0 {V} 1K) +RLOAD OUT 0 8 +R24 +V N011 3.7Meg +R25 N011 -V 6.1Meg +V3 OUT OUT1 dc 0 ac 1 +C8 OUT1 N011 3p +* +.param V=1.44 ; 100W RMS +.save @r1[i] @r2[i] v(out1) v(out) @rload[i] v(tn) v(tp) v(tcn) v(tcp) inoise_spectrum +.control +op +print v(out) @r1[i] @r2[i] +ac dec 100 10 1Meg +plot db(V(out)/V(out1)) +set units=degrees +plot ph(V(out)/V(out1)) +tran 1u 1000m +fourier 1K V(out) +plot v(out)*@rload[i] +settype temperature v(tn) v(tp) v(tcn) v(tcp) +plot v(tn) v(tp) v(tcn) v(tcp) +linearize v(out) +fft v(out) +plot db(v(out)) xlimit 0 20k +alter v3 ac = 0 +alter vin ac = 1 +noise V(out) Vin dec 10 10 100K +setplot noise2 +plot inoise_spectrum +.endc +* +.model IRFP240 VDMOS nchan ++ Vto=4 Kp=5.9 Lambda=.001 Theta=0.015 ksubthres=.27 ++ Rd=61m Rs=18m Rg=3 Rds=1e7 ++ Cgdmax=2.45n Cgdmin=10p a=0.3 Cgs=1.2n ++ Is=60p N=1.1 Rb=14m XTI=3 ++ Cjo=1.5n Vj=0.8 m=0.5 ++ tcvth=0.0065 MU=-1.27 texp0=1.5 ++ Rthjc=0.4 Cthj=5e-3 ++ mtriode=0.8 +.model IRFP9240 VDMOS pchan ++ Vto=-4 Kp=8.8 Lambda=.003 Theta=0.08 ksubthres=.35 ++ Rd=180m Rs=50m Rg=3 Rds=1e7 ++ Cgdmax=1.25n Cgdmin=50p a=0.23 Cgs=1.15n ++ Is=150p N=1.3 Rb=16m XTI=2 ++ Cjo=1.3n Vj=0.8 m=0.5 ++ tcvth=0.004 MU=-1.27 texp0=1.5 ++ Rthjc=0.4 Cthj=5e-3 ++ mtriode=0.6 +* +.model MJE340 NPN(Is=1.03431e-13 BF=172.974 NF=.939811 VAF=27.3487 IKF=0.0260146 ISE=4.48447e-11 Ne=1.61605 Br=16.6725 ++ Nr=0.796984 VAR=6.11596 IKR=0.10004 Isc=9.99914e-14 Nc=1.99995 RB=1.47761 IRB=0.2 RBM=1.47761 Re=0.0001 RC=1.42228 ++ XTB=2.70726 XTI=1 Eg=1.206 CJE=1e-11 VJE=0.75 Mje=.33 TF=1e-09 XTF=1 VTF=10 ITF=0.01 CJC=1e-11 VJC=.75 MJC=0.33 XCJC=.9 ++ Fc=0.5 CJS=0 VJS=0.75 MJS=0.5 TR=1e-07 PTF=0 KF=1e-15 AF=1) +.model MJE350 PNP(Is=6.01619e-15 BF=157.387 NF=.910131 VAF=23.273 IKF=0.0564808 Ise=4.48479e-12 Ne=1.58557 BR=0.1 ++ NR=1.03823 VAR=4.14543 IKR=.0999978 ISC=1.00199e-13 Nc=1.98851 RB=.1 IRB=0.202965 RBM=0.1 Re=.0710678 Rc=.355339 ++ XTB=1.03638 XTI=3.8424 Eg=1.206 Cje=1e-11 Vje=0.75 Mje=0.33 TF=1e-09 XTF=1 VTF=10 ITF=0.01 Cjc=1e-11 Vjc=0.75 ++ Mjc=0.33 XCJC=0.9 Fc=0.5 Cjs=0 Vjs=0.75 Mjs=0.5 TR=1e-07 PTF=0 KF=1e-15 AF=1) +* +.subckt case-ambient case amb +rcs case 1 0.1 +csa 1 0 30m +rsa 1 amb 1.3 +.ends + +.end + diff --git a/examples/vdmos/100W_wingspread.sp b/examples/vdmos/100W_wingspread.sp new file mode 100644 index 000000000..d909c0e91 --- /dev/null +++ b/examples/vdmos/100W_wingspread.sp @@ -0,0 +1,92 @@ +VDMOS wingspread plot example + +M1 +V N004 N005 IRFP240 +M2 -V N009 N007 IRFP9240 +R1 OUT N007 .33 +R2 N005 OUT .33 +R4 N004 N003 470 +R5 N009 N008 470 +V1 +V 0 50 +V2 0 -V 50 +Q3 -V N011 N008 0 MJE350 +R7 N003 N008 870 +Q5 +V N002 N003 0 MJE340 +Vin N006 0 0 +RLoad OUT 0 r = 8 +V3 N001 N006 4.8 +V4 N006 N010 4.8 +I1 +V N001 12m +I2 N010 -V 12m +R3 N002 N001 10 +R8 N011 N010 10 +* +.save all @r1[i] @r2[i] v(out) @rload[i] +.control + +let gain=vector(2005) +reshape gain [5][401] +let irload=vector(2005) +reshape irload [5][401] + +let offset = 0.05 + +foreach Rl 4 6 8 + + setplot new + set curplottitle = "wingspread $Rl Ohm" + set plotname=$curplot + + alter Rload r = $Rl + + let index = 0 + + foreach vbias 4.7 4.8 4.9 5.0 5.1 + alter v3 dc = $vbias + offset + alter v4 dc = $vbias - offset + op + print v(out) @r1[i] @r2[i] + dc vin -20 20 0.1 + set dcplotname = $curplot + setplot $plotname + let gain[index] = deriv({$dcplotname}.out) + let irload[index] = {$dcplotname}.@rload[i] + let index = index + 1 + destroy $dcplotname + end + + settype current irload + plot gain[0] gain[1] gain[2] gain[3] gain[4] vs irload[2] + +end + +.endc +* +.model IRFP240 VDMOS nchan ++ Vto=4 Kp=5.9 Lambda=.001 Theta=0.015 ksubthres=.27 ++ Rd=61m Rs=18m Rg=3 Rds=1e7 ++ Cgdmax=2.45n Cgdmin=10p a=0.3 Cgs=1.2n ++ Is=60p N=1.1 Rb=14m XTI=3 ++ Cjo=1.5n Vj=0.8 m=0.5 ++ tcvth=0.0065 MU=-1.27 texp0=1.5 +*+ Rthjc=1.8k Cthj=1e-3 ++ mtriode=0.8 +.model IRFP9240 VDMOS pchan ++ Vto=-4 Kp=8.8 Lambda=.003 Theta=0.08 ksubthres=.35 ++ Rd=180m Rs=50m Rg=3 Rds=1e7 ++ Cgdmax=1.25n Cgdmin=50p a=0.23 Cgs=1.15n ++ Is=150p N=1.3 Rb=16m XTI=2 ++ Cjo=1.3n Vj=0.8 m=0.5 ++ tcvth=0.004 MU=-1.27 texp0=1.5 +*+ Rthjc=1.8k Cthj=1e-3 ++ mtriode=0.6 +* +.model MJE340 NPN(Is=1.03431e-13 BF=172.974 NF=.939811 VAF=27.3487 IKF=0.0260146 ISE=4.48447e-11 Ne=1.61605 Br=16.6725 ++ Nr=0.796984 VAR=6.11596 IKR=0.10004 Isc=9.99914e-14 Nc=1.99995 RB=1.47761 IRB=0.2 RBM=1.47761 Re=0.0001 RC=1.42228 ++ XTB=2.70726 XTI=1 Eg=1.206 CJE=1e-11 VJE=0.75 Mje=.33 TF=1e-09 XTF=1 VTF=10 ITF=0.01 CJC=1e-11 VJC=.75 MJC=0.33 XCJC=.9 ++ Fc=0.5 CJS=0 VJS=0.75 MJS=0.5 TR=1e-07 PTF=0 KF=0 AF=1) +.model MJE350 PNP(Is=6.01619e-15 BF=157.387 NF=.910131 VAF=23.273 IKF=0.0564808 Ise=4.48479e-12 Ne=1.58557 BR=0.1 ++ NR=1.03823 VAR=4.14543 IKR=.0999978 ISC=1.00199e-13 Nc=1.98851 RB=.1 IRB=0.202965 RBM=0.1 Re=.0710678 Rc=.355339 ++ XTB=1.03638 XTI=3.8424 Eg=1.206 Cje=1e-11 Vje=0.75 Mje=0.33 TF=1e-09 XTF=1 VTF=10 ITF=0.01 Cjc=1e-11 Vjc=0.75 ++ Mjc=0.33 XCJC=0.9 Fc=0.5 Cjs=0 Vjs=0.75 Mjs=0.5 TR=1e-07 PTF=0 KF=0 AF=1) +* +.end diff --git a/examples/vdmos/IXTH80N20L-IXTH48P20P-quasisat.cir b/examples/vdmos/IXTH80N20L-IXTH48P20P-quasisat.sp similarity index 98% rename from examples/vdmos/IXTH80N20L-IXTH48P20P-quasisat.cir rename to examples/vdmos/IXTH80N20L-IXTH48P20P-quasisat.sp index 3f529ea81..bf77e5a10 100644 --- a/examples/vdmos/IXTH80N20L-IXTH48P20P-quasisat.cir +++ b/examples/vdmos/IXTH80N20L-IXTH48P20P-quasisat.sp @@ -36,7 +36,7 @@ plot dc3.vs2#branch vs2#branch + VTO=4 KP=15 + Lambda=3m $ will be reset by altermod to original 2m + Mtriode=0.4 -+ subslope=120m ++ Ksubthres=120m + subshift=160m + Rs=5m Rd=10m Rds=200e6 + Cgdmax=9000p Cgdmin=300p A=0.25 diff --git a/examples/vdmos/IXTP6N100D2-cap.cir b/examples/vdmos/IXTP6N100D2-cap.sp similarity index 100% rename from examples/vdmos/IXTP6N100D2-cap.cir rename to examples/vdmos/IXTP6N100D2-cap.sp diff --git a/examples/vdmos/IXTP6N100D2-n-weak-inv.cir b/examples/vdmos/IXTP6N100D2-n-weak-inv.sp similarity index 100% rename from examples/vdmos/IXTP6N100D2-n-weak-inv.cir rename to examples/vdmos/IXTP6N100D2-n-weak-inv.sp diff --git a/examples/vdmos/VDMOS-DIO-AC.cir b/examples/vdmos/VDMOS-DIO-AC.cir deleted file mode 100644 index 682d1c12c..000000000 --- a/examples/vdmos/VDMOS-DIO-AC.cir +++ /dev/null @@ -1,25 +0,0 @@ -Capacitance and current comparison between models d and bulk diode in vdmos - -D1 ad kd dio -.model dio d TT=1371n IS=2.13E-08 N=1.564 RS=0.0038 m=0.548 Vj=0.1 Cjo=3200pF - -Va ad 0 DC 0.5 AC 1 $ DC -20 -Vk kd 0 0 - -m1 d g s IXTP6N100D2 -.MODEL IXTP6N100D2 VDMOS(KP=2.9 RS=0.1 RD=1.3 RG=1 VTO=-2.7 LAMBDA=0.03 CGDMAX=3000p CGDMIN=2p CGS=2915p a=1 TT=1371n IS=2.13E-08 N=1.564 RB=0.0038 m=0.548 Vj=0.1 Cjo=3200pF ksubthres=0.1 subslope=43m subshift=-25m) - -Vd d 0 DC -0.5 AC 1 $ DC 20 -Vg g 0 -5 $ transistor is off -Vs s 0 0 - -.ac dec 10 1 100K - -.control -save @d1[id] @m1[id] all -run -plot mag(i(Vs)) mag (i(Vk)) -plot ph(i(Vs)) ph(i(Vk)) -.endc - -.end diff --git a/examples/vdmos/VDMOS-DIO.cir b/examples/vdmos/VDMOS-DIO.sp similarity index 73% rename from examples/vdmos/VDMOS-DIO.cir rename to examples/vdmos/VDMOS-DIO.sp index 9b9d4e173..f17a471d2 100644 --- a/examples/vdmos/VDMOS-DIO.cir +++ b/examples/vdmos/VDMOS-DIO.sp @@ -3,25 +3,27 @@ Capacitance and current comparison between models d and bulk diode in vdmos D1 ad kd dio .model dio d TT=1371n IS=2.13E-08 N=1.564 RS=0.0038 m=0.548 Vj=0.1 Cjo=3200pF -Va ad 0 dc 0 pwl(0 -2 2.5 0.5) +Va ad 0 ac 1 dc 0.5 pwl(0 -2 2.5 0.5) Vk kd 0 0 m1 d g s IXTP6N100D2 .MODEL IXTP6N100D2 VDMOS(KP=2.9 RS=0.1 RD=1.3 RG=1 VTO=-2.7 LAMBDA=0.03 CGDMAX=3000p CGDMIN=2p CGS=2915p a=1 TT=1371n IS=2.13E-08 N=1.564 RB=0.0038 m=0.548 Vj=0.1 Cjo=3200pF ksubthres=0.1) -Vd d 0 dc 0 pwl(0 2 2.5 -0.5) +Vd d 0 ac 1 dc -0.5 pwl(0 2 2.5 -0.5) Vg g 0 -5 $ transistor is off Vs s 0 0 -.tran 10m 2.5 - .control -save @d1[cd] @m1[cds] all -run +save all @d1[id] @m1[id] @d1[cd] @m1[cds] all +tran 10m 2.5 plot abs(i(Vk)) abs(i(Vs)) ylog plot @d1[cd] @m1[cds] *plot abs(i(Vk)) - abs(i(Vs)) *plot @d1[cd] - @m1[cds] + +ac dec 10 1 100K +plot mag(i(Vs)) mag (i(Vk)) +plot ph(i(Vs)) ph(i(Vk)) .endc .end diff --git a/examples/vdmos/crss_coss_ciss.sp b/examples/vdmos/crss_coss_ciss.sp new file mode 100644 index 000000000..a5b46452b --- /dev/null +++ b/examples/vdmos/crss_coss_ciss.sp @@ -0,0 +1,56 @@ +crss coss ciss +* +VP1 P1 0 PULSE(0 1.15m 100n 10n 10n 1 2) +VP2 P4 0 PULSE(0 2.8m 100n 10n 10n 1 2) +* +M1 d1 g1 0 IRFP240 +V1 g1 0 0.0 +V2 1 d1 0.0 +G1 0 1 P1 0 1.04 +* +M2 d2 0 d2 IRFP240 +V3 2 d2 0.0 +G2 0 2 P4 0 1.1 +* +M3 d3 g3 0 IRFP9240 +V4 g3 0 0.0 +V5 3 d3 0.0 +G3 3 0 P1 0 0.85 +e1 d1p 0 d3 0 -1 +* +M4 d4 0 d4 IRFP9240 +V6 4 d4 0.0 +G4 4 0 P4 0 1.0 +e2 d2p 0 d4 0 -1 +* +.control +tran 1n 25u +*plot v(d1) v(d2) v(d3) v(d4) + +plot 'i(v1)/deriv(v(d1))' 'i(v2)/deriv(v(d1))' vs v(d1) xlog xlimit 1 100 ylimit 0 3n title "IRFP240 crss & coss" +plot 'i(v3)/deriv(v(d2))' vs v(d2) xlog xlimit 1 100 ylimit 0 3n title "IRFP240 ciss" + +plot 'i(v4)/deriv(v(d3))' 'i(v5)/deriv(v(d3))' vs v(d1p) xlog xlimit 1 100 ylimit 0 3n title "IRFP9240 crss & coss" +plot 'i(v6)/deriv(v(d4))' vs v(d2p) xlog xlimit 1 100 ylimit 0 3n title "IRFP9240 ciss" + +.endc +.model IRFP240 VDMOS nchan ++ Vto=4 Kp=5.9 Lambda=.001 Theta=0.015 ksubthres=.27 ++ Rd=61m Rs=18m Rg=3 Rds=1e7 ++ Cgdmax=2.45n Cgdmin=10p a=0.3 Cgs=1.2n ++ Is=60p N=1.1 Rb=14m XTI=3 ++ Cjo=1.5n Vj=0.8 m=0.5 ++ tcvth=0.0065 MU=-1.27 texp0=1.5 +*+ Rthjc=1.8k Cthj=1e-3 ++ mtriode=0.8 +.model IRFP9240 VDMOS pchan ++ Vto=-4 Kp=8.8 Lambda=.003 Theta=0.08 ksubthres=.35 ++ Rd=180m Rs=50m Rg=3 Rds=1e7 ++ Cgdmax=1.25n Cgdmin=50p a=0.23 Cgs=1.15n ++ Is=150p N=1.3 Rb=16m XTI=2 ++ Cjo=1.3n Vj=0.8 m=0.5 ++ tcvth=0.004 MU=-1.27 texp0=1.5 +*+ Rthjc=1.8k Cthj=1e-3 ++ mtriode=0.6 +.end + diff --git a/examples/vdmos/dcdc.sp b/examples/vdmos/dcdc.sp new file mode 100644 index 000000000..6e32a54de --- /dev/null +++ b/examples/vdmos/dcdc.sp @@ -0,0 +1,43 @@ +Simple regulated DCDC step-up converter + +V1 clock 0 PULSE(0 6 0 19u 1u 10n 20.01u) +V2 ref 0 2.5 +R1 OUT outdiv 100K +R2 0 outdiv 27k +R3 outdiv x 10k +C2 err x 50n +B1 err 0 V = max(0,min(5,V(ref,x)*10k)) +B2 gate 0 V = max(0,min(5,V(err,clock)*1k)) +V3 +V 0 5.0 +L1 +V lx 220u +RL lx out1 125m +M1 out1 gate 0 IRF510 +D1 out1 OUT MBRS340 +C1 OUT cx 33u +RC cx 0 50m +R4 out2 OUT R = (time<12ms ? {Rload} : time<20ms ? {Rload/2} : {2*Rload}) +V4 out2 0 0.0 + +.param Rload=100 + +.model IRF510 VDMOS nchan ++ Vto=3.6 Kp=1.3 Lambda=.001 Theta=0.07 ksubthres=.1 ++ Rg=3 Rd=200m Rs=54m Rds=1e7 ++ Cgdmax=.2n Cgdmin=.05n a=0.3 Cgs=.12n ++ Is=17p N=1.1 Rb=80m XTI=3 ++ Cjo=.25n Vj=0.8 m=0.5 ++ tcvth=0.007 MU=-1.27 texp0=1.5 + +.model MBRS340 D(Is=22.6u Rs=.042 N=1.094 Cjo=480p M=.61 Eg=.69 Xti=2) + +.control + listing e + option method=gear + tran 10n 30m 0 5n +* write dcdc.raw + plot v(err) v(clock) v(gate) v(out) + plot -i(V3) i(V4) ylimit 0 1 + rusage all +.endc + +.end diff --git a/examples/vdmos/inv_vdmos.cir b/examples/vdmos/inv_vdmos.sp similarity index 71% rename from examples/vdmos/inv_vdmos.cir rename to examples/vdmos/inv_vdmos.sp index 1fa247c82..cf3901d89 100644 --- a/examples/vdmos/inv_vdmos.cir +++ b/examples/vdmos/inv_vdmos.sp @@ -1,20 +1,22 @@ *****************==== Inverter ====******************* *********** VDMOS **************************** vdd 1 0 5 +vss 4 0 0 .subckt inv out in vdd vss mp1 out in vdd p1 mn1 out in vss n1 .ends -xinv 3 2 1 0 inv +xinv 3 2 1 4 inv -Vin 2 0 Pulse (0 5 10n 10n 10n 140n 300n) - -.tran 1n 1u +Vin 2 0 DC 0 Pulse (0 5 10n 10n 10n 140n 300n) .control -run +dc Vin 0 5 0.05 +* current and output in a single plot +plot v(2) v(3) vss#branch +tran 1n 1u * current and output in a single plot plot v(2) v(3) .endc diff --git a/examples/vdmos/inv_vdmos_dc.cir b/examples/vdmos/inv_vdmos_dc.cir deleted file mode 100644 index d81d8f544..000000000 --- a/examples/vdmos/inv_vdmos_dc.cir +++ /dev/null @@ -1,25 +0,0 @@ -*****************==== Inverter ====******************* -*********** VDMOS inverter dc **************************** -vdd 1 0 5 -vss 4 0 0 - -.subckt inv out in vdd vss -mp1 out in vdd p1 -mn1 out in vss n1 -.ends - -xinv 3 2 1 4 inv - -Vin 2 0 0 - -.dc Vin 0 5 0.05 - -.control -run -* current and output in a single plot -plot v(2) v(3) vss#branch -.endc - -.model N1 vdmos cgdmin=0.2p cgdmax=1p a=2 cgs=0.5p rg=5k -.model P1 vdmos cgdmin=0.2p cgdmax=1p a=2 cgs=0.5p rg=5k pchan -.end diff --git a/examples/vdmos/ro_11_vdmos.cir b/examples/vdmos/ro_11_vdmos.sp similarity index 89% rename from examples/vdmos/ro_11_vdmos.cir rename to examples/vdmos/ro_11_vdmos.sp index 322567f13..84300d4ae 100644 --- a/examples/vdmos/ro_11_vdmos.cir +++ b/examples/vdmos/ro_11_vdmos.sp @@ -18,8 +18,8 @@ xinv7 9 8 1 0 inv xinv8 10 9 1 0 inv xinv9 2 10 1 0 inv -.model N1 vdmos cgdmin=0.05p cgdmax=0.2p a=1.2 cgs=0.15p rg=10 kp=2e-5 rb=1e7 cjo=1n subslope=0.2 -.model P1 vdmos cgdmin=0.05p cgdmax=0.2p a=1.2 cgs=0.15p rg=10 kp=2e-5 rb=1e7 cjo=1n pchan subslope=0.2 +.model N1 vdmos cgdmin=0.05p cgdmax=0.2p a=1.2 cgs=0.15p rg=10 kp=2e-5 rb=1e7 cjo=1n ksubthres=0.2 +.model P1 vdmos cgdmin=0.05p cgdmax=0.2p a=1.2 cgs=0.15p rg=10 kp=2e-5 rb=1e7 cjo=1n pchan ksubthres=0.2 .tran 0.1n 1u diff --git a/examples/vdmos/self-heating.sp b/examples/vdmos/self-heating.sp new file mode 100644 index 000000000..53e967526 --- /dev/null +++ b/examples/vdmos/self-heating.sp @@ -0,0 +1,24 @@ +VDMOS self heating test +M1 D G 0 t tc IRFP240 tnodeout +rthk tc 0 0.05 +VG G 0 5V Pulse 0 10 0 1m 1m 100m 200m +*RD D D1 4 +VD D 0 2V +.model IRFP240 VDMOS nchan ++ Vto=4 Kp=5.9 Lambda=.001 Theta=0.015 ksubthres=.27 ++ Rd=61m Rs=18m Rg=3 Rds=1e7 ++ Cgdmax=2.45n Cgdmin=10p a=0.3 Cgs=1.2n ++ Is=60p N=1.1 Rb=14m XTI=3 ++ Cjo=1.5n Vj=0.8 m=0.5 ++ tcvth=0.0065 MU=-1.27 texp0=1.5 ++ Rthjc=0.02 Cthj=1e-3 Rthca=100 ++ mtriode=0.8 +.control +dc vd 0.1 50 .1 vg 5 13 2 +plot -i(vd) +settype temperature v(t) v(tc) +plot v(t) v(tc) +*tran 1m 0.01 +*plot v(d) v(g) +.endc +.end diff --git a/examples/vdmos/soa_chk.sp b/examples/vdmos/soa_chk.sp new file mode 100644 index 000000000..ea84d89f2 --- /dev/null +++ b/examples/vdmos/soa_chk.sp @@ -0,0 +1,40 @@ +VDMOS SOA check + +.model IRFP240 VDMOS nchan ++ Vto=4 Kp=5.9 Lambda=.001 Theta=0.015 ksubthres=.27 ++ Rd=61m Rs=18m Rg=3 Rds=1e7 ++ Cgdmax=2.45n Cgdmin=10p a=0.3 Cgs=1.2n ++ Is=60p N=1.1 Rb=14m Cjo=1.5n XTI=3 ++ tcvth=0.0065 MU=-1.27 texp0=1.5 ++ mtriode=0.8 ++ Vgs_max=20 Vgd_max=20 Vds_max=200 + +vd1 d1 0 dc 0.1 +vg1 g1 0 dc 0.0 +vs1 s1 0 dc 0.0 +m1 d1 g1 s1 IRFP240 + +.model IRFP9240 VDMOS pchan ++ Vto=-4 Kp=8.8 Lambda=.003 Theta=0.08 ksubthres=.35 ++ Rd=180m Rs=50m Rg=3 Rds=1e7 ++ Cgdmax=1.25n Cgdmin=50p a=0.23 Cgs=1.15n ++ Is=150p N=1.3 Rb=16m Cjo=1.3n XTI=2 ++ tcvth=0.004 MU=-1.27 texp0=1.5 ++ mtriode=0.6 ++ Vgs_max=20 Vgd_max=20 Vds_max=200 + +vd2 0 d2 dc 0.1 +vg2 0 g2 dc 0.0 +vs2 0 s2 dc 0.0 +m2 d2 g2 s2 IRFP9240 + +.options warn=1 maxwarns=6 + +.control +dc vd1 -1 210 1 vg1 5 25 5 +plot -i(vd1) +dc vd2 -1 210 1 vg2 5 25 5 +plot i(vd2) +.endc + +.end diff --git a/examples/vdmos/vdmos-out.cir b/examples/vdmos/vdmos-out.cir deleted file mode 100644 index e0433db1c..000000000 --- a/examples/vdmos/vdmos-out.cir +++ /dev/null @@ -1,18 +0,0 @@ -VDMOS output - -m1 d g s n1 -*.model n1 vdmos rb=0.05 is=10n kp=2 bv=12 rd=0.1 -.model N1 vdmos vto=1 cgdmin=0.05p cgdmax=0.2p a=1.2 cgs=0.15p rg=10 kp=2e-4 rb=1e4 is=1e-9 bv=12 cjo=1p subslope=0.1 - -vd d 0 1 -vg g 0 1 -vs s 0 0 - -.control -dc vd -2 15 0.05 vg 0 5 1 -plot vs#branch -dc vg 0 5 0.05 vd 0.5 2.5 0.5 -plot vs#branch ylog -.endc - -.end diff --git a/examples/vdmos/vdmos-out_ir.cir b/examples/vdmos/vdmos-out.sp similarity index 61% rename from examples/vdmos/vdmos-out_ir.cir rename to examples/vdmos/vdmos-out.sp index f3e141c10..2e1a44af3 100644 --- a/examples/vdmos/vdmos-out_ir.cir +++ b/examples/vdmos/vdmos-out.sp @@ -2,17 +2,17 @@ VDMOS output m1 d g s IRFZ48Z -.model IRFZ48Z VDMOS (Rg = 1.77 Vto=4 Rd=1.85m Rs=0.0m Rb=3.75m Kp=25 Cgdmax=2.1n Cgdmin=0.05n Cgs=1.8n Cjo=0.55n Is=2.5p tt=20n mfg=International_Rectifier Vds=55 Ron=8.6m Qg=43n) +.model IRFZ48Z VDMOS (Rg = 1.77 Vto=4 Rd=1.85m Rs=0.0m Rb=3.75m Kp=25 Cgdmax=2.1n Cgdmin=0.05n Cgs=1.8n Cjo=0.55n Is=2.5p tt=20n ksubthres=0.1 mfg=International_Rectifier Vds=55 Ron=8.6m Qg=43n) vd d 0 1 vg g 0 1 vs s 0 0 -.dc vd -1 15 0.05 vg 3 7 1 - .control -run +dc vd -1 15 0.05 vg 3 7 1 plot vs#branch +dc vg 2 7 0.05 vd 0.5 2.5 0.5 +plot vs#branch ylog .endc .end diff --git a/examples/vdmos/vdmos-out_ir_mtr.cir b/examples/vdmos/vdmos-out_ir_mtr.sp similarity index 100% rename from examples/vdmos/vdmos-out_ir_mtr.cir rename to examples/vdmos/vdmos-out_ir_mtr.sp diff --git a/examples/vdmos/vdmosp-out-mtr.cir b/examples/vdmos/vdmosp-out-mtr.sp similarity index 100% rename from examples/vdmos/vdmosp-out-mtr.cir rename to examples/vdmos/vdmosp-out-mtr.sp diff --git a/examples/vdmos/vdmosp-out.cir b/examples/vdmos/vdmosp-out.sp similarity index 100% rename from examples/vdmos/vdmosp-out.cir rename to examples/vdmos/vdmosp-out.sp