psp102 update to latest available version 102.5.0
This commit is contained in:
parent
e8aea4967c
commit
336bb3480b
|
|
@ -1,4 +1,4 @@
|
|||
psp nch output
|
||||
psp102 nch output
|
||||
*
|
||||
vd d 0 dc 0.1
|
||||
vg g 0 dc 0.0
|
||||
|
|
@ -25,200 +25,259 @@ plot abs(i(vb)) ylog ylimit 1e-12 1e-03
|
|||
.endc
|
||||
*
|
||||
.model nch nmos level=45
|
||||
+type=1.0e+00
|
||||
+tr=21.0e+00
|
||||
+swigate=0.0e+00
|
||||
+swimpact=1.0e+00
|
||||
+swgidl=0.0e+00
|
||||
+swjuncap=0.0e+00
|
||||
+lvaro=0.0e+00
|
||||
+lvarl=0.0e+00
|
||||
+lvarw=0.0e+00
|
||||
+lap=0.0e+00
|
||||
+wvaro=0.0e+00
|
||||
+wvarl=0.0e+00
|
||||
+wvarw=0.0e+00
|
||||
+wot=0.0e+00
|
||||
+vfbo=-1.0e+00
|
||||
+vfbl=0.0e+00
|
||||
+vfbw=0.0e+00
|
||||
+vfblw=0.0e+00
|
||||
+stvfbo=500.0e-06
|
||||
+stvfbl=0.0e+00
|
||||
+stvfbw=0.0e+00
|
||||
+stvfblw=0.0e+00
|
||||
+toxo=2.0e-09
|
||||
+nsubo=300.0e+21
|
||||
+nsubw=0.0e+00
|
||||
+wseg=10.0e-09
|
||||
+npck=1.0e+24
|
||||
+npckw=0.0e+00
|
||||
+wsegp=10.0e-09
|
||||
+lpck=10.0e-09
|
||||
+lpckw=0.0e+00
|
||||
+vnsubo=0.0e+00
|
||||
+nslpo=50.0e-03
|
||||
+dnsubo=0.0e+00
|
||||
+npo=100.0e+24
|
||||
+npl=0.0e+00
|
||||
+qmc=1.0e+00
|
||||
+cto=0.0e+00
|
||||
+ctl=0.0e+00
|
||||
+ctlexp=1.0e+00
|
||||
+ctw=0.0e+00
|
||||
+toxovo=2.0e-09
|
||||
+lov=0.0e+00
|
||||
+novo=50.0e+24
|
||||
+fol1=0.0e+00
|
||||
+fol2=0.0e+00
|
||||
+cfl=0.0e+00
|
||||
+cflexp=2.0e+00
|
||||
+cfw=0.0e+00
|
||||
+cfbo=0.0e+00
|
||||
+uo=50.0e-03
|
||||
+fbet1=0.0e+00
|
||||
+fbet1w=0.0e+00
|
||||
+lp1=10.0e-09
|
||||
+lp1w=0.0e+00
|
||||
+fbet2=0.0e+00
|
||||
+lp2=10.0e-09
|
||||
+betw1=0.0e+00
|
||||
+betw2=0.0e+00
|
||||
+wbet=1.0e-09
|
||||
+stbeto=1.0e+00
|
||||
+stbetl=0.0e+00
|
||||
+stbetw=0.0e+00
|
||||
+stbetlw=0.0e+00
|
||||
+mueo=500.0e-03
|
||||
+muew=0.0e+00
|
||||
+stmueo=0.0e+00
|
||||
+themuo=1.5e+00
|
||||
+stthemuo=1.5e+00
|
||||
+cso=0.0e+00
|
||||
+csw=0.0e+00
|
||||
+stcso=0.0e+00
|
||||
+xcoro=0.0e+00
|
||||
+xcorl=0.0e+00
|
||||
+xcorw=0.0e+00
|
||||
+xcorlw=0.0e+00
|
||||
+stxcoro=0.0e+00
|
||||
+rsw1=0.5e+03
|
||||
+rsw2=0.0e+00
|
||||
+strso=1.0e+00
|
||||
+rsbo=0.0e+00
|
||||
+rsgo=0.0e+00
|
||||
+thesato=0.0e+00
|
||||
+thesatl=50.0e-03
|
||||
+thesatlexp=1.0e+00
|
||||
+thesatw=0.0e+00
|
||||
+stthesato=1.0e+00
|
||||
+stthesatl=0.0e+00
|
||||
+stthesatw=0.0e+00
|
||||
+stthesatlw=0.0e+00
|
||||
+thesatbo=0.0e+00
|
||||
+thesatgo=0.0e+00
|
||||
+axo=18.0e+00
|
||||
+axl=400.0e-03
|
||||
+alpl=500.0e-06
|
||||
+alplexp=1.0e+00
|
||||
+alpw=0.0e+00
|
||||
+alp1l1=0.0e+00
|
||||
+alp1lexp=500.0e-03
|
||||
+alp1l2=0.0e+00
|
||||
+alp1w=0.0e+00
|
||||
+alp2l1=0.0e+00
|
||||
+alp2lexp=0.5e+00
|
||||
+alp2l2=0.0e+00
|
||||
+alp2w=0.0e+00
|
||||
+vpo=50.0e-03
|
||||
+a1o=1.0e+00
|
||||
+a1l=0.0e+00
|
||||
+a1w=0.0e+00
|
||||
+a2o=10.0e+00
|
||||
+sta2o=0.0e+00
|
||||
+a3o=1.0e+00
|
||||
+a3l=0.0e+00
|
||||
+a3w=0.0e+00
|
||||
+a4o=0.0e+00
|
||||
+a4w=0.0e+00
|
||||
+gcoo=0.0e+00
|
||||
+iginvlw=0.0e+00
|
||||
+igovw=0.0e+00
|
||||
+stigo=2.0e+00
|
||||
+gc2o=375.0e-03
|
||||
+gc3o=63.0e-03
|
||||
+chibo=3.1e+00
|
||||
+agidlw=0.0e+00
|
||||
+bgidlo=41.0e+00
|
||||
+stbgidlo=0.0e+00
|
||||
+cgidlo=0.0e+00
|
||||
+cgbovl=0.0e+00
|
||||
+cfrw=0.0e+00
|
||||
+nfalw=80.0e+21
|
||||
+nfblw=30.0e+06
|
||||
+nfclw=0.0e+00
|
||||
+saref=1.0e-06
|
||||
+sbref=1.0e-06
|
||||
+wlod=0.0e+00
|
||||
+kuo=0.0e+00
|
||||
+kvsat=0.0e+00
|
||||
+tkuo=0.0e+00
|
||||
+lkuo=0.0e+00
|
||||
+wkuo=0.0e+00
|
||||
+pkuo=0.0e+00
|
||||
+llodkuo=0.0e+00
|
||||
+wlodkuo=0.0e+00
|
||||
+kvtho=0.0e+00
|
||||
+lkvtho=0.0e+00
|
||||
+wkvtho=0.0e+00
|
||||
+pkvtho=0.0e+00
|
||||
+llodvth=0.0e+00
|
||||
+wlodvth=0.0e+00
|
||||
+stetao=0.0e+00
|
||||
+lodetao=1.0e+00
|
||||
+trj=21.0e+00
|
||||
+imax=1.0e+03
|
||||
+cjorbot=1.0e-03
|
||||
+cjorsti=1.0e-09
|
||||
+cjorgat=1.0e-09
|
||||
+vbirbot=1.0e+00
|
||||
+vbirsti=1.0e+00
|
||||
+vbirgat=1.0e+00
|
||||
+pbot=500.0e-03
|
||||
+psti=500.0e-03
|
||||
+pgat=500.0e-03
|
||||
+phigbot=1.16e+00
|
||||
+phigsti=1.16e+00
|
||||
+phiggat=1.16e+00
|
||||
+idsatrbot=1.0e-12
|
||||
+idsatrsti=1.0e-18
|
||||
+idsatrgat=1.0e-18
|
||||
+csrhbot=100.0e+00
|
||||
+csrhsti=100.0e-06
|
||||
+csrhgat=100.0e-06
|
||||
+xjunsti=100.0e-09
|
||||
+xjungat=100.0e-09
|
||||
+ctatbot=100.0e+00
|
||||
+ctatsti=100.0e-06
|
||||
+ctatgat=100.0e-06
|
||||
+mefftatbot=250.0e-03
|
||||
+mefftatsti=250.0e-03
|
||||
+mefftatgat=250.0e-03
|
||||
+cbbtbot=1.0e-12
|
||||
+cbbtsti=1.0e-18
|
||||
+cbbtgat=1.0e-18
|
||||
+fbbtrbot=1.0e+09
|
||||
+fbbtrsti=1.0e+09
|
||||
+fbbtrgat=1.0e+09
|
||||
+stfbbtbot=-1.0e-03
|
||||
+stfbbtsti=-1.0e-03
|
||||
+stfbbtgat=-1.0e-03
|
||||
+vbrbot=10.0e+00
|
||||
+vbrsti=10.0e+00
|
||||
+vbrgat=10.0e+00
|
||||
+pbrbot=4.0e+00
|
||||
+pbrsti=4.0e+00
|
||||
+pbrgat=4.0e+00
|
||||
+dta=0.0e+00
|
||||
+TR=27.0
|
||||
+swigate=0
|
||||
+swimpact=1
|
||||
+swgidl=0
|
||||
+swjuncap=1
|
||||
+DTA=0
|
||||
+QMC=1.0
|
||||
+LVARO=-10.0E-9
|
||||
+LVARL=0
|
||||
+LVARW=0
|
||||
+LAP=10.0E-9
|
||||
+WVARO=10.0E-9
|
||||
+WVARL=0
|
||||
+WVARW=0
|
||||
+WOT=0
|
||||
+DLQ=0
|
||||
+DWQ=0
|
||||
+VFBO=-1.1
|
||||
+VFBL=0
|
||||
+VFBW=0
|
||||
+VFBLW=0
|
||||
+STVFBO=5.0E-4
|
||||
+STVFBL=0
|
||||
+STVFBW=0
|
||||
+STVFBLW=0
|
||||
+TOXO=1.5E-9
|
||||
+EPSROXO=3.9
|
||||
+NSUBO=3.0E+23
|
||||
+NSUBW=0
|
||||
+WSEG=1.5E-10
|
||||
+NPCK=1.0E+24
|
||||
+NPCKW=0
|
||||
+WSEGP=0.9E-8
|
||||
+LPCK=5.5E-8
|
||||
+LPCKW=0
|
||||
+FOL1=2.0E-2
|
||||
+FOL2=5.0E-6
|
||||
+VNSUBO=0
|
||||
+NSLPO=0.05
|
||||
+DNSUBO=0
|
||||
+DPHIBO=0
|
||||
+DPHIBL=0
|
||||
+DPHIBLEXP=1.0
|
||||
+DPHIBW=0
|
||||
+DPHIBLW=0
|
||||
+NPO=1.5E+26
|
||||
+NPL=10.0E-18
|
||||
+CTO=5.0E-15
|
||||
+CTL=4.0E-2
|
||||
+CTLEXP=0.6
|
||||
+CTW=0
|
||||
+CTLW=0
|
||||
+TOXOVO=1.5E-9
|
||||
+TOXOVDO=2.0E-9
|
||||
+LOV=10.0E-9
|
||||
+LOVD=0
|
||||
+NOVO=7.5E+25
|
||||
+NOVDO=5.0e+25
|
||||
+CFL=3.0E-4
|
||||
+CFLEXP=2.0
|
||||
+CFW=5.0E-3
|
||||
+CFBO=0.3
|
||||
+UO=3.5E-2
|
||||
+FBET1=-0.3
|
||||
+FBET1W=0.15
|
||||
+LP1=1.5E-7
|
||||
+LP1W=-2.5E-2
|
||||
+FBET2=50.0
|
||||
+LP2=8.5E-10
|
||||
+BETW1=5.0E-2
|
||||
+BETW2=-2.0E-2
|
||||
+WBET=5.0E-10
|
||||
+STBETO=1.75
|
||||
+STBETL=-2.0E-2
|
||||
+STBETW=-2.0E-3
|
||||
+STBETLW=-3.0E-3
|
||||
+MUEO=0.6
|
||||
+MUEW=-1.2E-2
|
||||
+STMUEO=0.5
|
||||
+THEMUO=2.75
|
||||
+STTHEMUO=-0.1
|
||||
+CSO=1.0E-2
|
||||
+CSL=0
|
||||
+CSLEXP=1
|
||||
+CSW=0
|
||||
+CSLW=0
|
||||
+STCSO=-5.0
|
||||
+XCORO=0.15
|
||||
+XCORL=2.0E-3
|
||||
+XCORW=-3.0E-2
|
||||
+XCORLW=-3.5E-3
|
||||
+STXCORO=1.25
|
||||
+FETAO=1
|
||||
+RSW1=50
|
||||
+RSW2=5.0E-2
|
||||
+STRSO=-2.0
|
||||
+RSBO=0
|
||||
+RSGO=0
|
||||
+THESATO=1.0E-6
|
||||
+THESATL=0.6
|
||||
+THESATLEXP=0.75
|
||||
+THESATW=-1.0E-2
|
||||
+THESATLW=0
|
||||
+STTHESATO=1.5
|
||||
+STTHESATL=-2.5E-2
|
||||
+STTHESATW=-2.0E-2
|
||||
+STTHESATLW=-5.0E-3
|
||||
+THESATBO=0.15
|
||||
+THESATGO=0.75
|
||||
+AXO=20
|
||||
+AXL=0.2
|
||||
+ALPL=7.0E-3
|
||||
+ALPLEXP=0.6
|
||||
+ALPW=5.0E-2
|
||||
+ALP1L1=2.5E-2
|
||||
+ALP1LEXP=0.4
|
||||
+ALP1L2=0.1
|
||||
+ALP1W=8.5E-3
|
||||
+ALP2L1=0.5
|
||||
+ALP2LEXP=0
|
||||
+ALP2L2=0.5
|
||||
+ALP2W=-0.2
|
||||
+VPO=0.25
|
||||
+A1O=1.0
|
||||
+A1L=0
|
||||
+A1W=0
|
||||
+A2O=10.0
|
||||
+STA2O=-0.5
|
||||
+A3O=1.0
|
||||
+A3L=0
|
||||
+A3W=0
|
||||
+A4O=0
|
||||
+A4L=0
|
||||
+A4W=0
|
||||
+GCOO=5.0
|
||||
+IGINVLW=50.0
|
||||
+IGOVW=10.0
|
||||
+IGOVDW=0
|
||||
+STIGO=1.5
|
||||
+GC2O=1.0
|
||||
+GC3O=-1.0
|
||||
+CHIBO=3.1
|
||||
+AGIDLW=50.0
|
||||
+AGIDLDW=0
|
||||
+BGIDLO=35.0
|
||||
+BGIDLDO=41
|
||||
+STBGIDLO=-5.0E-4
|
||||
+STBGIDLDO=0
|
||||
+CGIDLO=0.15
|
||||
+CGIDLDO=0
|
||||
+CGBOVL=0
|
||||
+CFRW=5.0E-17
|
||||
+CFRDW=0
|
||||
+FNTO=1
|
||||
+NFALW=8.0E+22
|
||||
+NFBLW=3.0E7
|
||||
+NFCLW=0
|
||||
+RGO=0
|
||||
+RINT=0
|
||||
+RVPOLY=0
|
||||
+RSHG=0
|
||||
+DLSIL=0
|
||||
+RBULKO=0
|
||||
+RWELLO=0
|
||||
+RJUNDO=0
|
||||
+RJUNSO=0
|
||||
+TRJ=27.0
|
||||
+IMAX=1.0E3
|
||||
+VJUNREF=2.5
|
||||
+FJUNQ=0.03
|
||||
+CJORBOT=1.0E-3
|
||||
+CJORSTI=1.0E-9
|
||||
+CJORGAT=0.5E-9
|
||||
+VBIRBOT=0.75
|
||||
+VBIRSTI=1.0
|
||||
+VBIRGAT=0.75
|
||||
+PBOT=0.35
|
||||
+PSTI=0.35
|
||||
+PGAT=0.6
|
||||
+PHIGBOT=1.16
|
||||
+PHIGSTI=1.16
|
||||
+PHIGGAT=1.16
|
||||
+IDSATRBOT=5.0E-9
|
||||
+IDSATRSTI=1.0E-18
|
||||
+IDSATRGAT=1.0E-18
|
||||
+CSRHBOT=5.0E2
|
||||
+CSRHSTI=0
|
||||
+CSRHGAT=1.0E3
|
||||
+XJUNSTI=1.0E-8
|
||||
+XJUNGAT=1.0E-9
|
||||
+CTATBOT=5.0E2
|
||||
+CTATSTI=0
|
||||
+CTATGAT=1.0E3
|
||||
+MEFFTATBOT=0.25
|
||||
+MEFFTATSTI=0.25
|
||||
+MEFFTATGAT=0.25
|
||||
+CBBTBOT=1.0E-12
|
||||
+CBBTSTI=1.0E-18
|
||||
+CBBTGAT=1.0E-18
|
||||
+FBBTRBOT=1.0E9
|
||||
+FBBTRSTI=1.0E9
|
||||
+FBBTRGAT=1.0E9
|
||||
+STFBBTBOT=-1.0E-3
|
||||
+STFBBTSTI=-1.0E-3
|
||||
+STFBBTGAT=-1.0E-2
|
||||
+VBRBOT=10.0
|
||||
+VBRSTI=10.0
|
||||
+VBRGAT=10.0
|
||||
+PBRBOT=3
|
||||
+PBRSTI=4
|
||||
+PBRGAT=3
|
||||
+VJUNREFD=2.5
|
||||
+FJUNQD=0.03
|
||||
+CJORBOTD=1.0E-3
|
||||
+CJORSTID=1.0E-9
|
||||
+CJORGATD=1.0E-9
|
||||
+VBIRBOTD=1.0
|
||||
+VBIRSTID=1.0
|
||||
+VBIRGATD=1.0
|
||||
+PBOTD=0.5
|
||||
+PSTID=0.5
|
||||
+PGATD=0.5
|
||||
+PHIGBOTD=1.16
|
||||
+PHIGSTID=1.16
|
||||
+PHIGGATD=1.16
|
||||
+IDSATRBOTD=1.0E-12
|
||||
+IDSATRSTID=1.0E-18
|
||||
+IDSATRGATD=1.0E-18
|
||||
+CSRHBOTD=1.0E+2
|
||||
+CSRHSTID=1.0E-4
|
||||
+CSRHGATD=1.0E-4
|
||||
+XJUNSTID=1.0E-7
|
||||
+XJUNGATD=1.0E-7
|
||||
+CTATBOTD=1.0E+2
|
||||
+CTATSTID=1.0E-4
|
||||
+CTATGATD=1.0E-4
|
||||
+MEFFTATBOTD=0.25
|
||||
+MEFFTATSTID=0.25
|
||||
+MEFFTATGATD=0.25
|
||||
+CBBTBOTD=1.0E-12
|
||||
+CBBTSTID=1.0E-18
|
||||
+CBBTGATD=1.0E-18
|
||||
+FBBTRBOTD=1.0E9
|
||||
+FBBTRSTID=1.0E9
|
||||
+FBBTRGATD=1.0E9
|
||||
+STFBBTBOTD=-1.0E-3
|
||||
+STFBBTSTID=-1.0E-3
|
||||
+STFBBTGATD=-1.0E-3
|
||||
+VBRBOTD=10.0
|
||||
+VBRSTID=10.0
|
||||
+VBRGATD=10.0
|
||||
+PBRBOTD=4
|
||||
+PBRSTID=4
|
||||
+PBRGATD=4
|
||||
|
||||
.end
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
psp nch transfer
|
||||
psp102 nch transfer
|
||||
*
|
||||
vd d 0 dc 0.1
|
||||
vg g 0 dc 0.0
|
||||
|
|
@ -19,207 +19,266 @@ m1 d g s b nch
|
|||
*
|
||||
.option temp=21
|
||||
.control
|
||||
dc vg 0 3.5 0.02 vb -3 0 0.5
|
||||
dc vg 0 2.5 0.02 vb -3 0 0.5
|
||||
plot abs(i(vd))
|
||||
dc vg 0 1.5 0.01 vb -3 0 0.5
|
||||
plot abs(i(vd)) ylog ylimit 1e-12 1e-03
|
||||
.endc
|
||||
*
|
||||
.model nch nmos level=45
|
||||
+type=1.0e+00
|
||||
+tr=21.0e+00
|
||||
+swigate=0.0e+00
|
||||
+swimpact=1.0e+00
|
||||
+swgidl=0.0e+00
|
||||
+swjuncap=0.0e+00
|
||||
+lvaro=0.0e+00
|
||||
+lvarl=0.0e+00
|
||||
+lvarw=0.0e+00
|
||||
+lap=0.0e+00
|
||||
+wvaro=0.0e+00
|
||||
+wvarl=0.0e+00
|
||||
+wvarw=0.0e+00
|
||||
+wot=0.0e+00
|
||||
+vfbo=-1.0e+00
|
||||
+vfbl=0.0e+00
|
||||
+vfbw=0.0e+00
|
||||
+vfblw=0.0e+00
|
||||
+stvfbo=500.0e-06
|
||||
+stvfbl=0.0e+00
|
||||
+stvfbw=0.0e+00
|
||||
+stvfblw=0.0e+00
|
||||
+toxo=2.0e-09
|
||||
+nsubo=300.0e+21
|
||||
+nsubw=0.0e+00
|
||||
+wseg=10.0e-09
|
||||
+npck=1.0e+24
|
||||
+npckw=0.0e+00
|
||||
+wsegp=10.0e-09
|
||||
+lpck=10.0e-09
|
||||
+lpckw=0.0e+00
|
||||
+vnsubo=0.0e+00
|
||||
+nslpo=50.0e-03
|
||||
+dnsubo=0.0e+00
|
||||
+npo=100.0e+24
|
||||
+npl=0.0e+00
|
||||
+qmc=1.0e+00
|
||||
+cto=0.0e+00
|
||||
+ctl=0.0e+00
|
||||
+ctlexp=1.0e+00
|
||||
+ctw=0.0e+00
|
||||
+toxovo=2.0e-09
|
||||
+lov=0.0e+00
|
||||
+novo=50.0e+24
|
||||
+fol1=0.0e+00
|
||||
+fol2=0.0e+00
|
||||
+cfl=0.0e+00
|
||||
+cflexp=2.0e+00
|
||||
+cfw=0.0e+00
|
||||
+cfbo=0.0e+00
|
||||
+uo=50.0e-03
|
||||
+fbet1=0.0e+00
|
||||
+fbet1w=0.0e+00
|
||||
+lp1=10.0e-09
|
||||
+lp1w=0.0e+00
|
||||
+fbet2=0.0e+00
|
||||
+lp2=10.0e-09
|
||||
+betw1=0.0e+00
|
||||
+betw2=0.0e+00
|
||||
+wbet=1.0e-09
|
||||
+stbeto=1.0e+00
|
||||
+stbetl=0.0e+00
|
||||
+stbetw=0.0e+00
|
||||
+stbetlw=0.0e+00
|
||||
+mueo=500.0e-03
|
||||
+muew=0.0e+00
|
||||
+stmueo=0.0e+00
|
||||
+themuo=1.5e+00
|
||||
+stthemuo=1.5e+00
|
||||
+cso=0.0e+00
|
||||
+csw=0.0e+00
|
||||
+stcso=0.0e+00
|
||||
+xcoro=0.0e+00
|
||||
+xcorl=0.0e+00
|
||||
+xcorw=0.0e+00
|
||||
+xcorlw=0.0e+00
|
||||
+stxcoro=0.0e+00
|
||||
+rsw1=2.5e+03
|
||||
+rsw2=0.0e+00
|
||||
+strso=1.0e+00
|
||||
+rsbo=0.0e+00
|
||||
+rsgo=0.0e+00
|
||||
+thesato=0.0e+00
|
||||
+thesatl=50.0e-03
|
||||
+thesatlexp=1.0e+00
|
||||
+thesatw=0.0e+00
|
||||
+stthesato=1.0e+00
|
||||
+stthesatl=0.0e+00
|
||||
+stthesatw=0.0e+00
|
||||
+stthesatlw=0.0e+00
|
||||
+thesatbo=0.0e+00
|
||||
+thesatgo=0.0e+00
|
||||
+axo=18.0e+00
|
||||
+axl=400.0e-03
|
||||
+alpl=500.0e-06
|
||||
+alplexp=1.0e+00
|
||||
+alpw=0.0e+00
|
||||
+alp1l1=0.0e+00
|
||||
+alp1lexp=500.0e-03
|
||||
+alp1l2=0.0e+00
|
||||
+alp1w=0.0e+00
|
||||
+alp2l1=0.0e+00
|
||||
+alp2lexp=0.5e+00
|
||||
+alp2l2=0.0e+00
|
||||
+alp2w=0.0e+00
|
||||
+vpo=50.0e-03
|
||||
+a1o=1.0e+00
|
||||
+a1l=0.0e+00
|
||||
+a1w=0.0e+00
|
||||
+a2o=10.0e+00
|
||||
+sta2o=0.0e+00
|
||||
+a3o=1.0e+00
|
||||
+a3l=0.0e+00
|
||||
+a3w=0.0e+00
|
||||
+a4o=0.0e+00
|
||||
+a4w=0.0e+00
|
||||
+gcoo=0.0e+00
|
||||
+iginvlw=0.0e+00
|
||||
+igovw=0.0e+00
|
||||
+stigo=2.0e+00
|
||||
+gc2o=375.0e-03
|
||||
+gc3o=63.0e-03
|
||||
+chibo=3.1e+00
|
||||
+agidlw=0.0e+00
|
||||
+bgidlo=41.0e+00
|
||||
+stbgidlo=0.0e+00
|
||||
+cgidlo=0.0e+00
|
||||
+cgbovl=0.0e+00
|
||||
+cfrw=0.0e+00
|
||||
+nfalw=80.0e+21
|
||||
+nfblw=30.0e+06
|
||||
+nfclw=0.0e+00
|
||||
+saref=1.0e-06
|
||||
+sbref=1.0e-06
|
||||
+wlod=0.0e+00
|
||||
+kuo=0.0e+00
|
||||
+kvsat=0.0e+00
|
||||
+tkuo=0.0e+00
|
||||
+lkuo=0.0e+00
|
||||
+wkuo=0.0e+00
|
||||
+pkuo=0.0e+00
|
||||
+llodkuo=0.0e+00
|
||||
+wlodkuo=0.0e+00
|
||||
+kvtho=0.0e+00
|
||||
+lkvtho=0.0e+00
|
||||
+wkvtho=0.0e+00
|
||||
+pkvtho=0.0e+00
|
||||
+llodvth=0.0e+00
|
||||
+wlodvth=0.0e+00
|
||||
+stetao=0.0e+00
|
||||
+lodetao=1.0e+00
|
||||
+trj=21.0e+00
|
||||
+imax=1.0e+03
|
||||
+cjorbot=1.0e-03
|
||||
+cjorsti=1.0e-09
|
||||
+cjorgat=1.0e-09
|
||||
+vbirbot=1.0e+00
|
||||
+vbirsti=1.0e+00
|
||||
+vbirgat=1.0e+00
|
||||
+pbot=500.0e-03
|
||||
+psti=500.0e-03
|
||||
+pgat=500.0e-03
|
||||
+phigbot=1.16e+00
|
||||
+phigsti=1.16e+00
|
||||
+phiggat=1.16e+00
|
||||
+idsatrbot=1.0e-12
|
||||
+idsatrsti=1.0e-18
|
||||
+idsatrgat=1.0e-18
|
||||
+csrhbot=100.0e+00
|
||||
+csrhsti=100.0e-06
|
||||
+csrhgat=100.0e-06
|
||||
+xjunsti=100.0e-09
|
||||
+xjungat=100.0e-09
|
||||
+ctatbot=100.0e+00
|
||||
+ctatsti=100.0e-06
|
||||
+ctatgat=100.0e-06
|
||||
+mefftatbot=250.0e-03
|
||||
+mefftatsti=250.0e-03
|
||||
+mefftatgat=250.0e-03
|
||||
+cbbtbot=1.0e-12
|
||||
+cbbtsti=1.0e-18
|
||||
+cbbtgat=1.0e-18
|
||||
+fbbtrbot=1.0e+09
|
||||
+fbbtrsti=1.0e+09
|
||||
+fbbtrgat=1.0e+09
|
||||
+stfbbtbot=-1.0e-03
|
||||
+stfbbtsti=-1.0e-03
|
||||
+stfbbtgat=-1.0e-03
|
||||
+vbrbot=10.0e+00
|
||||
+vbrsti=10.0e+00
|
||||
+vbrgat=10.0e+00
|
||||
+pbrbot=4.0e+00
|
||||
+pbrsti=4.0e+00
|
||||
+pbrgat=4.0e+00
|
||||
+dta=0.0e+00
|
||||
+TR=27.0
|
||||
+swigate=0
|
||||
+swimpact=1
|
||||
+swgidl=0
|
||||
+swjuncap=1
|
||||
+DTA=0
|
||||
+QMC=1.0
|
||||
+LVARO=-10.0E-9
|
||||
+LVARL=0
|
||||
+LVARW=0
|
||||
+LAP=10.0E-9
|
||||
+WVARO=10.0E-9
|
||||
+WVARL=0
|
||||
+WVARW=0
|
||||
+WOT=0
|
||||
+DLQ=0
|
||||
+DWQ=0
|
||||
+VFBO=-1.1
|
||||
+VFBL=0
|
||||
+VFBW=0
|
||||
+VFBLW=0
|
||||
+STVFBO=5.0E-4
|
||||
+STVFBL=0
|
||||
+STVFBW=0
|
||||
+STVFBLW=0
|
||||
+TOXO=1.5E-9
|
||||
+EPSROXO=3.9
|
||||
+NSUBO=3.0E+23
|
||||
+NSUBW=0
|
||||
+WSEG=1.5E-10
|
||||
+NPCK=1.0E+24
|
||||
+NPCKW=0
|
||||
+WSEGP=0.9E-8
|
||||
+LPCK=5.5E-8
|
||||
+LPCKW=0
|
||||
+FOL1=2.0E-2
|
||||
+FOL2=5.0E-6
|
||||
+VNSUBO=0
|
||||
+NSLPO=0.05
|
||||
+DNSUBO=0
|
||||
+DPHIBO=0
|
||||
+DPHIBL=0
|
||||
+DPHIBLEXP=1.0
|
||||
+DPHIBW=0
|
||||
+DPHIBLW=0
|
||||
+NPO=1.5E+26
|
||||
+NPL=10.0E-18
|
||||
+CTO=5.0E-15
|
||||
+CTL=4.0E-2
|
||||
+CTLEXP=0.6
|
||||
+CTW=0
|
||||
+CTLW=0
|
||||
+TOXOVO=1.5E-9
|
||||
+TOXOVDO=2.0E-9
|
||||
+LOV=10.0E-9
|
||||
+LOVD=0
|
||||
+NOVO=7.5E+25
|
||||
+NOVDO=5.0e+25
|
||||
+CFL=3.0E-4
|
||||
+CFLEXP=2.0
|
||||
+CFW=5.0E-3
|
||||
+CFBO=0.3
|
||||
+UO=3.5E-2
|
||||
+FBET1=-0.3
|
||||
+FBET1W=0.15
|
||||
+LP1=1.5E-7
|
||||
+LP1W=-2.5E-2
|
||||
+FBET2=50.0
|
||||
+LP2=8.5E-10
|
||||
+BETW1=5.0E-2
|
||||
+BETW2=-2.0E-2
|
||||
+WBET=5.0E-10
|
||||
+STBETO=1.75
|
||||
+STBETL=-2.0E-2
|
||||
+STBETW=-2.0E-3
|
||||
+STBETLW=-3.0E-3
|
||||
+MUEO=0.6
|
||||
+MUEW=-1.2E-2
|
||||
+STMUEO=0.5
|
||||
+THEMUO=2.75
|
||||
+STTHEMUO=-0.1
|
||||
+CSO=1.0E-2
|
||||
+CSL=0
|
||||
+CSLEXP=1
|
||||
+CSW=0
|
||||
+CSLW=0
|
||||
+STCSO=-5.0
|
||||
+XCORO=0.15
|
||||
+XCORL=2.0E-3
|
||||
+XCORW=-3.0E-2
|
||||
+XCORLW=-3.5E-3
|
||||
+STXCORO=1.25
|
||||
+FETAO=1
|
||||
+RSW1=50
|
||||
+RSW2=5.0E-2
|
||||
+STRSO=-2.0
|
||||
+RSBO=0
|
||||
+RSGO=0
|
||||
+THESATO=1.0E-6
|
||||
+THESATL=0.6
|
||||
+THESATLEXP=0.75
|
||||
+THESATW=-1.0E-2
|
||||
+THESATLW=0
|
||||
+STTHESATO=1.5
|
||||
+STTHESATL=-2.5E-2
|
||||
+STTHESATW=-2.0E-2
|
||||
+STTHESATLW=-5.0E-3
|
||||
+THESATBO=0.15
|
||||
+THESATGO=0.75
|
||||
+AXO=20
|
||||
+AXL=0.2
|
||||
+ALPL=7.0E-3
|
||||
+ALPLEXP=0.6
|
||||
+ALPW=5.0E-2
|
||||
+ALP1L1=2.5E-2
|
||||
+ALP1LEXP=0.4
|
||||
+ALP1L2=0.1
|
||||
+ALP1W=8.5E-3
|
||||
+ALP2L1=0.5
|
||||
+ALP2LEXP=0
|
||||
+ALP2L2=0.5
|
||||
+ALP2W=-0.2
|
||||
+VPO=0.25
|
||||
+A1O=1.0
|
||||
+A1L=0
|
||||
+A1W=0
|
||||
+A2O=10.0
|
||||
+STA2O=-0.5
|
||||
+A3O=1.0
|
||||
+A3L=0
|
||||
+A3W=0
|
||||
+A4O=0
|
||||
+A4L=0
|
||||
+A4W=0
|
||||
+GCOO=5.0
|
||||
+IGINVLW=50.0
|
||||
+IGOVW=10.0
|
||||
+IGOVDW=0
|
||||
+STIGO=1.5
|
||||
+GC2O=1.0
|
||||
+GC3O=-1.0
|
||||
+CHIBO=3.1
|
||||
+AGIDLW=50.0
|
||||
+AGIDLDW=0
|
||||
+BGIDLO=35.0
|
||||
+BGIDLDO=41
|
||||
+STBGIDLO=-5.0E-4
|
||||
+STBGIDLDO=0
|
||||
+CGIDLO=0.15
|
||||
+CGIDLDO=0
|
||||
+CGBOVL=0
|
||||
+CFRW=5.0E-17
|
||||
+CFRDW=0
|
||||
+FNTO=1
|
||||
+NFALW=8.0E+22
|
||||
+NFBLW=3.0E7
|
||||
+NFCLW=0
|
||||
+RGO=0
|
||||
+RINT=0
|
||||
+RVPOLY=0
|
||||
+RSHG=0
|
||||
+DLSIL=0
|
||||
+RBULKO=0
|
||||
+RWELLO=0
|
||||
+RJUNDO=0
|
||||
+RJUNSO=0
|
||||
+TRJ=27.0
|
||||
+IMAX=1.0E3
|
||||
+VJUNREF=2.5
|
||||
+FJUNQ=0.03
|
||||
+CJORBOT=1.0E-3
|
||||
+CJORSTI=1.0E-9
|
||||
+CJORGAT=0.5E-9
|
||||
+VBIRBOT=0.75
|
||||
+VBIRSTI=1.0
|
||||
+VBIRGAT=0.75
|
||||
+PBOT=0.35
|
||||
+PSTI=0.35
|
||||
+PGAT=0.6
|
||||
+PHIGBOT=1.16
|
||||
+PHIGSTI=1.16
|
||||
+PHIGGAT=1.16
|
||||
+IDSATRBOT=5.0E-9
|
||||
+IDSATRSTI=1.0E-18
|
||||
+IDSATRGAT=1.0E-18
|
||||
+CSRHBOT=5.0E2
|
||||
+CSRHSTI=0
|
||||
+CSRHGAT=1.0E3
|
||||
+XJUNSTI=1.0E-8
|
||||
+XJUNGAT=1.0E-9
|
||||
+CTATBOT=5.0E2
|
||||
+CTATSTI=0
|
||||
+CTATGAT=1.0E3
|
||||
+MEFFTATBOT=0.25
|
||||
+MEFFTATSTI=0.25
|
||||
+MEFFTATGAT=0.25
|
||||
+CBBTBOT=1.0E-12
|
||||
+CBBTSTI=1.0E-18
|
||||
+CBBTGAT=1.0E-18
|
||||
+FBBTRBOT=1.0E9
|
||||
+FBBTRSTI=1.0E9
|
||||
+FBBTRGAT=1.0E9
|
||||
+STFBBTBOT=-1.0E-3
|
||||
+STFBBTSTI=-1.0E-3
|
||||
+STFBBTGAT=-1.0E-2
|
||||
+VBRBOT=10.0
|
||||
+VBRSTI=10.0
|
||||
+VBRGAT=10.0
|
||||
+PBRBOT=3
|
||||
+PBRSTI=4
|
||||
+PBRGAT=3
|
||||
+VJUNREFD=2.5
|
||||
+FJUNQD=0.03
|
||||
+CJORBOTD=1.0E-3
|
||||
+CJORSTID=1.0E-9
|
||||
+CJORGATD=1.0E-9
|
||||
+VBIRBOTD=1.0
|
||||
+VBIRSTID=1.0
|
||||
+VBIRGATD=1.0
|
||||
+PBOTD=0.5
|
||||
+PSTID=0.5
|
||||
+PGATD=0.5
|
||||
+PHIGBOTD=1.16
|
||||
+PHIGSTID=1.16
|
||||
+PHIGGATD=1.16
|
||||
+IDSATRBOTD=1.0E-12
|
||||
+IDSATRSTID=1.0E-18
|
||||
+IDSATRGATD=1.0E-18
|
||||
+CSRHBOTD=1.0E+2
|
||||
+CSRHSTID=1.0E-4
|
||||
+CSRHGATD=1.0E-4
|
||||
+XJUNSTID=1.0E-7
|
||||
+XJUNGATD=1.0E-7
|
||||
+CTATBOTD=1.0E+2
|
||||
+CTATSTID=1.0E-4
|
||||
+CTATGATD=1.0E-4
|
||||
+MEFFTATBOTD=0.25
|
||||
+MEFFTATSTID=0.25
|
||||
+MEFFTATGATD=0.25
|
||||
+CBBTBOTD=1.0E-12
|
||||
+CBBTSTID=1.0E-18
|
||||
+CBBTGATD=1.0E-18
|
||||
+FBBTRBOTD=1.0E9
|
||||
+FBBTRSTID=1.0E9
|
||||
+FBBTRGATD=1.0E9
|
||||
+STFBBTBOTD=-1.0E-3
|
||||
+STFBBTSTID=-1.0E-3
|
||||
+STFBBTGATD=-1.0E-3
|
||||
+VBRBOTD=10.0
|
||||
+VBRSTID=10.0
|
||||
+VBRGATD=10.0
|
||||
+PBRBOTD=4
|
||||
+PBRSTID=4
|
||||
+PBRGATD=4
|
||||
|
||||
.end
|
||||
|
|
|
|||
|
|
@ -1,18 +1,25 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: SIMKIT_macrodefs.include
|
||||
// Filename: Common102_macrodefs.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.1, April 2007 (Simkit 2.5)
|
||||
// Version: 102.5.0 (PSP), 200.4.0 (JUNCAP), December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
|
@ -36,15 +43,16 @@
|
|||
// Note 2: In this va-code, the "from" keyword in the parameter
|
||||
// list is not used. Silent clipping is used instead. One could enable
|
||||
// the Verilog-A range checking by redefining the `from-macro below.
|
||||
`define P(txt)
|
||||
`ifdef insideADMS
|
||||
`define from(lower,upper) from[lower:upper]
|
||||
`define P(txt) (*txt*)
|
||||
`define INITIAL_MODEL @(initial_model)
|
||||
`define INITIAL_INSTANCE @(initial_instance)
|
||||
`define from(lower,upper) from [lower:upper]
|
||||
`else
|
||||
`define from(lower,upper)
|
||||
`define P(txt)
|
||||
`define INITIAL_MODEL
|
||||
`define INITIAL_INSTANCE
|
||||
`define from(lower,upper)
|
||||
`endif
|
||||
|
||||
// Some functions
|
||||
|
|
@ -61,7 +69,8 @@
|
|||
`define QELE 1.6021918E-19
|
||||
`define HBAR 1.05457168E-34
|
||||
`define MELE 9.1093826E-31
|
||||
`define EPSSI 1.045E-10
|
||||
`define EPSO 8.8541878176E-12
|
||||
`define EPSRSI 11.8
|
||||
|
||||
// Other constants
|
||||
`define oneThird 3.3333333333333333e-01
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
PSP Acknowledgement and Copyright Notice
|
||||
========================================
|
||||
|
||||
Copyrights of PSP are with NXP Semiconductors, Delft University of
|
||||
Technology (since 2012) and Arizona State University (until and
|
||||
including 2011).
|
||||
|
||||
Since 2012 until today PSP has been co-developed by NXP Semiconductors
|
||||
and Delft University of Technology. Until and including 2011 PSP has
|
||||
been co-developed by NXP Semiconductors and Arizona State University.
|
||||
|
||||
See also: http://psp.ewi.tudelft.nl/page_Copyright_Disclaimer.php
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
INTELLECTUAL PROPERTY NOTICE, DISCLAIMER AND LICENSE
|
||||
|
||||
The compact model software and documentation presented at this website
|
||||
form a whole that will henceforth be denoted as the "Model".
|
||||
|
||||
The Model presented at this website has been co-developed by NXP
|
||||
Semiconductors and Arizona State University until and including 2011.
|
||||
For this part of the Model, NXP Semiconductors claims undivided
|
||||
ownership and copyrights.
|
||||
|
||||
Since 2012 until today the Model has been co-developed by
|
||||
NXP Semiconductors and Delft University of Technology and
|
||||
for this part each claim undivided ownership and copyrights.
|
||||
|
||||
|
||||
DISCLAIMER
|
||||
|
||||
The owners are fully free to further develop, adapt and extend the
|
||||
Model as they judge necessary or desirable.
|
||||
|
||||
The Model is distributed as is, completely without any express or
|
||||
implied warranty, or service support. The owners and their employees
|
||||
are not liable in any way for the condition or performance of the
|
||||
Model. The owners hereby disclaim all implied warranties.
|
||||
|
||||
|
||||
LICENSE
|
||||
|
||||
|
||||
NXP Semiconductors and Delft University of Technology hereby grant
|
||||
users a perpetual, irrevocable, worldwide, non-exclusive, royalty-free
|
||||
license with respect to Versions of the Model which have been released
|
||||
through this website http://psp.ewi.tudelft.nl.
|
||||
|
||||
NXP Semiconductors and Delft University of Technology grant the users
|
||||
the right to modify, copy and redistribute the Model, both within the
|
||||
user's organization and externally, subject to the following
|
||||
restrictions.
|
||||
|
||||
|
||||
RESTRICTIONS
|
||||
|
||||
1. The users agree not to charge for the Model itself but may
|
||||
charge for additions, extensions, or support.
|
||||
|
||||
2. In any product based on the Model, the users agree to acknowledge
|
||||
the owners as developers of the Model. This acknowledgment shall
|
||||
appear in the product documentation.
|
||||
|
||||
3. The users agree to only use the name of CMC standard models to
|
||||
identify implementations of the CMC standard models which produce the
|
||||
same outputs as Standard code for the same inputs passing all CMC QA
|
||||
tests.
|
||||
|
||||
4. The users agree to obey all government restrictions governing
|
||||
redistribution or export of the software.
|
||||
|
||||
5. The users agree to reproduce any copyright notice which appears on
|
||||
the software and documentation on any copy or modification of such
|
||||
made available to others.
|
||||
|
||||
|
||||
|
|
@ -4,58 +4,179 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.1 (PSP), 200.2 (JUNCAP), April 2007 (Simkit 2.5)
|
||||
// Version: 102.5.0 (PSP), 200.4.0 (JUNCAP), December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Calculation of internal paramters which are independent
|
||||
// Calculation of internal parameters which are independent
|
||||
// on instance parameters
|
||||
//
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
TRJ_i = `CLIP_LOW( TRJ , `TRJ_cliplow);
|
||||
IMAX_i = `CLIP_LOW( IMAX , `IMAX_cliplow);
|
||||
CJORBOT_i = `CLIP_LOW( CJORBOT , `CJORBOT_cliplow);
|
||||
CJORSTI_i = `CLIP_LOW( CJORSTI , `CJORSTI_cliplow);
|
||||
CJORGAT_i = `CLIP_LOW( CJORGAT , `CJORGAT_cliplow);
|
||||
VBIRBOT_i = `CLIP_LOW( VBIRBOT , `VBIR_cliplow);
|
||||
VBIRSTI_i = `CLIP_LOW( VBIRSTI , `VBIR_cliplow);
|
||||
VBIRGAT_i = `CLIP_LOW( VBIRGAT , `VBIR_cliplow);
|
||||
PBOT_i = `CLIP_BOTH(PBOT , `P_cliplow,`P_cliphigh);
|
||||
PSTI_i = `CLIP_BOTH(PSTI , `P_cliplow,`P_cliphigh);
|
||||
PGAT_i = `CLIP_BOTH(PGAT , `P_cliplow,`P_cliphigh);
|
||||
IDSATRBOT_i = `CLIP_LOW( IDSATRBOT , `IDSATR_cliplow);
|
||||
IDSATRSTI_i = `CLIP_LOW( IDSATRSTI , `IDSATR_cliplow);
|
||||
IDSATRGAT_i = `CLIP_LOW( IDSATRGAT , `IDSATR_cliplow);
|
||||
CSRHBOT_i = `CLIP_LOW( CSRHBOT , `CSRH_cliplow);
|
||||
CSRHSTI_i = `CLIP_LOW( CSRHSTI , `CSRH_cliplow);
|
||||
CSRHGAT_i = `CLIP_LOW( CSRHGAT , `CSRH_cliplow);
|
||||
XJUNSTI_i = `CLIP_LOW( XJUNSTI , `XJUN_cliplow);
|
||||
XJUNGAT_i = `CLIP_LOW( XJUNGAT , `XJUN_cliplow);
|
||||
CTATBOT_i = `CLIP_LOW( CTATBOT , `CTAT_cliplow);
|
||||
CTATSTI_i = `CLIP_LOW( CTATSTI , `CTAT_cliplow);
|
||||
CTATGAT_i = `CLIP_LOW( CTATGAT , `CTAT_cliplow);
|
||||
MEFFTATBOT_i = `CLIP_LOW( MEFFTATBOT, `MEFFTAT_cliplow);
|
||||
MEFFTATSTI_i = `CLIP_LOW( MEFFTATSTI, `MEFFTAT_cliplow);
|
||||
MEFFTATGAT_i = `CLIP_LOW( MEFFTATGAT, `MEFFTAT_cliplow);
|
||||
CBBTBOT_i = `CLIP_LOW( CBBTBOT , `CBBT_cliplow);
|
||||
CBBTSTI_i = `CLIP_LOW( CBBTSTI , `CBBT_cliplow);
|
||||
CBBTGAT_i = `CLIP_LOW( CBBTGAT , `CBBT_cliplow);
|
||||
VBRBOT_i = `CLIP_LOW( VBRBOT , `VBR_cliplow);
|
||||
VBRSTI_i = `CLIP_LOW( VBRSTI , `VBR_cliplow);
|
||||
VBRGAT_i = `CLIP_LOW( VBRGAT , `VBR_cliplow);
|
||||
PBRBOT_i = `CLIP_LOW( PBRBOT , `PBR_cliplow);
|
||||
PBRSTI_i = `CLIP_LOW( PBRSTI , `PBR_cliplow);
|
||||
PBRGAT_i = `CLIP_LOW( PBRGAT , `PBR_cliplow);
|
||||
TRJ_i = `CLIP_LOW( TRJ , `TRJ_cliplow);
|
||||
IMAX_i = `CLIP_LOW( IMAX , `IMAX_cliplow);
|
||||
|
||||
CJORBOT_i = `CLIP_LOW( CJORBOT , `CJORBOT_cliplow);
|
||||
CJORSTI_i = `CLIP_LOW( CJORSTI , `CJORSTI_cliplow);
|
||||
CJORGAT_i = `CLIP_LOW( CJORGAT , `CJORGAT_cliplow);
|
||||
VBIRBOT_i = `CLIP_LOW( VBIRBOT , `VBIR_cliplow);
|
||||
VBIRSTI_i = `CLIP_LOW( VBIRSTI , `VBIR_cliplow);
|
||||
VBIRGAT_i = `CLIP_LOW( VBIRGAT , `VBIR_cliplow);
|
||||
PBOT_i = `CLIP_BOTH(PBOT , `P_cliplow,`P_cliphigh);
|
||||
PSTI_i = `CLIP_BOTH(PSTI , `P_cliplow,`P_cliphigh);
|
||||
PGAT_i = `CLIP_BOTH(PGAT , `P_cliplow,`P_cliphigh);
|
||||
PHIGBOT_i = PHIGBOT;
|
||||
PHIGSTI_i = PHIGSTI;
|
||||
PHIGGAT_i = PHIGGAT;
|
||||
IDSATRBOT_i = `CLIP_LOW( IDSATRBOT , `IDSATR_cliplow);
|
||||
IDSATRSTI_i = `CLIP_LOW( IDSATRSTI , `IDSATR_cliplow);
|
||||
IDSATRGAT_i = `CLIP_LOW( IDSATRGAT , `IDSATR_cliplow);
|
||||
CSRHBOT_i = `CLIP_LOW( CSRHBOT , `CSRH_cliplow);
|
||||
CSRHSTI_i = `CLIP_LOW( CSRHSTI , `CSRH_cliplow);
|
||||
CSRHGAT_i = `CLIP_LOW( CSRHGAT , `CSRH_cliplow);
|
||||
XJUNSTI_i = `CLIP_LOW( XJUNSTI , `XJUN_cliplow);
|
||||
XJUNGAT_i = `CLIP_LOW( XJUNGAT , `XJUN_cliplow);
|
||||
CTATBOT_i = `CLIP_LOW( CTATBOT , `CTAT_cliplow);
|
||||
CTATSTI_i = `CLIP_LOW( CTATSTI , `CTAT_cliplow);
|
||||
CTATGAT_i = `CLIP_LOW( CTATGAT , `CTAT_cliplow);
|
||||
MEFFTATBOT_i = `CLIP_LOW( MEFFTATBOT , `MEFFTAT_cliplow);
|
||||
MEFFTATSTI_i = `CLIP_LOW( MEFFTATSTI , `MEFFTAT_cliplow);
|
||||
MEFFTATGAT_i = `CLIP_LOW( MEFFTATGAT , `MEFFTAT_cliplow);
|
||||
CBBTBOT_i = `CLIP_LOW( CBBTBOT , `CBBT_cliplow);
|
||||
CBBTSTI_i = `CLIP_LOW( CBBTSTI , `CBBT_cliplow);
|
||||
CBBTGAT_i = `CLIP_LOW( CBBTGAT , `CBBT_cliplow);
|
||||
FBBTRBOT_i = FBBTRBOT;
|
||||
FBBTRSTI_i = FBBTRSTI;
|
||||
FBBTRGAT_i = FBBTRGAT;
|
||||
STFBBTBOT_i = STFBBTBOT;
|
||||
STFBBTSTI_i = STFBBTSTI;
|
||||
STFBBTGAT_i = STFBBTGAT;
|
||||
VBRBOT_i = `CLIP_LOW( VBRBOT , `VBR_cliplow);
|
||||
VBRSTI_i = `CLIP_LOW( VBRSTI , `VBR_cliplow);
|
||||
VBRGAT_i = `CLIP_LOW( VBRGAT , `VBR_cliplow);
|
||||
PBRBOT_i = `CLIP_LOW( PBRBOT , `PBR_cliplow);
|
||||
PBRSTI_i = `CLIP_LOW( PBRSTI , `PBR_cliplow);
|
||||
PBRGAT_i = `CLIP_LOW( PBRGAT , `PBR_cliplow);
|
||||
|
||||
SWJUNEXP_i = 0.0;
|
||||
if (SWJUNEXP > 0.5) begin
|
||||
SWJUNEXP_i = 1.0;
|
||||
end else begin
|
||||
SWJUNEXP_i = 0.0;
|
||||
end
|
||||
|
||||
VJUNREF_i = `CLIP_LOW( VJUNREF , `VJUNREF_cliplow);
|
||||
FJUNQ_i = `CLIP_LOW( FJUNQ , `FJUNQ_cliplow);
|
||||
|
||||
`ifdef JUNCAP_StandAlone
|
||||
// do nothing
|
||||
`else // JUNCAP_StandAlone
|
||||
if (SWJUNASYM == 0.0) begin
|
||||
CJORBOTD_i = CJORBOT_i;
|
||||
CJORSTID_i = CJORSTI_i;
|
||||
CJORGATD_i = CJORGAT_i;
|
||||
VBIRBOTD_i = VBIRBOT_i;
|
||||
VBIRSTID_i = VBIRSTI_i;
|
||||
VBIRGATD_i = VBIRGAT_i;
|
||||
PBOTD_i = PBOT_i;
|
||||
PSTID_i = PSTI_i;
|
||||
PGATD_i = PGAT_i;
|
||||
PHIGBOTD_i = PHIGBOT_i;
|
||||
PHIGSTID_i = PHIGSTI_i;
|
||||
PHIGGATD_i = PHIGGAT_i;
|
||||
IDSATRBOTD_i = IDSATRBOT_i;
|
||||
IDSATRSTID_i = IDSATRSTI_i;
|
||||
IDSATRGATD_i = IDSATRGAT_i;
|
||||
CSRHBOTD_i = CSRHBOT_i;
|
||||
CSRHSTID_i = CSRHSTI_i;
|
||||
CSRHGATD_i = CSRHGAT_i;
|
||||
XJUNSTID_i = XJUNSTI_i;
|
||||
XJUNGATD_i = XJUNGAT_i;
|
||||
CTATBOTD_i = CTATBOT_i;
|
||||
CTATSTID_i = CTATSTI_i;
|
||||
CTATGATD_i = CTATGAT_i;
|
||||
MEFFTATBOTD_i = MEFFTATBOT_i;
|
||||
MEFFTATSTID_i = MEFFTATSTI_i;
|
||||
MEFFTATGATD_i = MEFFTATGAT_i;
|
||||
CBBTBOTD_i = CBBTBOT_i;
|
||||
CBBTSTID_i = CBBTSTI_i;
|
||||
CBBTGATD_i = CBBTGAT_i;
|
||||
FBBTRBOTD_i = FBBTRBOT_i;
|
||||
FBBTRSTID_i = FBBTRSTI_i;
|
||||
FBBTRGATD_i = FBBTRGAT_i;
|
||||
STFBBTBOTD_i = STFBBTBOT_i;
|
||||
STFBBTSTID_i = STFBBTSTI_i;
|
||||
STFBBTGATD_i = STFBBTGAT_i;
|
||||
VBRBOTD_i = VBRBOT_i;
|
||||
VBRSTID_i = VBRSTI_i;
|
||||
VBRGATD_i = VBRGAT_i;
|
||||
PBRBOTD_i = PBRBOT_i;
|
||||
PBRSTID_i = PBRSTI_i;
|
||||
PBRGATD_i = PBRGAT_i;
|
||||
VJUNREFD_i = VJUNREF_i;
|
||||
FJUNQD_i = FJUNQ_i;
|
||||
end else begin
|
||||
CJORBOTD_i = `CLIP_LOW( CJORBOTD , `CJORBOT_cliplow);
|
||||
CJORSTID_i = `CLIP_LOW( CJORSTID , `CJORSTI_cliplow);
|
||||
CJORGATD_i = `CLIP_LOW( CJORGATD , `CJORGAT_cliplow);
|
||||
VBIRBOTD_i = `CLIP_LOW( VBIRBOTD , `VBIR_cliplow);
|
||||
VBIRSTID_i = `CLIP_LOW( VBIRSTID , `VBIR_cliplow);
|
||||
VBIRGATD_i = `CLIP_LOW( VBIRGATD , `VBIR_cliplow);
|
||||
PBOTD_i = `CLIP_BOTH(PBOTD , `P_cliplow,`P_cliphigh);
|
||||
PSTID_i = `CLIP_BOTH(PSTID , `P_cliplow,`P_cliphigh);
|
||||
PGATD_i = `CLIP_BOTH(PGATD , `P_cliplow,`P_cliphigh);
|
||||
PHIGBOTD_i = PHIGBOTD;
|
||||
PHIGSTID_i = PHIGSTID;
|
||||
PHIGGATD_i = PHIGGATD;
|
||||
IDSATRBOTD_i = `CLIP_LOW( IDSATRBOTD , `IDSATR_cliplow);
|
||||
IDSATRSTID_i = `CLIP_LOW( IDSATRSTID , `IDSATR_cliplow);
|
||||
IDSATRGATD_i = `CLIP_LOW( IDSATRGATD , `IDSATR_cliplow);
|
||||
CSRHBOTD_i = `CLIP_LOW( CSRHBOTD , `CSRH_cliplow);
|
||||
CSRHSTID_i = `CLIP_LOW( CSRHSTID , `CSRH_cliplow);
|
||||
CSRHGATD_i = `CLIP_LOW( CSRHGATD , `CSRH_cliplow);
|
||||
XJUNSTID_i = `CLIP_LOW( XJUNSTID , `XJUN_cliplow);
|
||||
XJUNGATD_i = `CLIP_LOW( XJUNGATD , `XJUN_cliplow);
|
||||
CTATBOTD_i = `CLIP_LOW( CTATBOTD , `CTAT_cliplow);
|
||||
CTATSTID_i = `CLIP_LOW( CTATSTID , `CTAT_cliplow);
|
||||
CTATGATD_i = `CLIP_LOW( CTATGATD , `CTAT_cliplow);
|
||||
MEFFTATBOTD_i = `CLIP_LOW( MEFFTATBOTD, `MEFFTAT_cliplow);
|
||||
MEFFTATSTID_i = `CLIP_LOW( MEFFTATSTID, `MEFFTAT_cliplow);
|
||||
MEFFTATGATD_i = `CLIP_LOW( MEFFTATGATD, `MEFFTAT_cliplow);
|
||||
CBBTBOTD_i = `CLIP_LOW( CBBTBOTD , `CBBT_cliplow);
|
||||
CBBTSTID_i = `CLIP_LOW( CBBTSTID , `CBBT_cliplow);
|
||||
CBBTGATD_i = `CLIP_LOW( CBBTGATD , `CBBT_cliplow);
|
||||
FBBTRBOTD_i = FBBTRBOTD;
|
||||
FBBTRSTID_i = FBBTRSTID;
|
||||
FBBTRGATD_i = FBBTRGATD;
|
||||
STFBBTBOTD_i = STFBBTBOTD;
|
||||
STFBBTSTID_i = STFBBTSTID;
|
||||
STFBBTGATD_i = STFBBTGATD;
|
||||
VBRBOTD_i = `CLIP_LOW( VBRBOTD , `VBR_cliplow);
|
||||
VBRSTID_i = `CLIP_LOW( VBRSTID , `VBR_cliplow);
|
||||
VBRGATD_i = `CLIP_LOW( VBRGATD , `VBR_cliplow);
|
||||
PBRBOTD_i = `CLIP_LOW( PBRBOTD , `PBR_cliplow);
|
||||
PBRSTID_i = `CLIP_LOW( PBRSTID , `PBR_cliplow);
|
||||
PBRGATD_i = `CLIP_LOW( PBRGATD , `PBR_cliplow);
|
||||
VJUNREFD_i = `CLIP_LOW( VJUNREFD , `VJUNREF_cliplow);
|
||||
FJUNQD_i = `CLIP_LOW( FJUNQD , `FJUNQ_cliplow);
|
||||
end
|
||||
`endif // JUNCAP_StandAlone
|
||||
|
||||
tkr = `KELVINCONVERSION + TRJ_i;
|
||||
tkd = max($temperature + DTA, `KELVINCONVERSION + `MINTEMP);
|
||||
|
|
@ -67,26 +188,26 @@ phitd = KBOL_over_QELE * tkd;
|
|||
phitdinv = 1.0 / phitd;
|
||||
|
||||
// bandgap voltages at reference temperature
|
||||
deltaphigr = -(7.02e-4 * tkr * tkr) / (1108.0 + tkr);
|
||||
phigrbot = PHIGBOT + deltaphigr;
|
||||
phigrsti = PHIGSTI + deltaphigr;
|
||||
phigrgat = PHIGGAT + deltaphigr;
|
||||
deltaphigr = -(7.02e-4 * tkr * tkr) / (1108.0 + tkr);
|
||||
phigrbot = PHIGBOT_i + deltaphigr;
|
||||
phigrsti = PHIGSTI_i + deltaphigr;
|
||||
phigrgat = PHIGGAT_i + deltaphigr;
|
||||
|
||||
// bandgap voltages at device temperature
|
||||
deltaphigd = -(7.02e-4 * tkd * tkd) / (1108.0 + tkd);
|
||||
phigdbot = PHIGBOT + deltaphigd;
|
||||
phigdsti = PHIGSTI + deltaphigd;
|
||||
phigdgat = PHIGGAT + deltaphigd;
|
||||
deltaphigd = -(7.02e-4 * tkd * tkd) / (1108.0 + tkd);
|
||||
phigdbot = PHIGBOT_i + deltaphigd;
|
||||
phigdsti = PHIGSTI_i + deltaphigd;
|
||||
phigdgat = PHIGGAT_i + deltaphigd;
|
||||
|
||||
// factors ftd for ideal-current model
|
||||
ftdbot = (pow(auxt, 1.5)) * exp(0.5 * ((phigrbot * phitrinv) - (phigdbot * phitdinv)));
|
||||
ftdsti = (pow(auxt, 1.5)) * exp(0.5 * ((phigrsti * phitrinv) - (phigdsti * phitdinv)));
|
||||
ftdgat = (pow(auxt, 1.5)) * exp(0.5 * ((phigrgat * phitrinv) - (phigdgat * phitdinv)));
|
||||
ftdbot = (pow(auxt, 1.5)) * exp(0.5 * ((phigrbot * phitrinv) - (phigdbot * phitdinv)));
|
||||
ftdsti = (pow(auxt, 1.5)) * exp(0.5 * ((phigrsti * phitrinv) - (phigdsti * phitdinv)));
|
||||
ftdgat = (pow(auxt, 1.5)) * exp(0.5 * ((phigrgat * phitrinv) - (phigdgat * phitdinv)));
|
||||
|
||||
// temperature-scaled saturation current for ideal-current model
|
||||
idsatbot = IDSATRBOT_i * ftdbot * ftdbot;
|
||||
idsatsti = IDSATRSTI_i * ftdsti * ftdsti;
|
||||
idsatgat = IDSATRGAT_i * ftdgat * ftdgat;
|
||||
idsatbot = IDSATRBOT_i * ftdbot * ftdbot;
|
||||
idsatsti = IDSATRSTI_i * ftdsti * ftdsti;
|
||||
idsatgat = IDSATRGAT_i * ftdgat * ftdgat;
|
||||
|
||||
// built-in voltages before limiting
|
||||
ubibot = VBIRBOT_i * auxt - 2 * phitd * ln(ftdbot);
|
||||
|
|
@ -129,9 +250,9 @@ qpref2sti = `a * cjosti;
|
|||
qpref2gat = `a * cjogat;
|
||||
|
||||
// zero-bias depletion widths at reference temperature, needed in SRH and TAT model
|
||||
wdepnulrbot = `EPSSI / CJORBOT_i;
|
||||
wdepnulrsti = XJUNSTI_i * `EPSSI / CJORSTI_i;
|
||||
wdepnulrgat = XJUNGAT_i * `EPSSI / CJORGAT_i;
|
||||
wdepnulrbot = EPSSI / CJORBOT_i;
|
||||
wdepnulrsti = XJUNSTI_i * EPSSI / CJORSTI_i;
|
||||
wdepnulrgat = XJUNGAT_i * EPSSI / CJORGAT_i;
|
||||
|
||||
// inverse values of "wdepnulr", used in BBT model
|
||||
wdepnulrinvbot = 1 / wdepnulrbot;
|
||||
|
|
@ -145,7 +266,7 @@ VBIRGATinv = 1 / VBIRGAT_i;
|
|||
|
||||
// some constants needed in erfc-approximation, needed in TAT model
|
||||
perfc = (`SQRTPI * `aerfc);
|
||||
berfc = ((-5 * (`aerfc) + 6 - pow((perfc), -2)) / 3);
|
||||
berfc = ((-5 * (`aerfc) + 6 - pow((perfc), -2)) / 3.0);
|
||||
cerfc = (1.0 - (`aerfc) - (berfc));
|
||||
|
||||
// half the bandgap energy, limited to values > phitd, needed in TAT model
|
||||
|
|
@ -164,9 +285,12 @@ btatpartsti = sqrt(32 * MEFFTATSTI_i * `MELE * `QELE * (deltaEsti * deltaEsti
|
|||
btatpartgat = sqrt(32 * MEFFTATGAT_i * `MELE * `QELE * (deltaEgat * deltaEgat * deltaEgat)) / (3 * `HBAR);
|
||||
|
||||
// temperature-scaled values of FBBT, needed in BBT model
|
||||
fbbtbot = FBBTRBOT * (1 + STFBBTBOT * (tkd - tkr));
|
||||
fbbtsti = FBBTRSTI * (1 + STFBBTSTI * (tkd - tkr));
|
||||
fbbtgat = FBBTRGAT * (1 + STFBBTGAT * (tkd - tkr));
|
||||
fbbtbot = FBBTRBOT_i * (1 + STFBBTBOT_i * (tkd - tkr));
|
||||
fbbtsti = FBBTRSTI_i * (1 + STFBBTSTI_i * (tkd - tkr));
|
||||
fbbtgat = FBBTRGAT_i * (1 + STFBBTGAT_i * (tkd - tkr));
|
||||
fbbtbot = `CLIP_LOW(fbbtbot, 0);
|
||||
fbbtsti = `CLIP_LOW(fbbtsti, 0);
|
||||
fbbtgat = `CLIP_LOW(fbbtgat, 0);
|
||||
|
||||
// values of fstop, needed in avalanche/breakdown model
|
||||
fstopbot = 1 / (1 - pow(`alphaav, PBRBOT_i));
|
||||
|
|
@ -178,7 +302,103 @@ VBRinvbot = 1 / VBRBOT_i;
|
|||
VBRinvsti = 1 / VBRSTI_i;
|
||||
VBRinvgat = 1 / VBRGAT_i;
|
||||
|
||||
// slopes for linear extraploation close to and beyond breakdown, needed in avalanche/breakdown model
|
||||
// slopes for linear extrapolation close to and beyond breakdown, needed in avalanche/breakdown model
|
||||
slopebot = -(fstopbot * fstopbot * pow(`alphaav, (PBRBOT_i - 1))) * PBRBOT_i * VBRinvbot;
|
||||
slopesti = -(fstopsti * fstopsti * pow(`alphaav, (PBRSTI_i - 1))) * PBRSTI_i * VBRinvsti;
|
||||
slopegat = -(fstopgat * fstopgat * pow(`alphaav, (PBRGAT_i - 1))) * PBRGAT_i * VBRinvgat;
|
||||
|
||||
|
||||
`ifdef JUNCAP_StandAlone
|
||||
// do nothing
|
||||
`else // JUNCAP_StandAlone
|
||||
phigrbot_d = PHIGBOTD_i + deltaphigr;
|
||||
phigrsti_d = PHIGSTID_i + deltaphigr;
|
||||
phigrgat_d = PHIGGATD_i + deltaphigr;
|
||||
|
||||
phigdbot_d = PHIGBOTD_i + deltaphigd;
|
||||
phigdsti_d = PHIGSTID_i + deltaphigd;
|
||||
phigdgat_d = PHIGGATD_i + deltaphigd;
|
||||
|
||||
ftdbot_d = (pow(auxt, 1.5)) * exp(0.5 * ((phigrbot_d * phitrinv) - (phigdbot_d * phitdinv)));
|
||||
ftdsti_d = (pow(auxt, 1.5)) * exp(0.5 * ((phigrsti_d * phitrinv) - (phigdsti_d * phitdinv)));
|
||||
ftdgat_d = (pow(auxt, 1.5)) * exp(0.5 * ((phigrgat_d * phitrinv) - (phigdgat_d * phitdinv)));
|
||||
|
||||
idsatbot_d = IDSATRBOTD_i * ftdbot_d * ftdbot_d;
|
||||
idsatsti_d = IDSATRSTID_i * ftdsti_d * ftdsti_d;
|
||||
idsatgat_d = IDSATRGATD_i * ftdgat_d * ftdgat_d;
|
||||
|
||||
ubibot_d = VBIRBOTD_i * auxt - 2 * phitd * ln(ftdbot_d);
|
||||
ubisti_d = VBIRSTID_i * auxt - 2 * phitd * ln(ftdsti_d);
|
||||
ubigat_d = VBIRGATD_i * auxt - 2 * phitd * ln(ftdgat_d);
|
||||
|
||||
vbibot_d = ubibot_d + phitd * ln(1 + exp((`vbilow - ubibot_d) * phitdinv));
|
||||
vbisti_d = ubisti_d + phitd * ln(1 + exp((`vbilow - ubisti_d) * phitdinv));
|
||||
vbigat_d = ubigat_d + phitd * ln(1 + exp((`vbilow - ubigat_d) * phitdinv));
|
||||
|
||||
vbiinvbot_d = 1.0 / vbibot_d;
|
||||
vbiinvsti_d = 1.0 / vbisti_d;
|
||||
vbiinvgat_d = 1.0 / vbigat_d;
|
||||
|
||||
one_minus_PBOT_d = 1 - PBOTD_i;
|
||||
one_minus_PSTI_d = 1 - PSTID_i;
|
||||
one_minus_PGAT_d = 1 - PGATD_i;
|
||||
|
||||
one_over_one_minus_PBOT_d = 1 / one_minus_PBOT_d;
|
||||
one_over_one_minus_PSTI_d = 1 / one_minus_PSTI_d;
|
||||
one_over_one_minus_PGAT_d = 1 / one_minus_PGAT_d;
|
||||
|
||||
cjobot_d = CJORBOTD_i * pow((VBIRBOTD_i * vbiinvbot_d), PBOTD_i);
|
||||
cjosti_d = CJORSTID_i * pow((VBIRSTID_i * vbiinvsti_d), PSTID_i);
|
||||
cjogat_d = CJORGATD_i * pow((VBIRGATD_i * vbiinvgat_d), PGATD_i);
|
||||
|
||||
qprefbot_d = cjobot_d * vbibot_d * one_over_one_minus_PBOT_d;
|
||||
qprefsti_d = cjosti_d * vbisti_d * one_over_one_minus_PSTI_d;
|
||||
qprefgat_d = cjogat_d * vbigat_d * one_over_one_minus_PGAT_d;
|
||||
|
||||
qpref2bot_d = `a * cjobot_d;
|
||||
qpref2sti_d = `a * cjosti_d;
|
||||
qpref2gat_d = `a * cjogat_d;
|
||||
|
||||
wdepnulrbot_d= EPSSI / CJORBOTD_i;
|
||||
wdepnulrsti_d= XJUNSTID_i * EPSSI / CJORSTID_i;
|
||||
wdepnulrgat_d= XJUNGATD_i * EPSSI / CJORGATD_i;
|
||||
|
||||
wdepnulrinvbot_d = 1 / wdepnulrbot_d;
|
||||
wdepnulrinvsti_d = 1 / wdepnulrsti_d;
|
||||
wdepnulrinvgat_d = 1 / wdepnulrgat_d;
|
||||
|
||||
VBIRBOTinv_d = 1 / VBIRBOTD_i;
|
||||
VBIRSTIinv_d = 1 / VBIRSTID_i;
|
||||
VBIRGATinv_d = 1 / VBIRGATD_i;
|
||||
|
||||
deltaEbot_d = max(0.5 * phigdbot_d, phitd);
|
||||
deltaEsti_d = max(0.5 * phigdsti_d, phitd);
|
||||
deltaEgat_d = max(0.5 * phigdgat_d, phitd);
|
||||
|
||||
atatbot_d = deltaEbot_d * phitdinv;
|
||||
atatsti_d = deltaEsti_d * phitdinv;
|
||||
atatgat_d = deltaEgat_d * phitdinv;
|
||||
|
||||
btatpartbot_d= sqrt(32 * MEFFTATBOTD_i * `MELE * `QELE * (deltaEbot_d * deltaEbot_d * deltaEbot_d)) / (3 * `HBAR);
|
||||
btatpartsti_d= sqrt(32 * MEFFTATSTID_i * `MELE * `QELE * (deltaEsti_d * deltaEsti_d * deltaEsti_d)) / (3 * `HBAR);
|
||||
btatpartgat_d= sqrt(32 * MEFFTATGATD_i * `MELE * `QELE * (deltaEgat_d * deltaEgat_d * deltaEgat_d)) / (3 * `HBAR);
|
||||
|
||||
fbbtbot_d = FBBTRBOTD_i * (1 + STFBBTBOTD_i * (tkd - tkr));
|
||||
fbbtsti_d = FBBTRSTID_i * (1 + STFBBTSTID_i * (tkd - tkr));
|
||||
fbbtgat_d = FBBTRGATD_i * (1 + STFBBTGATD_i * (tkd - tkr));
|
||||
fbbtbot_d = `CLIP_LOW(fbbtbot_d, 0);
|
||||
fbbtsti_d = `CLIP_LOW(fbbtsti_d, 0);
|
||||
fbbtgat_d = `CLIP_LOW(fbbtgat_d, 0);
|
||||
|
||||
fstopbot_d = 1 / (1 - pow(`alphaav, PBRBOTD_i));
|
||||
fstopsti_d = 1 / (1 - pow(`alphaav, PBRSTID_i));
|
||||
fstopgat_d = 1 / (1 - pow(`alphaav, PBRGATD_i));
|
||||
|
||||
VBRinvbot_d = 1 / VBRBOTD_i;
|
||||
VBRinvsti_d = 1 / VBRSTID_i;
|
||||
VBRinvgat_d = 1 / VBRGATD_i;
|
||||
|
||||
slopebot_d = -(fstopbot_d * fstopbot_d * pow(`alphaav, (PBRBOTD_i - 1))) * PBRBOTD_i * VBRinvbot_d;
|
||||
slopesti_d = -(fstopsti_d * fstopsti_d * pow(`alphaav, (PBRSTID_i - 1))) * PBRSTID_i * VBRinvsti_d;
|
||||
slopegat_d = -(fstopgat_d * fstopgat_d * pow(`alphaav, (PBRGATD_i - 1))) * PBRGATD_i * VBRinvgat_d;
|
||||
`endif // JUNCAP_StandAlone
|
||||
|
|
|
|||
|
|
@ -4,15 +4,22 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.1 (PSP), 200.2 (JUNCAP), April 2007 (Simkit 2.5)
|
||||
// Version: 102.5.0 (PSP), 200.4.0 (JUNCAP), December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
///////////////////////////////////////////
|
||||
|
|
@ -34,7 +41,6 @@
|
|||
`define aerfc 0.29214664
|
||||
`define twothirds 0.666666666666667
|
||||
|
||||
|
||||
// Clipping values
|
||||
`define levelnumber 200
|
||||
`define AB_cliplow 0
|
||||
|
|
@ -57,6 +63,8 @@
|
|||
`define CBBT_cliplow 0
|
||||
`define VBR_cliplow 0.1
|
||||
`define PBR_cliplow 0.1
|
||||
`define VJUNREF_cliplow 0.5
|
||||
`define FJUNQ_cliplow 0.0
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -70,9 +78,30 @@
|
|||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Variable declarations of variables that need to be *local* in juncap-express initialization
|
||||
|
||||
`define LocalGlobalVars \
|
||||
/* declaration of variables needed in macro "calcerfcexpmtat" */ \
|
||||
real ysq, terfc, erfcpos; \
|
||||
\
|
||||
/* declaration of variables needed in hypfunction 5 */ \
|
||||
real h1, h2, h2d, h3, h4, h5; \
|
||||
\
|
||||
/* declaration of variables calculated outside macro "juncapfunction", voltage-dependent part */ \
|
||||
real idmult, vj, z, zinv, two_psistar, vjlim, vjsrh, vbbt, vav; \
|
||||
\
|
||||
/* declaration of variables used within macro "juncapfunction" */ \
|
||||
real tmp, id; \
|
||||
real isrh, vbi_minus_vjsrh, wsrhstep, dwsrh, wsrh, wdep, asrh; \
|
||||
real itat, btat, twoatatoverthreebtat, umaxbeforelimiting, umax, sqrtumax, umaxpoweronepointfive; \
|
||||
real wgamma, wtat, ktat, ltat, mtat, xerfc, erfctimesexpmtat, gammamax; \
|
||||
real ibbt, Fmaxr; \
|
||||
real fbreakdown;
|
||||
|
||||
|
||||
// Instance parameter dependent initialization
|
||||
|
||||
`define JuncapInitInstance(AB_i, LS_i, LG_i, VMAX, vbimin, vch, vfmin, vbbtlim) \
|
||||
`define JuncapInitInstance(AB_i, LS_i, LG_i, idsatbot, idsatsti, idsatgat, vbibot, vbisti, vbigat, PBOT_i, PSTI_i, PGAT_i, VBIRBOT_i, VBIRSTI_i, VBIRGAT_i, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim) \
|
||||
if (idsatbot * AB_i > 0) begin \
|
||||
vmaxbot = phitd * ln(IMAX_i / (idsatbot * AB_i) + 1); \
|
||||
end else begin \
|
||||
|
|
@ -89,28 +118,39 @@
|
|||
vmaxgat = `vmaxlarge; \
|
||||
end \
|
||||
VMAX = min(min(vmaxbot, vmaxsti), vmaxgat); \
|
||||
`expl(VMAX * phitdinv, exp_VMAX_over_phitd) \
|
||||
\
|
||||
/* determination of minimum value of the relevant built-in voltages */ \
|
||||
/* and determination of limiting value of conditioned voltage for BBT calculation */ \
|
||||
vbibot2 = vbibot; \
|
||||
vbisti2 = vbisti; \
|
||||
vbigat2 = vbigat; \
|
||||
if (AB_i == 0) begin vbibot2 = vbisti + vbigat; end \
|
||||
if (LS_i == 0) begin vbisti2 = vbibot + vbigat; end \
|
||||
if (LG_i == 0) begin vbigat2 = vbibot + vbisti; end \
|
||||
vbimin = min(min(vbibot2, vbisti2), vbigat2); \
|
||||
vch = vbimin * `epsch; \
|
||||
if (vbimin == vbibot) begin vfmin = vbibot * (1 - (pow(`a, (-1.0 / PBOT_i)))); end \
|
||||
if (vbimin == vbisti) begin vfmin = vbisti * (1 - (pow(`a, (-1.0 / PSTI_i)))); end \
|
||||
if (vbimin == vbigat) begin vfmin = vbigat * (1 - (pow(`a, (-1.0 / PGAT_i)))); end \
|
||||
\
|
||||
/* determination of limiting value of conditioned voltage for BBT calculation */ \
|
||||
pbot2 = PBOT_i; \
|
||||
psti2 = PSTI_i; \
|
||||
pgat2 = PGAT_i; \
|
||||
vbibot2r = VBIRBOT_i; \
|
||||
vbisti2r = VBIRSTI_i; \
|
||||
vbigat2r = VBIRGAT_i; \
|
||||
if (AB_i == 0) begin vbibot2r = VBIRSTI_i + VBIRGAT_i; end \
|
||||
if (LS_i == 0) begin vbisti2r = VBIRBOT_i + VBIRGAT_i; end \
|
||||
if (LG_i == 0) begin vbigat2r = VBIRBOT_i + VBIRSTI_i; end \
|
||||
vbbtlim = min(min(vbibot2r, vbisti2r), vbigat2r) - `dvbi; \
|
||||
if (AB_i == 0) begin \
|
||||
vbibot2 = vbisti + vbigat; \
|
||||
pbot2 = 0.9 * min(PSTI_i, PGAT_i); \
|
||||
vbibot2r = VBIRSTI_i + VBIRGAT_i; \
|
||||
end \
|
||||
if (LS_i == 0) begin \
|
||||
vbisti2 = vbibot + vbigat; \
|
||||
psti2 = 0.9 * min(PBOT_i, PGAT_i); \
|
||||
vbisti2r = VBIRBOT_i + VBIRGAT_i; \
|
||||
end \
|
||||
if (LG_i == 0) begin \
|
||||
vbigat2 = vbibot + vbisti; \
|
||||
pgat2 = 0.9 * min(PBOT_i, PSTI_i); \
|
||||
vbigat2r = VBIRBOT_i + VBIRSTI_i; \
|
||||
end \
|
||||
vbimin = min(min(vbibot2, vbisti2), vbigat2); \
|
||||
vch = vbimin * `epsch; \
|
||||
pmax = max(max(pbot2, psti2), pgat2); \
|
||||
vfmin = vbimin * (1 - (pow(`a, (-1.0 / (pmax))))); \
|
||||
vbbtlim = min(min(vbibot2r, vbisti2r), vbigat2r) - `dvbi;
|
||||
|
||||
|
||||
// Special power-functions
|
||||
|
|
@ -175,7 +215,7 @@
|
|||
// This is the main function of the JUNCAP2-model. It returns the current and charge
|
||||
// for a single diode
|
||||
|
||||
`define juncapfunction(qpref,qpref2,vbiinv,one_minus_P,idsat,CSRH,CTAT,vbi,wdepnulr,VBIRinv,P,ftd,btatpart,atat,one_over_one_minus_P,CBBT,VBIR,wdepnulrinv,fbbt,VBR,VBRinv,PBR,fstop,slope,Ijprime,Qjprime) \
|
||||
`define juncapfunction(VAK,qpref,qpref2,vbiinv,one_minus_P,idsat,CSRH,CTAT,vbi,wdepnulr,VBIRinv,P,ftd,btatpart,atat,one_over_one_minus_P,CBBT,VBIR,wdepnulrinv,fbbt,VBR,VBRinv,PBR,fstop,slope,Ijprime,Qjprime) \
|
||||
`mypower((1 - vj * vbiinv), one_minus_P, tmp) \
|
||||
Qjprime = qpref * (1 - tmp) + qpref2 * (VAK - vj); \
|
||||
id = idsat * idmult; \
|
||||
|
|
@ -240,46 +280,197 @@
|
|||
// ABSOURCE, LSSOURCE, LGSOURCE for source junction in PSP and ABDRAIN, LSDRAIN, LGDRAIN for
|
||||
// drain junction in PSP
|
||||
|
||||
`define juncapcommon(AB_i,LS_i,LG_i,ijunbot,qjunbot,ijunsti,qjunsti,ijungat,qjungat) \
|
||||
`define juncapcommon(V, AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim, ijunbot, qjunbot, ijunsti, qjunsti, ijungat, qjungat) \
|
||||
vbbt = 0.0; \
|
||||
two_psistar = 0.0; \
|
||||
if ( !( ((AB_i) == 0) && ((LS_i) == 0) && ((LG_i) == 0) ) ) begin \
|
||||
`hypfunction5(VAK, vfmin, vch, vj) \
|
||||
if (VAK < VMAX) begin \
|
||||
`expl(0.5 * (VAK * phitdinv), zinv) \
|
||||
`hypfunction5(V, vfmin, vch, vj) \
|
||||
if (V < VMAX) begin \
|
||||
`expl(0.5 * (V * phitdinv), zinv) \
|
||||
idmult = zinv * zinv; \
|
||||
end else begin \
|
||||
`expl(VMAX * phitdinv, exp_VMAX_over_phitd) \
|
||||
idmult = (1 + (VAK - VMAX) * phitdinv) * exp_VMAX_over_phitd; \
|
||||
idmult = (1 + (V - VMAX) * phitdinv) * exp_VMAX_over_phitd; \
|
||||
zinv = sqrt(idmult); \
|
||||
end \
|
||||
idmult = idmult - 1.0; \
|
||||
z = 1 / zinv; \
|
||||
if (VAK > 0) begin \
|
||||
if (V > 0) begin \
|
||||
two_psistar = 2.0 * (phitd * ln(2.0 + z + sqrt((z + 1.0) * (z + 3.0)))); \
|
||||
end else begin \
|
||||
two_psistar = -VAK + 2.0 * (phitd * ln(2 * zinv + 1 + sqrt((1 + zinv) * (1 + 3 * zinv)))); \
|
||||
two_psistar = -V + 2.0 * (phitd * ln(2 * zinv + 1 + sqrt((1 + zinv) * (1 + 3 * zinv)))); \
|
||||
end \
|
||||
vjlim = vbimin - two_psistar; \
|
||||
`hypfunction2(VAK, vjlim, phitd, vjsrh) \
|
||||
`hypfunction2(VAK, vbbtlim, phitr, vbbt) \
|
||||
`hypfunction2(VAK, 0, `epsav, vav) \
|
||||
`hypfunction2(V, vjlim, phitd, vjsrh) \
|
||||
`hypfunction2(V, vbbtlim, phitr, vbbt) \
|
||||
`hypfunction2(V, 0, `epsav, vav) \
|
||||
end \
|
||||
if ((AB_i) == 0) begin \
|
||||
ijunbot = 0; \
|
||||
qjunbot = 0; \
|
||||
end else begin \
|
||||
`juncapfunction(qprefbot,qpref2bot,vbiinvbot,one_minus_PBOT,idsatbot,CSRHBOT_i,CTATBOT_i,vbibot,wdepnulrbot,VBIRBOTinv,PBOT_i,ftdbot,btatpartbot,atatbot,one_over_one_minus_PBOT,CBBTBOT_i,VBIRBOT_i,wdepnulrinvbot,fbbtbot,VBRBOT_i,VBRinvbot,PBRBOT_i,fstopbot,slopebot,ijunbot, qjunbot) \
|
||||
`juncapfunction(V, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, ijunbot, qjunbot) \
|
||||
end \
|
||||
if ((LS_i) == 0) begin \
|
||||
ijunsti = 0; \
|
||||
qjunsti = 0; \
|
||||
end else begin \
|
||||
`juncapfunction(qprefsti,qpref2sti,vbiinvsti,one_minus_PSTI,idsatsti,CSRHSTI_i,CTATSTI_i,vbisti,wdepnulrsti,VBIRSTIinv,PSTI_i,ftdsti,btatpartsti,atatsti,one_over_one_minus_PSTI,CBBTSTI_i,VBIRSTI_i,wdepnulrinvsti,fbbtsti,VBRSTI_i,VBRinvsti,PBRSTI_i,fstopsti,slopesti,ijunsti, qjunsti) \
|
||||
`juncapfunction(V, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, ijunsti, qjunsti) \
|
||||
end \
|
||||
if ((LG_i) == 0) begin \
|
||||
ijungat = 0; \
|
||||
qjungat = 0; \
|
||||
end else begin \
|
||||
`juncapfunction(qprefgat,qpref2gat,vbiinvgat,one_minus_PGAT,idsatgat,CSRHGAT_i,CTATGAT_i,vbigat,wdepnulrgat,VBIRGATinv,PGAT_i,ftdgat,btatpartgat,atatgat,one_over_one_minus_PGAT,CBBTGAT_i,VBIRGAT_i,wdepnulrinvgat,fbbtgat,VBRGAT_i,VBRinvgat,PBRGAT_i,fstopgat,slopegat,ijungat, qjungat) \
|
||||
`juncapfunction(V, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, ijungat, qjungat) \
|
||||
end
|
||||
|
||||
|
||||
//============================================================================================================
|
||||
// JUNCAP-express
|
||||
//
|
||||
// The macros below are used in the express-version of JUNCAP2
|
||||
//============================================================================================================
|
||||
|
||||
`define relerr 0.001
|
||||
|
||||
`define P1(x) ((x) + 1)
|
||||
|
||||
`define expll(x, xlow, expxlow, xhigh, expxhigh) \
|
||||
((x) < (xlow)) ? (expxlow) / `P1((xlow) - (x)) : (((x) > (xhigh)) ? (expxhigh) * `P1((x) - (xhigh)) : exp(x))
|
||||
|
||||
|
||||
// The "JuncapExpressInit"-macro below is split into three parts, as some verilog-A compilers cannot handle
|
||||
// macros beyond a certain size. Moreover, it is useful to limit the list of input and output variables.
|
||||
|
||||
// Part 1
|
||||
`define JuncapExpressInit1(AB_i, LS_i, LG_i, VJUNREF_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim) \
|
||||
FRACNA = 0.4; \
|
||||
FRACNB = 0.65; \
|
||||
FRACI = 0.8; \
|
||||
/* Sample voltages */ \
|
||||
V1 = -FRACNA * VJUNREF_i; \
|
||||
V2 = -FRACNB * VJUNREF_i; \
|
||||
V3 = -FRACI * VJUNREF_i; \
|
||||
V4 = 0.1; \
|
||||
V5 = 0.2; \
|
||||
/* evaluate full JUNCAP-model at five voltages */ \
|
||||
`juncapcommon(V1, AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim, ijunbot, qjunbot, ijunsti, qjunsti, ijungat, qjungat) \
|
||||
I1 = AB_i * ijunbot + LS_i * ijunsti + LG_i * ijungat; \
|
||||
`juncapcommon(V2, AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim, ijunbot, qjunbot, ijunsti, qjunsti, ijungat, qjungat) \
|
||||
I2 = AB_i * ijunbot + LS_i * ijunsti + LG_i * ijungat; \
|
||||
`juncapcommon(V3, AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim, ijunbot, qjunbot, ijunsti, qjunsti, ijungat, qjungat) \
|
||||
I3 = AB_i * ijunbot + LS_i * ijunsti + LG_i * ijungat;
|
||||
|
||||
// Part 2
|
||||
`define JuncapExpressInit2(AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim) \
|
||||
/* forward currents */ \
|
||||
`juncapcommon(V4, AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim, ijunbot, qjunbot, ijunsti, qjunsti, ijungat, qjungat) \
|
||||
I4 = AB_i * ijunbot + LS_i * ijunsti + LG_i * ijungat; \
|
||||
`juncapcommon(V5, AB_i, LS_i, LG_i, qprefbot, qpref2bot, vbiinvbot, one_minus_PBOT, idsatbot, CSRHBOT_i, CTATBOT_i, vbibot, wdepnulrbot, VBIRBOTinv, PBOT_i, ftdbot, btatpartbot, atatbot, one_over_one_minus_PBOT, CBBTBOT_i, VBIRBOT_i, wdepnulrinvbot, fbbtbot, VBRBOT_i, VBRinvbot, PBRBOT_i, fstopbot, slopebot, qprefsti, qpref2sti, vbiinvsti, one_minus_PSTI, idsatsti, CSRHSTI_i, CTATSTI_i, vbisti, wdepnulrsti, VBIRSTIinv, PSTI_i, ftdsti, btatpartsti, atatsti, one_over_one_minus_PSTI, CBBTSTI_i, VBIRSTI_i, wdepnulrinvsti, fbbtsti, VBRSTI_i, VBRinvsti, PBRSTI_i, fstopsti, slopesti, qprefgat, qpref2gat, vbiinvgat, one_minus_PGAT, idsatgat, CSRHGAT_i, CTATGAT_i, vbigat, wdepnulrgat, VBIRGATinv, PGAT_i, ftdgat, btatpartgat, atatgat, one_over_one_minus_PGAT, CBBTGAT_i, VBIRGAT_i, wdepnulrinvgat, fbbtgat, VBRGAT_i, VBRinvgat, PBRGAT_i, fstopgat, slopegat, VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim, ijunbot, qjunbot, ijunsti, qjunsti, ijungat, qjungat) \
|
||||
I5 = AB_i * ijunbot + LS_i * ijunsti + LG_i * ijungat;
|
||||
|
||||
// Part 3
|
||||
`define JuncapExpressInit3(AB_i, LS_i, LG_i, idsatbot, idsatsti, idsatgat, ISATFOR1, MFOR1, ISATFOR2, MFOR2, ISATREV, MREV, m0flag) \
|
||||
/* compute internal parameters from these five (I,V)-values */ \
|
||||
ISATFOR1 = AB_i * idsatbot + LS_i * idsatsti + LG_i * idsatgat; \
|
||||
I4_cor = I4 - ISATFOR1 * (exp(V4 * phitdinv * MFOR1) - 1.0); \
|
||||
I5_cor = I5 - ISATFOR1 * (exp(V5 * phitdinv * MFOR1) - 1.0); \
|
||||
if ( !( ((AB_i) == 0) && ((LS_i) == 0) && ((LG_i) == 0) ) ) begin \
|
||||
if ((I4 > 0) && (I5 > 0)) begin \
|
||||
if ((((I4_cor / I4) > `relerr) || ((I5_cor / I5) > `relerr)) && (I4_cor > 0) && (I5_cor > 0)) begin \
|
||||
alphaje = I4_cor / I5_cor; \
|
||||
MFOR2 = phitd * ln(alphaje) / (V4 - V5); \
|
||||
ISATFOR2 = I4_cor / (exp(V4 * phitdinv * MFOR2) - 1); \
|
||||
end \
|
||||
end \
|
||||
I1_cor = I1 - ISATFOR1 * (exp(V1 * phitdinv * MFOR1) - 1.0) - ISATFOR2 * (exp(V1 * phitdinv * MFOR2) - 1.0); \
|
||||
I2_cor = I2 - ISATFOR1 * (exp(V2 * phitdinv * MFOR1) - 1.0) - ISATFOR2 * (exp(V2 * phitdinv * MFOR2) - 1.0); \
|
||||
I3_cor = I3 - ISATFOR1 * (exp(V3 * phitdinv * MFOR1) - 1.0) - ISATFOR2 * (exp(V3 * phitdinv * MFOR2) - 1.0); \
|
||||
if ((I1 < 0) && (I2 < 0) && (I3 < 0)) begin \
|
||||
if ((((I1_cor / I1) > `relerr) || ((I2_cor / I2) > `relerr) || ((I3_cor / I3) > `relerr)) \
|
||||
&& (I1_cor < 0) && (I2_cor < 0) && (I3_cor < 0)) begin \
|
||||
alphaje = I1_cor / I2_cor; \
|
||||
m0_rev = -phitd * ln(alphaje) / (V1 - V2); /* zeroth order approximation */ \
|
||||
tt0 = V2 / (V2 - V1); \
|
||||
tt1 = phitd * (alphaje - 1) * (pow(alphaje, tt0) - 1); \
|
||||
tt0 = V1 / (V1 - V2); \
|
||||
tt2 = pow(alphaje, tt0) * (V2 - V1) + alphaje * V1 - V2; \
|
||||
mcor_rev = tt1 / tt2; /* first order Newton correction */ \
|
||||
MREV = m0_rev + mcor_rev; \
|
||||
if (abs(V3 * phitdinv * MREV) < 1e-6) begin \
|
||||
/* Taylor approximation needed */ \
|
||||
/* Note: ISATREV and MREV have different meaning in this situation!! */ \
|
||||
m0flag = 1.0; \
|
||||
ISATREV = I3_cor * (1 / V3 + 0.5 * phitdinv * MREV); \
|
||||
MREV = -0.5 * I3_cor * MREV * phitdinv / V3; \
|
||||
end else begin \
|
||||
m0flag = 0.0; \
|
||||
ISATREV = -I3_cor / (exp(-V3 * phitdinv * MREV) - 1); \
|
||||
end \
|
||||
end \
|
||||
end \
|
||||
end
|
||||
|
||||
// Part 4
|
||||
`define JuncapExpressInit4(AB_i, LS_i, LG_i, FJUNQ_i, cjobot, cjosti, cjogat, zflagbot, zflagsti, zflaggat) \
|
||||
/* charge model initialization */ \
|
||||
zfrac = FJUNQ_i * (AB_i * cjobot + LS_i * cjosti + LG_i * cjogat); \
|
||||
if ((AB_i * cjobot) <= zfrac) begin \
|
||||
zflagbot = 0.0; \
|
||||
end \
|
||||
if ((LS_i * cjosti) <= zfrac) begin \
|
||||
zflagsti = 0.0; \
|
||||
end \
|
||||
if ((LG_i * cjogat) <= zfrac) begin \
|
||||
zflaggat = 0.0; \
|
||||
end
|
||||
|
||||
// Part 5
|
||||
`define JuncapExpressInit5(AB_i, LS_i, LG_i, ISATFOR1, ISATFOR2, ISATREV, xhighf1, expxhf1, xhighf2, expxhf2, xhighr, expxhr) \
|
||||
/* calculate limits beyond which exponentials are linearly extrapolated */ \
|
||||
if ( !( ((AB_i) == 0) && ((LS_i) == 0) && ((LG_i) == 0) ) ) begin \
|
||||
xhighf1 = ln(0.5 * IMAX_i / (ISATFOR1 + 1e-21)); \
|
||||
xhighf2 = ln(0.5 * IMAX_i / (ISATFOR2 + 1e-21)); \
|
||||
xhighr = ln(0.5 * IMAX_i / (abs(ISATREV) + 1e-21)); \
|
||||
end \
|
||||
xhighf1 = min(xhighf1, `se05); \
|
||||
expxhf1 = exp(xhighf1); \
|
||||
xhighf2 = min(xhighf2, `se05); \
|
||||
expxhf2 = exp(xhighf2); \
|
||||
xhighr = min(xhighr, `se05); \
|
||||
expxhr = exp(xhighr);
|
||||
|
||||
`define JuncapExpressCurrent(V, MFOR1, ISATFOR1, MFOR2, ISATFOR2, MREV, ISATREV, m0flag, xhighf1, expxhf1, xhighf2, expxhf2, xhighr, expxhr, ijun) \
|
||||
tm0 = V * phitdinv * MFOR1; \
|
||||
tm1 = `expll(tm0, -`se05, `ke05, xhighf1, expxhf1); \
|
||||
ijunfor1 = ISATFOR1 * (tm1 - 1.0); \
|
||||
tm0 = V * phitdinv * MFOR2; \
|
||||
tm1 = `expll(tm0, -`se05, `ke05, xhighf2, expxhf2); \
|
||||
ijunfor2 = ISATFOR2 * (tm1 - 1.0); \
|
||||
ijunrev = 0.0; \
|
||||
if (m0flag > 0) begin \
|
||||
ijunrev = V * (ISATREV + V * MREV); \
|
||||
end else begin \
|
||||
tm0 = -V * phitdinv * MREV; \
|
||||
tm1 = `expll(tm0, -`se05, `ke05, xhighr, expxhr); \
|
||||
ijunrev = -ISATREV * (tm1 - 1.0); \
|
||||
end \
|
||||
ijun = ijunfor1 + ijunfor2 + ijunrev;
|
||||
|
||||
|
||||
`define JuncapExpressCharge(V, AB_i, LS_i, LG_i, qprefbot, qprefsti, qprefgat, qpref2bot, qpref2sti, qpref2gat, vbiinvbot, vbiinvsti, vbiinvgat, one_minus_PBOT, one_minus_PSTI, one_minus_PGAT, vfmin, vch, zflagbot, zflagsti, zflaggat, qjunbot, qjunsti, qjungat) \
|
||||
tmpv = 0.0; \
|
||||
vjv = 0.0; \
|
||||
`hypfunction5(V, vfmin, vch, vjv) \
|
||||
if (zflagbot > 0.5) begin \
|
||||
`mypower((1 - vjv * vbiinvbot), one_minus_PBOT, tmpv) \
|
||||
qjunbot = qprefbot * (1 - tmpv) + qpref2bot * (V - vjv); \
|
||||
end \
|
||||
if (zflagsti > 0.5) begin \
|
||||
`mypower((1 - vjv * vbiinvsti), one_minus_PSTI, tmpv) \
|
||||
qjunsti = qprefsti * (1 - tmpv) + qpref2sti * (V - vjv); \
|
||||
end \
|
||||
if (zflaggat > 0.5) begin \
|
||||
`mypower((1 - vjv * vbiinvgat), one_minus_PGAT, tmpv) \
|
||||
qjungat = qprefgat * (1 - tmpv) + qpref2gat * (V - vjv); \
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -4,15 +4,22 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.1 (PSP), 200.2 (JUNCAP), April 2007 (Simkit 2.5)
|
||||
// Version: 102.5.0 (PSP), 200.4.0 (JUNCAP), December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
|
@ -21,45 +28,151 @@
|
|||
//
|
||||
//////////////////////////////////////////
|
||||
|
||||
parameter real IMAX = 1000 `from(`IMAX_cliplow ,inf ) `P(info="Maximum current up to which forward current behaves exponentially" unit="A" );
|
||||
parameter real CJORBOT = 1E-3 `from(`CJORBOT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-area of bottom component" unit="Fm^-2" );
|
||||
parameter real CJORSTI = 1E-9 `from(`CJORSTI_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of STI-edge component" unit="Fm^-1" );
|
||||
parameter real CJORGAT = 1E-9 `from(`CJORGAT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of gate-edge component" unit="Fm^-1" );
|
||||
parameter real VBIRBOT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of bottom component" unit="V" );
|
||||
parameter real VBIRSTI = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of STI-edge component" unit="V" );
|
||||
parameter real VBIRGAT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of gate-edge component" unit="V" );
|
||||
parameter real PBOT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of bottom component" unit="" );
|
||||
parameter real PSTI = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of STI-edge component" unit="" );
|
||||
parameter real PGAT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of gate-edge component" unit="" );
|
||||
parameter real PHIGBOT = 1.16 `P(info="Zero-temperature bandgap voltage of bottom component" unit="V" );
|
||||
parameter real PHIGSTI = 1.16 `P(info="Zero-temperature bandgap voltage of STI-edge component" unit="V" );
|
||||
parameter real PHIGGAT = 1.16 `P(info="Zero-temperature bandgap voltage of gate-edge component" unit="V" );
|
||||
parameter real IDSATRBOT = 1E-12 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of bottom component" unit="Am^-2" );
|
||||
parameter real IDSATRSTI = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of STI-edge component" unit="Am^-1" );
|
||||
parameter real IDSATRGAT = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of gate-edge component" unit="Am^-1" );
|
||||
parameter real CSRHBOT = 1E2 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of bottom component" unit="Am^-3" );
|
||||
parameter real CSRHSTI = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of STI-edge component" unit="Am^-2" );
|
||||
parameter real CSRHGAT = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of gate-edge component" unit="Am^-2" );
|
||||
parameter real XJUNSTI = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of STI-edge component" unit="m" );
|
||||
parameter real XJUNGAT = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of gate-edge component" unit="m" );
|
||||
parameter real CTATBOT = 1E2 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of bottom component" unit="Am^-3" );
|
||||
parameter real CTATSTI = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of STI-edge component" unit="Am^-2" );
|
||||
parameter real CTATGAT = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of gate-edge component" unit="Am^-2" );
|
||||
parameter real MEFFTATBOT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of bottom component" unit="" );
|
||||
parameter real MEFFTATSTI = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of STI-edge component" unit="" );
|
||||
parameter real MEFFTATGAT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of gate-edge component" unit="" );
|
||||
parameter real CBBTBOT = 1E-12 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of bottom component" unit="AV^-3" );
|
||||
parameter real CBBTSTI = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of STI-edge component" unit="AV^-3m" );
|
||||
parameter real CBBTGAT = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of gate-edge component" unit="AV^-3m" );
|
||||
parameter real FBBTRBOT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of bottom component" unit="Vm^-1" );
|
||||
parameter real FBBTRSTI = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of STI-edge component" unit="Vm^-1" );
|
||||
parameter real FBBTRGAT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of gate-edge component" unit="Vm^-1" );
|
||||
parameter real STFBBTBOT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of bottom component" unit="K^-1" );
|
||||
parameter real STFBBTSTI = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of STI-edge component" unit="K^-1" );
|
||||
parameter real STFBBTGAT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of gate-edge component" unit="K^-1" );
|
||||
parameter real VBRBOT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of bottom component" unit="V" );
|
||||
parameter real VBRSTI = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of STI-edge component" unit="V" );
|
||||
parameter real VBRGAT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of gate-edge component" unit="V" );
|
||||
parameter real PBRBOT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of bottom component" unit="V" );
|
||||
parameter real PBRSTI = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of STI-edge component" unit="V" );
|
||||
parameter real PBRGAT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of gate-edge component" unit="V" );
|
||||
parameter real IMAX = 1000 `from(`IMAX_cliplow ,inf ) `P(info="Maximum current up to which forward current behaves exponentially" unit="A");
|
||||
parameter real TRJ = 21 `from(`TRJ_cliplow ,inf ) `P(info="reference temperature" unit="C");
|
||||
|
||||
// Parameters for source-bulk junction
|
||||
`ifdef JUNCAP_StandAlone
|
||||
parameter real CJORBOT = 1E-3 `from(`CJORBOT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-area of bottom component" unit="Fm^-2");
|
||||
parameter real CJORSTI = 1E-9 `from(`CJORSTI_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of STI-edge component" unit="Fm^-1");
|
||||
parameter real CJORGAT = 1E-9 `from(`CJORGAT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of gate-edge component" unit="Fm^-1");
|
||||
parameter real VBIRBOT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of bottom component" unit="V");
|
||||
parameter real VBIRSTI = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of STI-edge component" unit="V");
|
||||
parameter real VBIRGAT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of gate-edge component" unit="V");
|
||||
parameter real PBOT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of bottom component" unit="");
|
||||
parameter real PSTI = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of STI-edge component" unit="");
|
||||
parameter real PGAT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of gate-edge component" unit="");
|
||||
parameter real PHIGBOT = 1.16 `P(info="Zero-temperature bandgap voltage of bottom component" unit="V");
|
||||
parameter real PHIGSTI = 1.16 `P(info="Zero-temperature bandgap voltage of STI-edge component" unit="V");
|
||||
parameter real PHIGGAT = 1.16 `P(info="Zero-temperature bandgap voltage of gate-edge component" unit="V");
|
||||
parameter real IDSATRBOT = 1E-12 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of bottom component" unit="Am^-2");
|
||||
parameter real IDSATRSTI = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of STI-edge component" unit="Am^-1");
|
||||
parameter real IDSATRGAT = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of gate-edge component" unit="Am^-1");
|
||||
parameter real CSRHBOT = 1E2 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of bottom component" unit="Am^-3");
|
||||
parameter real CSRHSTI = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of STI-edge component" unit="Am^-2");
|
||||
parameter real CSRHGAT = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of gate-edge component" unit="Am^-2");
|
||||
parameter real XJUNSTI = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of STI-edge component" unit="m");
|
||||
parameter real XJUNGAT = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of gate-edge component" unit="m");
|
||||
parameter real CTATBOT = 1E2 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of bottom component" unit="Am^-3");
|
||||
parameter real CTATSTI = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of STI-edge component" unit="Am^-2");
|
||||
parameter real CTATGAT = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of gate-edge component" unit="Am^-2");
|
||||
parameter real MEFFTATBOT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of bottom component" unit="");
|
||||
parameter real MEFFTATSTI = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of STI-edge component" unit="");
|
||||
parameter real MEFFTATGAT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of gate-edge component" unit="");
|
||||
parameter real CBBTBOT = 1E-12 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of bottom component" unit="AV^-3");
|
||||
parameter real CBBTSTI = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of STI-edge component" unit="AV^-3m");
|
||||
parameter real CBBTGAT = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of gate-edge component" unit="AV^-3m");
|
||||
parameter real FBBTRBOT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of bottom component" unit="Vm^-1");
|
||||
parameter real FBBTRSTI = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of STI-edge component" unit="Vm^-1");
|
||||
parameter real FBBTRGAT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of gate-edge component" unit="Vm^-1");
|
||||
parameter real STFBBTBOT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of bottom component" unit="K^-1");
|
||||
parameter real STFBBTSTI = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of STI-edge component" unit="K^-1");
|
||||
parameter real STFBBTGAT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of gate-edge component" unit="K^-1");
|
||||
parameter real VBRBOT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of bottom component" unit="V");
|
||||
parameter real VBRSTI = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of STI-edge component" unit="V");
|
||||
parameter real VBRGAT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of gate-edge component" unit="V");
|
||||
parameter real PBRBOT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of bottom component" unit="V");
|
||||
parameter real PBRSTI = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of STI-edge component" unit="V");
|
||||
parameter real PBRGAT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of gate-edge component" unit="V");
|
||||
`else // JUNCAP_StandAlone
|
||||
parameter real CJORBOT = 1E-3 `from(`CJORBOT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-area of bottom component for source-bulk junction" unit="Fm^-2");
|
||||
parameter real CJORSTI = 1E-9 `from(`CJORSTI_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of STI-edge component for source-bulk junction" unit="Fm^-1");
|
||||
parameter real CJORGAT = 1E-9 `from(`CJORGAT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of gate-edge component for source-bulk junction" unit="Fm^-1");
|
||||
parameter real VBIRBOT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of bottom component for source-bulk junction" unit="V");
|
||||
parameter real VBIRSTI = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of STI-edge component for source-bulk junction" unit="V");
|
||||
parameter real VBIRGAT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of gate-edge component for source-bulk junction" unit="V");
|
||||
parameter real PBOT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of bottom component for source-bulk junction" unit="");
|
||||
parameter real PSTI = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of STI-edge component for source-bulk junction" unit="");
|
||||
parameter real PGAT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of gate-edge component for source-bulk junction" unit="");
|
||||
parameter real PHIGBOT = 1.16 `P(info="Zero-temperature bandgap voltage of bottom component for source-bulk junction" unit="V");
|
||||
parameter real PHIGSTI = 1.16 `P(info="Zero-temperature bandgap voltage of STI-edge component for source-bulk junction" unit="V");
|
||||
parameter real PHIGGAT = 1.16 `P(info="Zero-temperature bandgap voltage of gate-edge component for source-bulk junction" unit="V");
|
||||
parameter real IDSATRBOT = 1E-12 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of bottom component for source-bulk junction" unit="Am^-2");
|
||||
parameter real IDSATRSTI = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of STI-edge component for source-bulk junction" unit="Am^-1");
|
||||
parameter real IDSATRGAT = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of gate-edge component for source-bulk junction" unit="Am^-1");
|
||||
parameter real CSRHBOT = 1E2 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of bottom component for source-bulk junction" unit="Am^-3");
|
||||
parameter real CSRHSTI = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of STI-edge component for source-bulk junction" unit="Am^-2");
|
||||
parameter real CSRHGAT = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of gate-edge component for source-bulk junction" unit="Am^-2");
|
||||
parameter real XJUNSTI = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of STI-edge component for source-bulk junction" unit="m");
|
||||
parameter real XJUNGAT = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of gate-edge component for source-bulk junction" unit="m");
|
||||
parameter real CTATBOT = 1E2 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of bottom component for source-bulk junction" unit="Am^-3");
|
||||
parameter real CTATSTI = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of STI-edge component for source-bulk junction" unit="Am^-2");
|
||||
parameter real CTATGAT = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of gate-edge component for source-bulk junction" unit="Am^-2");
|
||||
parameter real MEFFTATBOT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of bottom component for source-bulk junction" unit="");
|
||||
parameter real MEFFTATSTI = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of STI-edge component for source-bulk junction" unit="");
|
||||
parameter real MEFFTATGAT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of gate-edge component for source-bulk junction" unit="");
|
||||
parameter real CBBTBOT = 1E-12 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of bottom component for source-bulk junction" unit="AV^-3");
|
||||
parameter real CBBTSTI = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of STI-edge component for source-bulk junction" unit="AV^-3m");
|
||||
parameter real CBBTGAT = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of gate-edge component for source-bulk junction" unit="AV^-3m");
|
||||
parameter real FBBTRBOT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of bottom component for source-bulk junction" unit="Vm^-1");
|
||||
parameter real FBBTRSTI = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of STI-edge component for source-bulk junction" unit="Vm^-1");
|
||||
parameter real FBBTRGAT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of gate-edge component for source-bulk junction" unit="Vm^-1");
|
||||
parameter real STFBBTBOT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of bottom component for source-bulk junction" unit="K^-1");
|
||||
parameter real STFBBTSTI = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of STI-edge component for source-bulk junction" unit="K^-1");
|
||||
parameter real STFBBTGAT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of gate-edge component for source-bulk junction" unit="K^-1");
|
||||
parameter real VBRBOT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of bottom component for source-bulk junction" unit="V");
|
||||
parameter real VBRSTI = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of STI-edge component for source-bulk junction" unit="V");
|
||||
parameter real VBRGAT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of gate-edge component for source-bulk junction" unit="V");
|
||||
parameter real PBRBOT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of bottom component for source-bulk junction" unit="V");
|
||||
parameter real PBRSTI = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of STI-edge component for source-bulk junction" unit="V");
|
||||
parameter real PBRGAT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of gate-edge component for source-bulk junction" unit="V");
|
||||
`endif
|
||||
|
||||
`ifdef JUNCAP_StandAlone
|
||||
// do nothing
|
||||
`else // JUNCAP_StandAlone
|
||||
// Parameters for drain-bulk junction
|
||||
parameter real CJORBOTD = 1E-3 `from(`CJORBOT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-area of bottom component for drain-bulk junction" unit="Fm^-2");
|
||||
parameter real CJORSTID = 1E-9 `from(`CJORSTI_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of STI-edge component for drain-bulk junction" unit="Fm^-1");
|
||||
parameter real CJORGATD = 1E-9 `from(`CJORGAT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of gate-edge component for drain-bulk junction" unit="Fm^-1");
|
||||
parameter real VBIRBOTD = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of bottom component for drain-bulk junction" unit="V");
|
||||
parameter real VBIRSTID = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of STI-edge component for drain-bulk junction" unit="V");
|
||||
parameter real VBIRGATD = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of gate-edge component for drain-bulk junction" unit="V");
|
||||
parameter real PBOTD = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of bottom component for drain-bulk junction" unit="");
|
||||
parameter real PSTID = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of STI-edge component for drain-bulk junction" unit="");
|
||||
parameter real PGATD = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of gate-edge component for drain-bulk junction" unit="");
|
||||
parameter real PHIGBOTD = 1.16 `P(info="Zero-temperature bandgap voltage of bottom component for drain-bulk junction" unit="V");
|
||||
parameter real PHIGSTID = 1.16 `P(info="Zero-temperature bandgap voltage of STI-edge component for drain-bulk junction" unit="V");
|
||||
parameter real PHIGGATD = 1.16 `P(info="Zero-temperature bandgap voltage of gate-edge component for drain-bulk junction" unit="V");
|
||||
parameter real IDSATRBOTD = 1E-12 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of bottom component for drain-bulk junction" unit="Am^-2");
|
||||
parameter real IDSATRSTID = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of STI-edge component for drain-bulk junction" unit="Am^-1");
|
||||
parameter real IDSATRGATD = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of gate-edge component for drain-bulk junction" unit="Am^-1");
|
||||
parameter real CSRHBOTD = 1E2 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of bottom component for drain-bulk junction" unit="Am^-3");
|
||||
parameter real CSRHSTID = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of STI-edge component for drain-bulk junction" unit="Am^-2");
|
||||
parameter real CSRHGATD = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of gate-edge component for drain-bulk junction" unit="Am^-2");
|
||||
parameter real XJUNSTID = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of STI-edge component for drain-bulk junction" unit="m");
|
||||
parameter real XJUNGATD = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of gate-edge component for drain-bulk junction" unit="m");
|
||||
parameter real CTATBOTD = 1E2 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of bottom component for drain-bulk junction" unit="Am^-3");
|
||||
parameter real CTATSTID = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of STI-edge component for drain-bulk junction" unit="Am^-2");
|
||||
parameter real CTATGATD = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of gate-edge component for drain-bulk junction" unit="Am^-2");
|
||||
parameter real MEFFTATBOTD= 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of bottom component for drain-bulk junction" unit="");
|
||||
parameter real MEFFTATSTID= 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of STI-edge component for drain-bulk junction" unit="");
|
||||
parameter real MEFFTATGATD= 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of gate-edge component for drain-bulk junction" unit="");
|
||||
parameter real CBBTBOTD = 1E-12 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of bottom component for drain-bulk junction" unit="AV^-3");
|
||||
parameter real CBBTSTID = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of STI-edge component for drain-bulk junction" unit="AV^-3m");
|
||||
parameter real CBBTGATD = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of gate-edge component for drain-bulk junction" unit="AV^-3m");
|
||||
parameter real FBBTRBOTD = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of bottom component for drain-bulk junction" unit="Vm^-1");
|
||||
parameter real FBBTRSTID = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of STI-edge component for drain-bulk junction" unit="Vm^-1");
|
||||
parameter real FBBTRGATD = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of gate-edge component for drain-bulk junction" unit="Vm^-1");
|
||||
parameter real STFBBTBOTD = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of bottom component for drain-bulk junction" unit="K^-1");
|
||||
parameter real STFBBTSTID = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of STI-edge component for drain-bulk junction" unit="K^-1");
|
||||
parameter real STFBBTGATD = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of gate-edge component for drain-bulk junction" unit="K^-1");
|
||||
parameter real VBRBOTD = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of bottom component for drain-bulk junction" unit="V");
|
||||
parameter real VBRSTID = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of STI-edge component for drain-bulk junction" unit="V");
|
||||
parameter real VBRGATD = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of gate-edge component for drain-bulk junction" unit="V");
|
||||
parameter real PBRBOTD = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of bottom component for drain-bulk junction" unit="V");
|
||||
parameter real PBRSTID = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of STI-edge component for drain-bulk junction" unit="V");
|
||||
parameter real PBRGATD = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of gate-edge component for drain-bulk junction" unit="V");
|
||||
`endif // JUNCAP_StandAlone
|
||||
|
||||
// JUNCAP2-express parameters
|
||||
parameter real SWJUNEXP = 0.0 `from( 0.0,1.0 ) `P(info="Flag for JUNCAP-express; 0=full model, 1=express model" unit="");
|
||||
`ifdef JUNCAP_StandAlone
|
||||
parameter real VJUNREF = 2.5 `from(`VJUNREF_cliplow ,inf ) `P(info="Typical maximum junction voltage; usually about 2*VSUP" unit="");
|
||||
parameter real FJUNQ = 0.03 `from(`FJUNQ_cliplow ,inf ) `P(info="Fraction below which junction capacitance components are considered negligible" unit="");
|
||||
`else // JUNCAP_StandAlone
|
||||
parameter real VJUNREF = 2.5 `from(`VJUNREF_cliplow ,inf ) `P(info="Typical maximum source-bulk junction voltage; usually about 2*VSUP" unit="");
|
||||
parameter real FJUNQ = 0.03 `from(`FJUNQ_cliplow ,inf ) `P(info="Fraction below which source-bulk junction capacitance components are considered negligible" unit="");
|
||||
parameter real VJUNREFD = 2.5 `from(`VJUNREF_cliplow ,inf ) `P(info="Typical maximum drain-bulk junction voltage; usually about 2*VSUP" unit="");
|
||||
parameter real FJUNQD = 0.03 `from(`FJUNQ_cliplow ,inf ) `P(info="Fraction below which drain-bulk junction capacitance components are considered negligible" unit="");
|
||||
`endif // JUNCAP_StandAlone
|
||||
|
|
|
|||
|
|
@ -1,67 +0,0 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: JUNCAP200_varlist.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
//
|
||||
//
|
||||
// Version: 102.1 (PSP), 200.2 (JUNCAP), April 2007 (Simkit 2.5)
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
//
|
||||
|
||||
|
||||
// declaration of variables needed in macro "calcerfcexpmtat"
|
||||
real ysq, terfc, erfcpos;
|
||||
|
||||
// declaration of variables needed in hypfunction 5
|
||||
real h1, h2, h2d, h3, h4, h5;
|
||||
|
||||
// declaration of variables used within macro "juncapfunction"
|
||||
real tmp, id;
|
||||
real isrh, vbi_minus_vjsrh, wsrhstep, dwsrh, wsrh, wdep, asrh;
|
||||
real itat, btat, twoatatoverthreebtat, umaxbeforelimiting, umax, sqrtumax, umaxpoweronepointfive;
|
||||
real wgamma, wtat, ktat, ltat, mtat, xerfc, erfctimesexpmtat, gammamax;
|
||||
real ibbt, Fmaxr;
|
||||
real fbreakdown;
|
||||
|
||||
// declaration of clipped parameters
|
||||
real TRJ_i, IMAX_i;
|
||||
real CJORBOT_i, CJORSTI_i, CJORGAT_i, VBIRBOT_i, VBIRSTI_i, VBIRGAT_i;
|
||||
real PBOT_i, PSTI_i, PGAT_i;
|
||||
real IDSATRBOT_i, IDSATRSTI_i, IDSATRGAT_i, XJUNSTI_i, XJUNGAT_i;
|
||||
real CSRHBOT_i, CSRHSTI_i, CSRHGAT_i, CTATBOT_i, CTATSTI_i, CTATGAT_i;
|
||||
real MEFFTATBOT_i, MEFFTATSTI_i, MEFFTATGAT_i;
|
||||
real CBBTBOT_i, CBBTSTI_i, CBBTGAT_i;
|
||||
real VBRBOT_i, VBRSTI_i, VBRGAT_i, PBRBOT_i, PBRSTI_i, PBRGAT_i;
|
||||
|
||||
// declaration of variables calculated outside macro "juncapfunction", voltage-independent part
|
||||
real tkr, tkd, auxt, KBOL_over_QELE, phitr, phitrinv, phitd, phitdinv;
|
||||
real deltaphigr, phigrbot, phigrsti, phigrgat, deltaphigd, phigdbot, phigdsti, phigdgat;
|
||||
real ftdbot, ftdsti, ftdgat, idsatbot, idsatsti, idsatgat, exp_VMAX_over_phitd;
|
||||
real ubibot, ubisti, ubigat, vbibot, vbisti, vbigat;
|
||||
real vbibot2, vbisti2, vbigat2, vbibot2r, vbisti2r, vbigat2r;
|
||||
real vbiinvbot, vbiinvsti, vbiinvgat;
|
||||
real one_minus_PBOT, one_minus_PSTI, one_minus_PGAT;
|
||||
real one_over_one_minus_PBOT, one_over_one_minus_PSTI, one_over_one_minus_PGAT;
|
||||
real cjobot, cjosti, cjogat, qprefbot, qprefsti, qprefgat;
|
||||
real vbimin, vch, vfmin, vbbtlim;
|
||||
real qpref2bot, qpref2sti, qpref2gat;
|
||||
real wdepnulrbot, wdepnulrsti, wdepnulrgat, wdepnulrinvbot, wdepnulrinvsti, wdepnulrinvgat;
|
||||
real VBIRBOTinv, VBIRSTIinv, VBIRGATinv;
|
||||
real perfc, berfc, cerfc;
|
||||
real deltaEbot, deltaEsti, deltaEgat, atatbot, atatsti, atatgat;
|
||||
real btatpartbot, btatpartsti, btatpartgat;
|
||||
real fbbtbot, fbbtsti, fbbtgat;
|
||||
real fstopbot, fstopsti, fstopgat, VBRinvbot, VBRinvsti, VBRinvgat;
|
||||
real slopebot, slopesti, slopegat;
|
||||
real vmaxbot, vmaxsti, vmaxgat, VMAX;
|
||||
|
||||
// declaration of variables calculated outside macro "juncapfunction", voltage-dependent part
|
||||
real VAK, idmult, vj, z, zinv, two_psistar, vjlim, vjsrh, vbbt, vav;
|
||||
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: JUNCAP200_varlist1.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0 (PSP), 200.4.0 (JUNCAP), December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
// declaration of clipped parameters
|
||||
real TRJ_i, IMAX_i;
|
||||
real CJORBOT_i, CJORSTI_i, CJORGAT_i, VBIRBOT_i, VBIRSTI_i, VBIRGAT_i;
|
||||
real PBOT_i, PSTI_i, PGAT_i, PHIGBOT_i, PHIGSTI_i, PHIGGAT_i;
|
||||
real IDSATRBOT_i, IDSATRSTI_i, IDSATRGAT_i, XJUNSTI_i, XJUNGAT_i;
|
||||
real CSRHBOT_i, CSRHSTI_i, CSRHGAT_i, CTATBOT_i, CTATSTI_i, CTATGAT_i;
|
||||
real MEFFTATBOT_i, MEFFTATSTI_i, MEFFTATGAT_i;
|
||||
real CBBTBOT_i, CBBTSTI_i, CBBTGAT_i, FBBTRBOT_i, FBBTRSTI_i, FBBTRGAT_i;
|
||||
real STFBBTBOT_i, STFBBTSTI_i, STFBBTGAT_i;
|
||||
real VBRBOT_i, VBRSTI_i, VBRGAT_i, PBRBOT_i, PBRSTI_i, PBRGAT_i;
|
||||
|
||||
real SWJUNEXP_i, VJUNREF_i, FJUNQ_i;
|
||||
|
||||
// declaration of variables calculated outside macro "juncapfunction", voltage-independent part
|
||||
real tkr, tkd, auxt, KBOL_over_QELE, phitr, phitrinv, phitd, phitdinv;
|
||||
real perfc, berfc, cerfc;
|
||||
real deltaphigr, deltaphigd, pmax;
|
||||
|
||||
real phigrbot, phigrsti, phigrgat, phigdbot, phigdsti, phigdgat;
|
||||
real ftdbot, ftdsti, ftdgat, idsatbot, idsatsti, idsatgat;
|
||||
real ubibot, ubisti, ubigat, vbibot, vbisti, vbigat;
|
||||
real vbibot2, vbisti2, vbigat2, pbot2, psti2, pgat2, vbibot2r, vbisti2r, vbigat2r;
|
||||
real vbiinvbot, vbiinvsti, vbiinvgat;
|
||||
real one_minus_PBOT, one_minus_PSTI, one_minus_PGAT;
|
||||
real one_over_one_minus_PBOT, one_over_one_minus_PSTI, one_over_one_minus_PGAT;
|
||||
real cjobot, cjosti, cjogat;
|
||||
real qprefbot, qprefsti, qprefgat, qpref2bot, qpref2sti, qpref2gat;
|
||||
real wdepnulrbot, wdepnulrsti, wdepnulrgat, wdepnulrinvbot, wdepnulrinvsti, wdepnulrinvgat;
|
||||
real VBIRBOTinv, VBIRSTIinv, VBIRGATinv;
|
||||
real deltaEbot, deltaEsti, deltaEgat, atatbot, atatsti, atatgat;
|
||||
real btatpartbot, btatpartsti, btatpartgat;
|
||||
real fbbtbot, fbbtsti, fbbtgat;
|
||||
real fstopbot, fstopsti, fstopgat, VBRinvbot, VBRinvsti, VBRinvgat;
|
||||
real slopebot, slopesti, slopegat;
|
||||
real vmaxbot, vmaxsti, vmaxgat;
|
||||
|
||||
// JUNCAP-Express variables
|
||||
real I1, I2, I3, I4, I5;
|
||||
real I1_cor, I2_cor, I3_cor, I4_cor, I5_cor;
|
||||
real V1, V2, V3, V4, V5;
|
||||
real alphaje, m0_rev, mcor_rev;
|
||||
real tt0, tt1, tt2, tm0, tm1;
|
||||
real FRACNA, FRACNB, FRACI;
|
||||
real zfrac;
|
||||
real ijunfor1, ijunfor2, ijunrev;
|
||||
|
||||
`ifdef JUNCAP_StandAlone
|
||||
// do nothing
|
||||
`else // JUNCAP_StandAlone
|
||||
real CJORBOTD_i, CJORSTID_i, CJORGATD_i, VBIRBOTD_i, VBIRSTID_i, VBIRGATD_i;
|
||||
real PBOTD_i, PSTID_i, PGATD_i, PHIGBOTD_i, PHIGSTID_i, PHIGGATD_i;
|
||||
real IDSATRBOTD_i, IDSATRSTID_i, IDSATRGATD_i, XJUNSTID_i, XJUNGATD_i;
|
||||
real CSRHBOTD_i, CSRHSTID_i, CSRHGATD_i, CTATBOTD_i, CTATSTID_i, CTATGATD_i;
|
||||
real MEFFTATBOTD_i, MEFFTATSTID_i, MEFFTATGATD_i;
|
||||
real CBBTBOTD_i, CBBTSTID_i, CBBTGATD_i, FBBTRBOTD_i, FBBTRSTID_i, FBBTRGATD_i;
|
||||
real STFBBTBOTD_i, STFBBTSTID_i, STFBBTGATD_i;
|
||||
real VBRBOTD_i, VBRSTID_i, VBRGATD_i, PBRBOTD_i, PBRSTID_i, PBRGATD_i;
|
||||
|
||||
real VJUNREFD_i, FJUNQD_i;
|
||||
|
||||
real phigrbot_d, phigrsti_d, phigrgat_d, phigdbot_d, phigdsti_d, phigdgat_d;
|
||||
real ftdbot_d, ftdsti_d, ftdgat_d, idsatbot_d, idsatsti_d, idsatgat_d;
|
||||
real ubibot_d, ubisti_d, ubigat_d, vbibot_d, vbisti_d, vbigat_d;
|
||||
real vbiinvbot_d, vbiinvsti_d, vbiinvgat_d;
|
||||
real one_minus_PBOT_d, one_minus_PSTI_d, one_minus_PGAT_d;
|
||||
real one_over_one_minus_PBOT_d, one_over_one_minus_PSTI_d, one_over_one_minus_PGAT_d;
|
||||
real cjobot_d, cjosti_d, cjogat_d;
|
||||
real qprefbot_d, qprefsti_d, qprefgat_d, qpref2bot_d, qpref2sti_d, qpref2gat_d;
|
||||
real wdepnulrbot_d, wdepnulrsti_d, wdepnulrgat_d, wdepnulrinvbot_d, wdepnulrinvsti_d, wdepnulrinvgat_d;
|
||||
real VBIRBOTinv_d, VBIRSTIinv_d, VBIRGATinv_d;
|
||||
real deltaEbot_d, deltaEsti_d, deltaEgat_d, atatbot_d, atatsti_d, atatgat_d;
|
||||
real btatpartbot_d, btatpartsti_d, btatpartgat_d;
|
||||
real fbbtbot_d, fbbtsti_d, fbbtgat_d;
|
||||
real fstopbot_d, fstopsti_d, fstopgat_d, VBRinvbot_d, VBRinvsti_d, VBRinvgat_d;
|
||||
real slopebot_d, slopesti_d, slopegat_d;
|
||||
`endif
|
||||
|
||||
`LocalGlobalVars
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: JUNCAP200_varlist2.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0 (PSP), 200.4.0 (JUNCAP), December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
//================================================================
|
||||
// Variables that are different for source and drain side junction
|
||||
// and have a scope larger than a single macro-call
|
||||
//================================================================
|
||||
|
||||
`ifdef JUNCAP_StandAlone
|
||||
real AB_i, LS_i, LG_i;
|
||||
real zflagbot, zflagsti, zflaggat;
|
||||
real VMAX, exp_VMAX_over_phitd, vbimin, vch, vfmin, vbbtlim;
|
||||
|
||||
// JUNCAP-express variables
|
||||
real xhighf1, expxhf1, xhighf2, expxhf2, xhighr, expxhr;
|
||||
|
||||
// JUNCAP2-express intermediate parameters
|
||||
real ISATFOR1, MFOR1, ISATFOR2, MFOR2, ISATREV, MREV, m0flag;
|
||||
`else // JUNCAP_StandAlone
|
||||
real ABSOURCE_i, LSSOURCE_i, LGSOURCE_i, AS_i, PS_i;
|
||||
real zflagbot_s, zflagsti_s, zflaggat_s;
|
||||
real VMAX_s, exp_VMAX_over_phitd_s, vbimin_s, vch_s, vfmin_s, vbbtlim_s;
|
||||
|
||||
// JUNCAP-express variables
|
||||
real xhighf1_s, expxhf1_s, xhighf2_s, expxhf2_s, xhighr_s, expxhr_s, m0flag_s;
|
||||
|
||||
// JUNCAP2-express intermediate parameters
|
||||
real ISATFOR1_s, MFOR1_s, ISATFOR2_s, MFOR2_s, ISATREV_s, MREV_s;
|
||||
|
||||
real ABDRAIN_i, LSDRAIN_i, LGDRAIN_i, AD_i, PD_i;
|
||||
real zflagbot_d, zflagsti_d, zflaggat_d;
|
||||
real VMAX_d, exp_VMAX_over_phitd_d, vbimin_d, vch_d, vfmin_d, vbbtlim_d;
|
||||
|
||||
// JUNCAP-express variables
|
||||
real xhighf1_d, expxhf1_d, xhighf2_d, expxhf2_d, xhighr_d, expxhr_d, m0flag_d;
|
||||
|
||||
// JUNCAP2-express intermediate parameters
|
||||
real ISATFOR1_d, MFOR1_d, ISATFOR2_d, MFOR2_d, ISATREV_d, MREV_d;
|
||||
`endif // JUNCAP_StandAlone
|
||||
|
|
@ -0,0 +1,309 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: PSP102_ChargesNQS.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
///////////////////////////////////////////////
|
||||
//
|
||||
// Calculate NQS-charge contributions
|
||||
//
|
||||
///////////////////////////////////////////////
|
||||
|
||||
Qp1 = vnorm * V(SPLINE1);
|
||||
Qp2 = vnorm * V(SPLINE2);
|
||||
Qp3 = vnorm * V(SPLINE3);
|
||||
Qp4 = vnorm * V(SPLINE4);
|
||||
Qp5 = vnorm * V(SPLINE5);
|
||||
Qp6 = vnorm * V(SPLINE6);
|
||||
Qp7 = vnorm * V(SPLINE7);
|
||||
Qp8 = vnorm * V(SPLINE8);
|
||||
Qp9 = vnorm * V(SPLINE9);
|
||||
|
||||
Tnorm = 0.0;
|
||||
|
||||
if (SWNQS_i != 0) begin
|
||||
// Dimension and mobility information is included in Tnorm
|
||||
Tnorm = MUNQS_i * phit1 * BET_i / (COX_qm * Gmob_dL);
|
||||
thesat2 = thesat1 * thesat1 * phit1 * phit1;
|
||||
|
||||
if (SWNQS_i == 1) begin
|
||||
dQy = QpN - Qp0;
|
||||
d2Qy = 6.0 * (Qp0 + QpN) - 12.0 * Qp1;
|
||||
end else if (SWNQS_i == 2) begin
|
||||
dQy = (-7.0 * Qp0 - 3.0 * Qp1 + 12.0 * Qp2 - 2.0 * QpN) / 5.0;
|
||||
d2Qy = -18.0 / 5.0 * (-4.0 * Qp0 + 9.0 * Qp1 - 6.0 * Qp2 + QpN);
|
||||
end else if (SWNQS_i == 3) begin
|
||||
dQy = (-13.0 * Qp0 - 6.0 * Qp1 + 24.0 * Qp2 - 6.0 * Qp3 + QpN) / 7.0;
|
||||
d2Qy = (180.0 * Qp0 - 408.0 * Qp1 + 288.0 * Qp2 - 72.0 * Qp3 + 12.0 * QpN) / 7.0;
|
||||
end else if (SWNQS_i == 5) begin
|
||||
dQy = (-181.0 * Qp0 - 84.0 * Qp1 + 24.0 * Qp4 - 6.0 * Qp5 - 90.0 * Qp3 + QpN
|
||||
+ 336.0 * Qp2) / 65.0;
|
||||
d2Qy = (432.0 * Qp4 - 108.0 * Qp5 - 1620.0 * Qp3 + 18.0 * QpN + 3762.0 * Qp0
|
||||
- 8532.0 * Qp1 + 6048.0 * Qp2) / 65.0;
|
||||
end else if (SWNQS_i == 9) begin
|
||||
dQy = (1680.0 * Qp6 + 23400.0 * Qp4 + 5.0 * QpN - 87330.0 * Qp3 + 120.0 * Qp8
|
||||
- 450.0 * Qp7 - 81480.0 * Qp1 + 325920.0 * Qp2
|
||||
-175565.0 * Qp0 - 30.0 * Qp9) / 37829.0 - 30.0 / 181.0 * Qp5;
|
||||
d2Qy = (-13500.0 * Qp7 + 702000.0 * Qp4 - 2619900 * Qp3 - 13793100.0 * Qp1
|
||||
+ 9777600.0 * Qp2 + 6081750.0 * Qp0 + 150.0 * QpN + 3600.0 * Qp8
|
||||
- 900.0 * Qp9 + 50400 * Qp6) / 37829.0 - 900.0 / 181.0 * Qp5;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp1, xg, dQy, d2Qy, fk1)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 2) begin
|
||||
if (SWNQS_i == 2) begin
|
||||
dQy = (2.0 * Qp0 - 12.0 * Qp1 + 3.0 * Qp2 + 7.0 * QpN) / 5.0;
|
||||
d2Qy = -18.0 / 5.0 * (-4.0 * QpN + 9.0 * Qp2 - 6.0 * Qp1 + Qp0);
|
||||
end else if (SWNQS_i == 3) begin
|
||||
dQy = 0.5 * Qp0 - 3.0 * Qp1 + 3.0 * Qp3 - 0.5 * QpN;
|
||||
d2Qy = (-48.0 * Qp0 + 288.0 * Qp1 - 480.0 * Qp2 + 288.0 * Qp3 - 48.0 * QpN) / 7.0;
|
||||
end else if (SWNQS_i == 5) begin
|
||||
dQy = (-291.0 * Qp1 - 6.0 * Qp2 - 84.0 * Qp4 + 21.0 * Qp5) / 65.0
|
||||
+ (630.0 * Qp3 - 7.0 * QpN + 97.0 * Qp0) / 130.0;
|
||||
d2Qy = (-1728.0 * Qp4 + 432.0 * Qp5 + 6480.0 * Qp3 - 72.0 * QpN - 1008 * Qp0
|
||||
+ 6048 * Qp1 - 10152 * Qp2) / 65.0;
|
||||
end else if (SWNQS_i == 9) begin
|
||||
dQy = (-5880.0 * Qp6 - 81900.0 * Qp4 + 305655.0 * Qp3 - 420.0 * Qp8
|
||||
+ 105.0 * Qp9 - 282255.0 * Qp1 + 1575.0 * Qp7 - 5850.0 * Qp2) / 37829.0
|
||||
+ 105.0 / 181.0 * Qp5 + (94085.0 * Qp0 - 35.0 * QpN) / 75658.0;
|
||||
d2Qy = (9777600.0 * Qp1 + 54000.0 * Qp7 - 2808000.0 * Qp4 + 10479600.0 * Qp3
|
||||
- 16413000.0 * Qp2 - 1629600.0 * Qp0 - 600.0 * QpN - 14400.0 * Qp8
|
||||
+ 3600.0 * Qp9 - 201600.0 * Qp6) / 37829.0 + 3600.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp2, xg, dQy, d2Qy, fk2)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 3) begin
|
||||
if (SWNQS_i == 3) begin
|
||||
dQy = (13.0 * QpN + 6.0 * Qp3 - 24.0 * Qp2 + 6.0 * Qp1 - Qp0) / 7.0;
|
||||
d2Qy = (180.0 * QpN - 408.0 * Qp3 + 288.0 * Qp2 - 72.0 * Qp1 + 12.0 * Qp0) / 7.0;
|
||||
end else if (SWNQS_i == 5) begin
|
||||
dQy = (QpN - 6.0 * Qp5 + 24.0 * Qp4 - 24.0 * Qp2 + 6.0 * Qp1 - Qp0) / 5.0;
|
||||
d2Qy = (1296.0 * (Qp4 + Qp2) - 324.0 * (Qp5 + Qp1) - 2052.0 * Qp3
|
||||
+ 54.0 * (QpN + Qp0)) / 13.0;
|
||||
end else if (SWNQS_i == 9) begin
|
||||
dQy = (21840.0 * Qp6 + 304200.0 * Qp4 + 65.0 * QpN - 420.0 * Qp3 + 1560.0 * Qp8
|
||||
- 12605.0 * Qp0-390.0 * Qp9 + 75630.0 * Qp1 - 5850.0 * Qp7
|
||||
- 302520.0 * Qp2) / 37829.0 - 390.0 / 181.0 * Qp5;
|
||||
d2Qy = (-2619900.0 * Qp1 - 202500.0 * Qp7 + 10530000.0 * Qp4 - 16601100.0 * Qp3
|
||||
+ 10479600.0 * Qp2 + 436650.0 * Qp0 + 2250.0 * QpN + 54000.0 * Qp8
|
||||
- 13500.0 * Qp9 + 756000.0 * Qp6) / 37829.0 - 13500.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp3, xg, dQy, d2Qy, fk3)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 4) begin
|
||||
if (SWNQS_i == 5) begin
|
||||
dQy = (-630.0 * Qp3 + 12.0 * Qp4 + 582.0 * Qp5 - 97.0 * QpN + 7.0 * Qp0
|
||||
- 42.0 * Qp1 + 168.0 * Qp2)/130.0;
|
||||
d2Qy = (-10152.0 * Qp4 + 6048.0 * Qp5 + 6480.0 * Qp3 - 1008.0 * QpN
|
||||
- 72.0 * Qp0 + 432.0 * Qp1 - 1728.0 * Qp2) / 65.0;
|
||||
end
|
||||
else if (SWNQS_i == 9) begin
|
||||
dQy = (-81480.0 * Qp6 - 30.0 * Qp4 - 303975.0 * Qp3 - 5820.0 * Qp8
|
||||
+ 1455.0 * Qp9 - 20265.0 * Qp1 + 21825.0 * Qp7 + 81060.0 * Qp2) / 37829.0
|
||||
- 485.0 / 75658.0 * QpN + 1455.0 * Qp5 / 181.0 + 6755.0 * Qp0 / 75658.0;
|
||||
d2Qy = (702000.0 * Qp1 + 756000.0 * Qp7 - 16614600.0 * Qp4 + 10530000.0 * Qp3
|
||||
- 2808000.0 * Qp2 - 117000.0 * Qp0 - 8400.0 * QpN - 201600.0 * Qp8
|
||||
+ 50400.0 * Qp9 - 2822400.0 * Qp6) / 37829.0 + 50400.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp4, xg, dQy, d2Qy, fk4)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 5) begin
|
||||
if (SWNQS_i == 5) begin
|
||||
dQy = (-336.0 * Qp4 + 84.0 * Qp5 + 90.0 * Qp3 + 181.0 * QpN - Qp0 + 6.0 * Qp1
|
||||
- 24.0 * Qp2) / 65.0;
|
||||
d2Qy = (18.0 * Qp0 + 3762.0 * QpN + 6048.0 * Qp4 + 432.0 * Qp2 - 1620.0 * Qp3
|
||||
- 108.0 * Qp1 - 8532.0 * Qp5) / 65.0;
|
||||
end else if (SWNQS_i == 9) begin
|
||||
dQy = (1680.0 * (Qp6 - Qp4) + 5.0 * (QpN - Qp0) + 450.0 * (Qp3 - Qp7)
|
||||
+ 120.0 * (Qp8 - Qp2) - 30.0 * (Qp9 - Qp1)) / 209.0;
|
||||
d2Qy = (-900.0 * (Qp1 + Qp9) - 13500.0 * (Qp7 + Qp3) - 79500.0 * Qp5
|
||||
+ 50400.0 * (Qp4 + Qp6) + 3600.0 * (Qp2 + Qp8) + 150.0 * (Qp0 + QpN)) / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp5, xg, dQy, d2Qy, fk5)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 6) begin
|
||||
if (SWNQS_i == 9) begin
|
||||
dQy = (30.0 * Qp6 + 81480.0 * Qp4 - 21825.0 * Qp3 - 81060.0 * Qp8 + 20265.0 * Qp9
|
||||
- 1455.0 * Qp1 + 303975.0 * Qp7 + 5820.0 * Qp2) / 37829.0
|
||||
-(6755.0 * QpN - 485.0 * Qp0) / 75658.0 - 1455.0 / 181.0 * Qp5;
|
||||
d2Qy = (50400.0 * Qp1 + 10530000.0 * Qp7 - 2822400.0 * Qp4 + 756000.0 * Qp3
|
||||
- 201600.0 * Qp2 - 8400.0 * Qp0 - 117000.0 * QpN - 2808000.0 * Qp8
|
||||
+ 702000.0 * Qp9 - 16614600.0 * Qp6) / 37829.0 + 50400.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp6, xg, dQy, d2Qy, fk6)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 7) begin
|
||||
if (SWNQS_i == 9) begin
|
||||
dQy = (-304200.0 * Qp6 - 21840.0 * Qp4 + 12605.0 * QpN + 5850.0 * Qp3
|
||||
+ 302520.0 * Qp8 - 65.0 * Qp0 - 75630.0 * Qp9 + 390.0 * Qp1 + 420.0 * Qp7
|
||||
- 1560.0 * Qp2) / 37829.0 + 390.0 / 181.0 * Qp5;
|
||||
d2Qy = (-13500.0 * Qp1 - 16601100.0 * Qp7 + 756000.0 * Qp4 - 202500.0 * Qp3
|
||||
+ 54000.0 * Qp2 + 2250.0 * Qp0 + 436650.0 * QpN + 10479600.0 * Qp8
|
||||
- 2619900.0 * Qp9 + 10530000.0 * Qp6) / 37829.0 - 13500.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp7, xg, dQy, d2Qy, fk7)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 8) begin
|
||||
if (SWNQS_i == 9) begin
|
||||
dQy = (81900.0 * Qp6 + 5880.0 * Qp4 - 1575.0 * Qp3 + 5850.0 * Qp8 + 282255.0 * Qp9
|
||||
- 105.0 * Qp1 - 305655.0 * Qp7 + 420.0 * Qp2) / 37829.0 + (35.0 * Qp0
|
||||
- 94085.0 * QpN) / 75658.0 - 105.0 / 181.0 * Qp5;
|
||||
d2Qy = (3600.0 * Qp1 + 10479600.0 * Qp7 - 201600.0 * Qp4 + 54000.0 * Qp3
|
||||
- 14400.0 * Qp2 - 600.0 * Qp0 - 1629600.0 * QpN - 16413000.0 * Qp8
|
||||
+ 9777600.0 * Qp9 - 2808000.0 * Qp6) / 37829.0 + 3600.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp8, xg, dQy, d2Qy, fk8)
|
||||
end
|
||||
|
||||
if (SWNQS_i >= 9) begin
|
||||
if (SWNQS_i == 9) begin
|
||||
dQy = (-23400.0 * Qp6 - 1680.0 * Qp4 + 175565.0 * QpN + 450.0 * Qp3
|
||||
- 325920.0 * Qp8 - 5.0 * Qp0 + 81480.0 * Qp9 + 30.0 * Qp1
|
||||
+ 87330.0 * Qp7 - 120.0 * Qp2) / 37829.0 + 30.0 * Qp5 / 181.0;
|
||||
d2Qy = (-900.0 * Qp1 - 2619900.0 * Qp7 + 50400.0 * Qp4 - 13500.0 * Qp3
|
||||
+ 3600.0 * Qp2 + 150.0 * Qp0 + 6081750.0 * QpN + 9777600.0 * Qp8
|
||||
- 13793100.0 * Qp9 + 702000.0 * Qp6) / 37829.0 - 900.0 * Qp5 / 181.0;
|
||||
end else begin
|
||||
dQy = 0;
|
||||
d2Qy = 0;
|
||||
end
|
||||
`fq(Qp9, xg, dQy, d2Qy, fk9)
|
||||
end
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
// Terminal charges for NQS
|
||||
if (SWNQS_i != 0) begin
|
||||
if (SWNQS_i == 1) begin
|
||||
QS_NQS = (17.0 * Qp0 + 30.0 * Qp1 + QpN) / 96.0;
|
||||
QD_NQS = (Qp0 + 30.0 * Qp1 + 17.0 * QpN) / 96.0;
|
||||
`QiToPhi(Qp1,xg, temp1)
|
||||
QG_NQS = xg - (x_sp + 4.0 * temp1 + x_dp) * `oneSixth;
|
||||
end else if (SWNQS_i == 2) begin
|
||||
QS_NQS = (11.0 * Qp0 + 24.0 * Qp1 + 9.0 * Qp2 + QpN) / 90.0;
|
||||
QD_NQS = (11.0 * QpN + 24.0 * Qp2 + 9.0 * Qp1 + Qp0) / 90.0;
|
||||
`QiToPhi(Qp1, xg, temp1)
|
||||
`QiToPhi(Qp2, xg, temp2)
|
||||
QG_NQS = xg - (x_sp + 3.0 * (temp1 + temp2) + x_dp) * 0.125;
|
||||
end else if (SWNQS_i == 3) begin
|
||||
QS_NQS = (251.0 * Qp0 + 594.0 * Qp1 + 312.0 * Qp2 + 174.0 * Qp3 + 13.0 * QpN) / 2688.0;
|
||||
QD_NQS = (251.0 * QpN + 594.0 * Qp3 + 312.0 * Qp2 + 174.0 * Qp1 + 13.0 * Qp0) / 2688.0;
|
||||
`QiToPhi(Qp1, xg, temp1)
|
||||
`QiToPhi(Qp2, xg, temp2)
|
||||
`QiToPhi(Qp3, xg, temp3)
|
||||
QG_NQS = xg - (x_sp + 4.0 * temp1 + 2.0 * temp2 + 4.0 * temp3 + x_dp) / 12.0;
|
||||
end else if (SWNQS_i == 5) begin
|
||||
QS_NQS = (1187.0 * Qp0 + 43.0 * QpN) / 18720.0 + (503.0 * Qp1 + 172.0 * Qp4
|
||||
+ 87.0 * Qp5 + 265.0 * Qp3 + 328.0 * Qp2) / 3120.0;
|
||||
QD_NQS = (1187.0 * QpN + 43.0 * Qp0) / 18720.0 + (503.0 * Qp5 + 172.0 * Qp2
|
||||
+ 87.0 * Qp1 + 265.0 * Qp3 + 328.0 * Qp4) / 3120.0;
|
||||
`QiToPhi(Qp1, xg, temp1)
|
||||
`QiToPhi(Qp2, xg, temp2)
|
||||
`QiToPhi(Qp3, xg, temp3)
|
||||
`QiToPhi(Qp4, xg, temp4)
|
||||
`QiToPhi(Qp5, xg, temp5)
|
||||
QG_NQS = xg - (x_sp + 4.0 * (temp1 + temp3 + temp5) + 2.0 * (temp2 + temp4) + x_dp) / 18.0;
|
||||
end else if (SWNQS_i == 9) begin
|
||||
QS_NQS = (75653.0 * Qp8 + 225999.0 * Qp4) / 3782900.0 + (151321.0 * Qp9
|
||||
+ 454023.0 * Qp7 + 1073767.0 * Qp3 + 1564569.0 * Qp1) / 15131600.0
|
||||
+ 75623.0 * Qp6 / 1891450.0 + 145.0 * Qp5 / 2896.0 + 72263.0 * Qp2 / 945725.0
|
||||
+ (3504517.0 * Qp0 + 75653.0 * QpN) / 90789600.0;
|
||||
QD_NQS = (75653.0 * Qp2 + 225999.0 * Qp6) / 3782900.0 + (151321.0 * Qp1
|
||||
+ 454023.0 * Qp3 + 1073767.0 * Qp7 + 1564569.0 * Qp9) / 15131600.0
|
||||
+ 75623.0 * Qp4 / 1891450.0 + 145.0 * Qp5 / 2896.0 + 72263.0 * Qp8 / 945725.0
|
||||
+ (3504517.0 * QpN + 75653.0 * Qp0) / 90789600.0;
|
||||
`QiToPhi(Qp1, xg, temp1)
|
||||
`QiToPhi(Qp2, xg, temp2)
|
||||
`QiToPhi(Qp3, xg, temp3)
|
||||
`QiToPhi(Qp4, xg, temp4)
|
||||
`QiToPhi(Qp5, xg, temp5)
|
||||
`QiToPhi(Qp6, xg, temp6)
|
||||
`QiToPhi(Qp7, xg, temp7)
|
||||
`QiToPhi(Qp8, xg, temp8)
|
||||
`QiToPhi(Qp9, xg, temp9)
|
||||
QG_NQS = xg - (x_sp + 4.0 * (temp1 + temp3 + temp5 + temp7 + temp9)
|
||||
+ 2.0 * (temp2 + temp4 + temp6 + temp8) + x_dp) / 30.0;
|
||||
end
|
||||
QG_NQS = pd * QG_NQS;
|
||||
|
||||
if (sigVds > 0) begin
|
||||
Qs = COX_qm * phit1 * QS_NQS;
|
||||
Qd = COX_qm * phit1 * QD_NQS;
|
||||
end else begin
|
||||
Qs = COX_qm * phit1 * QD_NQS;
|
||||
Qd = COX_qm * phit1 * QS_NQS;
|
||||
end
|
||||
Qg = COX_qm * phit1 * QG_NQS;
|
||||
Qb = -Qg - Qs - Qd;
|
||||
end
|
||||
|
||||
// Update internal nodes
|
||||
V(RES1) <+ vnorm_inv * I(RES1) * r_nqs;
|
||||
V(SPLINE1) <+ vnorm_inv * idt(-Tnorm * fk1, Qp1_0);
|
||||
V(RES2) <+ vnorm_inv * I(RES2) * r_nqs;
|
||||
V(SPLINE2) <+ vnorm_inv * idt(-Tnorm * fk2, Qp2_0);
|
||||
V(RES3) <+ vnorm_inv * I(RES3) * r_nqs;
|
||||
V(SPLINE3) <+ vnorm_inv * idt(-Tnorm * fk3, Qp3_0);
|
||||
V(RES4) <+ vnorm_inv * I(RES4) * r_nqs;
|
||||
V(SPLINE4) <+ vnorm_inv * idt(-Tnorm * fk4, Qp4_0);
|
||||
V(RES5) <+ vnorm_inv * I(RES5) * r_nqs;
|
||||
V(SPLINE5) <+ vnorm_inv * idt(-Tnorm * fk5, Qp5_0);
|
||||
V(RES6) <+ vnorm_inv * I(RES6) * r_nqs;
|
||||
V(SPLINE6) <+ vnorm_inv * idt(-Tnorm * fk6, Qp6_0);
|
||||
V(RES7) <+ vnorm_inv * I(RES7) * r_nqs;
|
||||
V(SPLINE7) <+ vnorm_inv * idt(-Tnorm * fk7, Qp7_0);
|
||||
V(RES8) <+ vnorm_inv * I(RES8) * r_nqs;
|
||||
V(SPLINE8) <+ vnorm_inv * idt(-Tnorm * fk8, Qp8_0);
|
||||
V(RES9) <+ vnorm_inv * I(RES9) * r_nqs;
|
||||
V(SPLINE9) <+ vnorm_inv * idt(-Tnorm * fk9, Qp9_0);
|
||||
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: PSP102_InitNQS.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Computing initial (dc) values for internal nodes.
|
||||
// This code is independent of internal-node voltages
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Qp1_0 = 0.0;
|
||||
Qp2_0 = 0.0;
|
||||
Qp3_0 = 0.0;
|
||||
Qp4_0 = 0.0;
|
||||
Qp5_0 = 0.0;
|
||||
Qp6_0 = 0.0;
|
||||
Qp7_0 = 0.0;
|
||||
Qp8_0 = 0.0;
|
||||
Qp9_0 = 0.0;
|
||||
fk1 = 0.0;
|
||||
fk2 = 0.0;
|
||||
fk3 = 0.0;
|
||||
fk4 = 0.0;
|
||||
fk5 = 0.0;
|
||||
fk6 = 0.0;
|
||||
fk7 = 0.0;
|
||||
fk8 = 0.0;
|
||||
fk9 = 0.0;
|
||||
if (SWNQS_i != 0) begin
|
||||
dQis = 0.0;
|
||||
dQy = 0.0;
|
||||
dfQi = 0.0;
|
||||
fQi = 0.0;
|
||||
d2Qy = 0.0;
|
||||
|
||||
Qp1 = 0.0;
|
||||
Qp2 = 0.0;
|
||||
Qp3 = 0.0;
|
||||
Qp4 = 0.0;
|
||||
Qp5 = 0.0;
|
||||
Qp6 = 0.0;
|
||||
Qp7 = 0.0;
|
||||
Qp8 = 0.0;
|
||||
Qp9 = 0.0;
|
||||
|
||||
phi_p1 = 0.0;
|
||||
phi_p2 = 0.0;
|
||||
phi_p3 = 0.0;
|
||||
phi_p4 = 0.0;
|
||||
phi_p5 = 0.0;
|
||||
phi_p6 = 0.0;
|
||||
phi_p7 = 0.0;
|
||||
phi_p8 = 0.0;
|
||||
phi_p9 = 0.0;
|
||||
|
||||
// Setting initial values for charge along the channel
|
||||
// from interpolated DC-solution
|
||||
if (xg > 0) begin
|
||||
if (SWNQS_i == 1) begin
|
||||
phi_p1 = `Phiy(0.5);
|
||||
`PhiToQb(phi_p1,Qb_tmp)
|
||||
Qp1_0 = -pd * (xg - phi_p1) - Qb_tmp;
|
||||
end else if (SWNQS_i == 2) begin
|
||||
phi_p1 = `Phiy(`oneThird);
|
||||
`PhiToQb(phi_p1,Qb_tmp)
|
||||
Qp1_0 = -pd * (xg - phi_p1) - Qb_tmp;
|
||||
|
||||
phi_p2 = `Phiy(`twoThirds);
|
||||
`PhiToQb(phi_p2,Qb_tmp)
|
||||
Qp2_0 = -pd * (xg - phi_p2) - Qb_tmp;
|
||||
if (sigVds < 0) begin
|
||||
`swap(Qp1_0, Qp2_0)
|
||||
end
|
||||
end else if (SWNQS_i == 3) begin
|
||||
phi_p1 = `Phiy(0.25);
|
||||
`PhiToQb(phi_p1,Qb_tmp)
|
||||
Qp1_0 = -pd * (xg - phi_p1) - Qb_tmp;
|
||||
|
||||
phi_p2 = `Phiy(0.5);
|
||||
`PhiToQb(phi_p2,Qb_tmp)
|
||||
Qp2_0 = -pd * (xg - phi_p2) - Qb_tmp;
|
||||
|
||||
phi_p3 = `Phiy(0.75);
|
||||
`PhiToQb(phi_p3,Qb_tmp)
|
||||
Qp3_0 = -pd * (xg - phi_p3) - Qb_tmp;
|
||||
if (sigVds < 0) begin
|
||||
`swap(Qp1_0, Qp3_0)
|
||||
end
|
||||
end else if (SWNQS_i == 5) begin
|
||||
phi_p1 = `Phiy(`oneSixth);
|
||||
`PhiToQb(phi_p1,Qb_tmp)
|
||||
Qp1_0 = -pd * (xg - phi_p1) - Qb_tmp;
|
||||
|
||||
phi_p2 = `Phiy(`oneThird);
|
||||
`PhiToQb(phi_p2,Qb_tmp)
|
||||
Qp2_0 = -pd * (xg - phi_p2) - Qb_tmp;
|
||||
|
||||
phi_p3 = `Phiy(0.5);
|
||||
`PhiToQb(phi_p3,Qb_tmp)
|
||||
Qp3_0 = -pd * (xg - phi_p3) - Qb_tmp;
|
||||
|
||||
phi_p4 = `Phiy(`twoThirds);
|
||||
`PhiToQb(phi_p4,Qb_tmp)
|
||||
Qp4_0 = -pd * (xg - phi_p4) - Qb_tmp;
|
||||
|
||||
phi_p5 = `Phiy(0.8333333333333333);
|
||||
`PhiToQb(phi_p5,Qb_tmp)
|
||||
Qp5_0 = -pd * (xg - phi_p5) - Qb_tmp;
|
||||
if (sigVds < 0) begin
|
||||
`swap(Qp1_0, Qp5_0)
|
||||
`swap(Qp2_0, Qp4_0)
|
||||
end
|
||||
end else if (SWNQS_i == 9) begin
|
||||
phi_p1 = `Phiy(0.1);
|
||||
`PhiToQb(phi_p1,Qb_tmp)
|
||||
Qp1_0 = -pd * (xg - phi_p1) - Qb_tmp;
|
||||
|
||||
phi_p2 = `Phiy(0.2);
|
||||
`PhiToQb(phi_p2,Qb_tmp)
|
||||
Qp2_0 = -pd * (xg - phi_p2) - Qb_tmp;
|
||||
|
||||
phi_p3 = `Phiy(0.3);
|
||||
`PhiToQb(phi_p3,Qb_tmp)
|
||||
Qp3_0 = -pd * (xg - phi_p3) - Qb_tmp;
|
||||
|
||||
phi_p4 = `Phiy(0.4);
|
||||
`PhiToQb(phi_p4,Qb_tmp)
|
||||
Qp4_0 = -pd * (xg - phi_p4) - Qb_tmp;
|
||||
|
||||
phi_p5 = `Phiy(0.5);
|
||||
`PhiToQb(phi_p5,Qb_tmp)
|
||||
Qp5_0 = -pd * (xg - phi_p5) - Qb_tmp;
|
||||
|
||||
phi_p6 = `Phiy(0.6);
|
||||
`PhiToQb(phi_p6,Qb_tmp)
|
||||
Qp6_0 = -pd * (xg - phi_p6) - Qb_tmp;
|
||||
|
||||
phi_p7 = `Phiy(0.7);
|
||||
`PhiToQb(phi_p7,Qb_tmp)
|
||||
Qp7_0 = -pd * (xg - phi_p7) - Qb_tmp;
|
||||
|
||||
phi_p8 = `Phiy(0.8);
|
||||
`PhiToQb(phi_p8,Qb_tmp)
|
||||
Qp8_0 = -pd * (xg - phi_p8) - Qb_tmp;
|
||||
|
||||
phi_p9 = `Phiy(0.9);
|
||||
`PhiToQb(phi_p9,Qb_tmp)
|
||||
Qp9_0 = -pd * (xg - phi_p9) - Qb_tmp;
|
||||
if (sigVds < 0) begin
|
||||
`swap(Qp1_0, Qp9_0)
|
||||
`swap(Qp2_0, Qp8_0)
|
||||
`swap(Qp3_0, Qp7_0)
|
||||
`swap(Qp4_0, Qp6_0)
|
||||
end
|
||||
end
|
||||
end // (x_g >0)
|
||||
end // (SWNQS_i != 0)
|
||||
|
||||
x_sp = 0.0;
|
||||
x_dp = 0.0;
|
||||
Qp0 = 0.0;
|
||||
QpN = 0.0;
|
||||
if (SWNQS_i != 0.0) begin
|
||||
x_sp = x_m - sigVds * 0.5 * dps * inv_phit1;
|
||||
x_dp = x_m + sigVds * 0.5 * dps * inv_phit1;
|
||||
Qp0 = 0.0;
|
||||
QpN = 0.0;
|
||||
if (x_sp > 0) begin
|
||||
`PhiToQb(x_sp, QbSIGN)
|
||||
Qp0 = -pd * (xg - x_sp) - QbSIGN;
|
||||
end
|
||||
if (x_dp > 0) begin
|
||||
`PhiToQb(x_dp, QbSIGN)
|
||||
QpN = -pd * (xg - x_dp) - QbSIGN;
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: PSP102_binning.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
// auxiliary variables
|
||||
iLEWE = iLE * iWE;
|
||||
iiLE = LE / LEN;
|
||||
iiWE = WE / WEN;
|
||||
iiLEWE = iiLE * iiWE;
|
||||
iiiLEWE = iiWE / iiLE;
|
||||
|
||||
// auxiliary variables for COX only
|
||||
iiLEcv = LEcv / LEN;
|
||||
iiWEcv = WEcv / WEN;
|
||||
iiLEWEcv = iiLEcv * iiWEcv;
|
||||
|
||||
// auxiliary variables for CGOV only
|
||||
iLEcv = LEN / LEcv;
|
||||
iiiLEWEcv = iiWEcv / iiLEcv;
|
||||
|
||||
// auxiliary variables for CGBOV only
|
||||
iiLcv = Lcv / LEN;
|
||||
iiWcv = Wcv / WEN;
|
||||
iiLWcv = iiLcv * iiWcv;
|
||||
|
||||
// auxiliary variables for CFR only
|
||||
iLcv = LEN / Lcv;
|
||||
iiiLWcv = iiWcv / iiLcv;
|
||||
|
||||
// Process parameters
|
||||
VFB = POVFB + iLE * PLVFB + iWE * PWVFB + iLEWE * PLWVFB;
|
||||
STVFB = POSTVFB + iLE * PLSTVFB + iWE * PWSTVFB + iLEWE * PLWSTVFB;
|
||||
TOX = POTOX;
|
||||
EPSROX = POEPSROX;
|
||||
NEFF = PONEFF + iLE * PLNEFF + iWE * PWNEFF + iLEWE * PLWNEFF;
|
||||
VNSUB = POVNSUB;
|
||||
NSLP = PONSLP;
|
||||
DNSUB = PODNSUB;
|
||||
DPHIB = PODPHIB + iLE * PLDPHIB + iWE * PWDPHIB + iLEWE * PLWDPHIB;
|
||||
NP = PONP + iLE * PLNP + iWE * PWNP + iLEWE * PLWNP;
|
||||
CT = POCT + iLE * PLCT + iWE * PWCT + iLEWE * PLWCT;
|
||||
TOXOV = POTOXOV;
|
||||
TOXOVD = POTOXOVD;
|
||||
NOV = PONOV + iLE * PLNOV + iWE * PWNOV + iLEWE * PLWNOV;
|
||||
NOVD = PONOVD + iLE * PLNOVD + iWE * PWNOVD + iLEWE * PLWNOVD;
|
||||
|
||||
// DIBL parameters
|
||||
CF = POCF + iLE * PLCF + iWE * PWCF + iLEWE * PLWCF;
|
||||
CFB = POCFB;
|
||||
|
||||
// Mobility parameters
|
||||
BETN = POBETN + iLE * PLBETN + iiWE * PWBETN + iiiLEWE * PLWBETN;
|
||||
|
||||
|
||||
STBET = POSTBET + iLE * PLSTBET + iWE * PWSTBET + iLEWE * PLWSTBET;
|
||||
MUE = POMUE + iLE * PLMUE + iWE * PWMUE + iLEWE * PLWMUE;
|
||||
STMUE = POSTMUE;
|
||||
THEMU = POTHEMU;
|
||||
STTHEMU = POSTTHEMU;
|
||||
CS = POCS + iLE * PLCS + iWE * PWCS + iLEWE * PLWCS;
|
||||
STCS = POSTCS;
|
||||
XCOR = POXCOR + iLE * PLXCOR + iWE * PWXCOR + iLEWE * PLWXCOR;
|
||||
STXCOR = POSTXCOR;
|
||||
FETA = POFETA;
|
||||
|
||||
// Series resistance parameters
|
||||
RS = PORS + iLE * PLRS + iWE * PWRS + iLEWE * PLWRS;
|
||||
STRS = POSTRS;
|
||||
RSB = PORSB;
|
||||
RSG = PORSG;
|
||||
|
||||
// Velocity saturation parameters
|
||||
THESAT = POTHESAT + iLE * PLTHESAT + iWE * PWTHESAT + iLEWE * PLWTHESAT;
|
||||
STTHESAT = POSTTHESAT + iLE * PLSTTHESAT + iWE * PWSTTHESAT + iLEWE * PLWSTTHESAT;
|
||||
THESATB = POTHESATB + iLE * PLTHESATB + iWE * PWTHESATB + iLEWE * PLWTHESATB;
|
||||
THESATG = POTHESATG + iLE * PLTHESATG + iWE * PWTHESATG + iLEWE * PLWTHESATG;
|
||||
|
||||
// Saturation voltage parameters
|
||||
AX = POAX + iLE * PLAX + iWE * PWAX + iLEWE * PLWAX;
|
||||
|
||||
// Channel length modulation (CLM) parameters
|
||||
ALP = POALP + iLE * PLALP + iWE * PWALP + iLEWE * PLWALP;
|
||||
ALP1 = POALP1 + iLE * PLALP1 + iWE * PWALP1 + iLEWE * PLWALP1;
|
||||
ALP2 = POALP2 + iLE * PLALP2 + iWE * PWALP2 + iLEWE * PLWALP2;
|
||||
VP = POVP;
|
||||
|
||||
// Impact ionization parameters
|
||||
A1 = POA1 + iLE * PLA1 + iWE * PWA1 + iLEWE * PLWA1;
|
||||
A2 = POA2;
|
||||
STA2 = POSTA2;
|
||||
A3 = POA3 + iLE * PLA3 + iWE * PWA3 + iLEWE * PLWA3;
|
||||
A4 = POA4 + iLE * PLA4 + iWE * PWA4 + iLEWE * PLWA4;
|
||||
GCO = POGCO;
|
||||
|
||||
// Gate current parameters
|
||||
IGINV = POIGINV + iiLE * PLIGINV + iiWE * PWIGINV + iiLEWE * PLWIGINV;
|
||||
IGOV = POIGOV + iLE * PLIGOV + iiWE * PWIGOV + iiiLEWE * PLWIGOV;
|
||||
IGOVD = POIGOVD + iLE * PLIGOVD + iiWE * PWIGOVD + iiiLEWE * PLWIGOVD;
|
||||
STIG = POSTIG;
|
||||
GC2 = POGC2;
|
||||
GC3 = POGC3;
|
||||
CHIB = POCHIB;
|
||||
|
||||
// Gate-induced drain leakage (GIDL) parameters
|
||||
AGIDL = POAGIDL + iLE * PLAGIDL + iiWE * PWAGIDL + iiiLEWE * PLWAGIDL;
|
||||
AGIDLD = POAGIDLD + iLE * PLAGIDLD + iiWE * PWAGIDLD + iiiLEWE * PLWAGIDLD;
|
||||
BGIDL = POBGIDL;
|
||||
BGIDLD = POBGIDLD;
|
||||
STBGIDL = POSTBGIDL;
|
||||
STBGIDLD = POSTBGIDLD;
|
||||
CGIDL = POCGIDL;
|
||||
CGIDLD = POCGIDLD;
|
||||
|
||||
// Charge model parameters
|
||||
COX = POCOX + iiLEcv * PLCOX + iiWEcv * PWCOX + iiLEWEcv * PLWCOX;
|
||||
CGOV = POCGOV + iLEcv * PLCGOV + iiWEcv * PWCGOV + iiiLEWEcv * PLWCGOV;
|
||||
CGOVD = POCGOVD + iLEcv * PLCGOVD + iiWEcv * PWCGOVD + iiiLEWEcv * PLWCGOVD;
|
||||
CGBOV = POCGBOV + iiLcv * PLCGBOV + iiWcv * PWCGBOV + iiLWcv * PLWCGBOV;
|
||||
CFR = POCFR + iLcv * PLCFR + iiWcv * PWCFR + iiiLWcv * PLWCFR;
|
||||
CFRD = POCFRD + iLcv * PLCFRD + iiWcv * PWCFRD + iiiLWcv * PLWCFRD;
|
||||
|
||||
// Noise model parameters
|
||||
FNT = POFNT;
|
||||
FNTEXC = iLE * iLE * (POFNTEXC + iLE * PLFNTEXC + iWE * PWFNTEXC + iLEWE * PLWFNTEXC);
|
||||
NFA = PONFA + iLE * PLNFA + iWE * PWNFA + iLEWE * PLWNFA;
|
||||
NFB = PONFB + iLE * PLNFB + iWE * PWNFB + iLEWE * PLWNFB;
|
||||
NFC = PONFC + iLE * PLNFC + iWE * PWNFC + iLEWE * PLWNFC;
|
||||
EF = POEF;
|
||||
|
||||
// Well proximity effect parameters
|
||||
KVTHOWE = POKVTHOWE + iLE * PLKVTHOWE + iWE * PWKVTHOWE + iLEWE * PLWKVTHOWE;
|
||||
KUOWE = POKUOWE + iLE * PLKUOWE + iWE * PWKUOWE + iLEWE * PLWKUOWE;
|
||||
|
|
@ -0,0 +1,287 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: PSP102_binpars.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// PSP global model parameters (binning)
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
parameter real LEVEL = 1021 `P(info="Model level" unit="");
|
||||
parameter real TYPE = 1 `from( -1.0,1.0 ) `P(info="Channel type parameter, +1=NMOS -1=PMOS" unit="");
|
||||
parameter real TR = 21 `from( -273.0,inf ) `P(info="nominal (reference) temperature" unit="C");
|
||||
|
||||
// Switch parameters
|
||||
parameter real SWIGATE = 0 `from( 0.0,1.0 ) `P(info="Flag for gate current, 0=turn off IG" unit="");
|
||||
parameter real SWIMPACT = 0 `from( 0.0,1.0 ) `P(info="Flag for impact ionization current, 0=turn off II" unit="");
|
||||
parameter real SWGIDL = 0 `from( 0.0,1.0 ) `P(info="Flag for GIDL current, 0=turn off IGIDL" unit="");
|
||||
parameter real SWJUNCAP = 0 `from( 0.0,3.0 ) `P(info="Flag for juncap, 0=turn off juncap" unit="");
|
||||
parameter real SWJUNASYM = 0 `P(info="Flag for asymmetric junctions; 0=symmetric, 1=asymmetric" unit="");
|
||||
parameter real QMC = 1 `from( 0.0,inf ) `P(info="Quantum-mechanical correction factor" unit="");
|
||||
|
||||
// Process parameters
|
||||
parameter real LVARO = 0 `P(info="Geometry independent difference between actual and programmed poly-silicon gate length" unit="m");
|
||||
parameter real LVARL = 0 `P(info="Length dependence of difference between actual and programmed poly-silicon gate length" unit="");
|
||||
parameter real LAP = 0 `P(info="Effective channel length reduction per side due to lateral diffusion of source/drain dopant ions" unit="m");
|
||||
parameter real WVARO = 0 `P(info="Geometry independent difference between actual and programmed field-oxide opening" unit="m");
|
||||
parameter real WVARW = 0 `P(info="Width dependence of difference between actual and programmed field-oxide opening" unit="");
|
||||
parameter real WOT = 0 `P(info="Effective reduction of channel width per side due to lateral diffusion of channel-stop dopant ions" unit="m");
|
||||
parameter real DLQ = 0 `P(info="Effective channel length reduction for CV" unit="m");
|
||||
parameter real DWQ = 0 `P(info="Effective channel width reduction for CV" unit="m");
|
||||
parameter real POVFB = -1 `P(info="Coefficient for the geometry independent part of VFB" unit="V");
|
||||
parameter real PLVFB = 0.0 `P(info="Coefficient for the length dependence of VFB" unit="V");
|
||||
parameter real PWVFB = 0.0 `P(info="Coefficient for the width dependence of VFB" unit="V");
|
||||
parameter real PLWVFB = 0.0 `P(info="Coefficient for the length times width dependence of VFB" unit="V");
|
||||
parameter real POSTVFB = 0.0005 `P(info="Coefficient for the geometry independent part of STVFB" unit="V/K");
|
||||
parameter real PLSTVFB = 0.0 `P(info="Coefficient for the length dependence of STVFB" unit="V/K");
|
||||
parameter real PWSTVFB = 0.0 `P(info="Coefficient for the width dependence of STVFB" unit="V/K");
|
||||
parameter real PLWSTVFB = 0.0 `P(info="Coefficient for the length times width dependence of STVFB" unit="V/K");
|
||||
parameter real POTOX = 2E-09 `P(info="Coefficient for the geometry independent part of TOX" unit="m");
|
||||
parameter real POEPSROX = 3.9 `P(info="Coefficient for the geometry independent part of EPSOX" unit="");
|
||||
parameter real PONEFF = 5E+23 `P(info="Coefficient for the geometry independent part of NEFF" unit="m^-3");
|
||||
parameter real PLNEFF = 0.0 `P(info="Coefficient for the length dependence of NEFF" unit="m^-3");
|
||||
parameter real PWNEFF = 0.0 `P(info="Coefficient for the width dependence of NEFF" unit="m^-3");
|
||||
parameter real PLWNEFF = 0.0 `P(info="Coefficient for the length times width dependence of NEFF" unit="m^-3");
|
||||
parameter real POVNSUB = 0 `P(info="Coefficient for the geometry independent part of VNSUB" unit="V");
|
||||
parameter real PONSLP = 0.05 `P(info="Coefficient for the geometry independent part of NSLP" unit="V");
|
||||
parameter real PODNSUB = 0 `P(info="Coefficient for the geometry independent part of DNSUB" unit="V^-1");
|
||||
parameter real PODPHIB = 0 `P(info="Coefficient for the geometry independent part of DPHIB" unit="V");
|
||||
parameter real PLDPHIB = 0.0 `P(info="Coefficient for the length dependence of DPHIB" unit="V");
|
||||
parameter real PWDPHIB = 0.0 `P(info="Coefficient for the width dependence of DPHIB" unit="V");
|
||||
parameter real PLWDPHIB = 0.0 `P(info="Coefficient for the length times width dependence of DPHIB" unit="V");
|
||||
parameter real PONP = 1E+26 `P(info="Coefficient for the geometry independent part of NP" unit="m^-3");
|
||||
parameter real PLNP = 0.0 `P(info="Coefficient for the length dependence of NP" unit="m^-3");
|
||||
parameter real PWNP = 0.0 `P(info="Coefficient for the width dependence of NP" unit="m^-3");
|
||||
parameter real PLWNP = 0.0 `P(info="Coefficient for the length times width dependence of NP" unit="m^-3");
|
||||
parameter real POCT = 0 `P(info="Coefficient for the geometry independent part of CT" unit="");
|
||||
parameter real PLCT = 0.0 `P(info="Coefficient for the length dependence of CT" unit="");
|
||||
parameter real PWCT = 0.0 `P(info="Coefficient for the width dependence of CT" unit="");
|
||||
parameter real PLWCT = 0.0 `P(info="Coefficient for the length times width dependence of CT" unit="");
|
||||
parameter real POTOXOV = 2E-09 `P(info="Coefficient for the geometry independent part of TOXOV" unit="m");
|
||||
parameter real POTOXOVD = 2E-09 `P(info="Coefficient for the geometry independent part of TOXOV for drain side" unit="m");
|
||||
parameter real PONOV = 5E+25 `P(info="Coefficient for the geometry independent part of NOV" unit="m^-3");
|
||||
parameter real PLNOV = 0.0 `P(info="Coefficient for the length dependence of NOV" unit="m^-3");
|
||||
parameter real PWNOV = 0.0 `P(info="Coefficient for the width dependence of NOV" unit="m^-3");
|
||||
parameter real PLWNOV = 0.0 `P(info="Coefficient for the length times width dependence of NOV" unit="m^-3");
|
||||
parameter real PONOVD = 5E+25 `P(info="Coefficient for the geometry independent part of NOV for drain side" unit="m^-3");
|
||||
parameter real PLNOVD = 0.0 `P(info="Coefficient for the length dependence of NOV for drain side" unit="m^-3");
|
||||
parameter real PWNOVD = 0.0 `P(info="Coefficient for the width dependence of NOV for drain side" unit="m^-3");
|
||||
parameter real PLWNOVD = 0.0 `P(info="Coefficient for the length times width dependence of NOV for drain side" unit="m^-3");
|
||||
|
||||
// DIBL parameters
|
||||
parameter real POCF = 0 `P(info="Coefficient for the geometry independent part of CF" unit="");
|
||||
parameter real PLCF = 0.0 `P(info="Coefficient for the length dependence of CF" unit="");
|
||||
parameter real PWCF = 0.0 `P(info="Coefficient for the width dependence of CF" unit="");
|
||||
parameter real PLWCF = 0.0 `P(info="Coefficient for the length times width dependence of CF" unit="");
|
||||
parameter real POCFB = 0 `P(info="Coefficient for the geometry independent part of CFB" unit="V^-1");
|
||||
|
||||
// Mobility parameters
|
||||
parameter real POBETN = 0.07 `P(info="Coefficient for the geometry independent part of BETN" unit="m^2/V/s");
|
||||
parameter real PLBETN = 0.0 `P(info="Coefficient for the length dependence of BETN" unit="m^2/V/s");
|
||||
parameter real PWBETN = 0.0 `P(info="Coefficient for the width dependence of BETN" unit="m^2/V/s");
|
||||
parameter real PLWBETN = 0.0 `P(info="Coefficient for the length times width dependence of BETN" unit="m^2/V/s");
|
||||
parameter real POSTBET = 1 `P(info="Coefficient for the geometry independent part of STBET" unit="");
|
||||
parameter real PLSTBET = 0.0 `P(info="Coefficient for the length dependence of STBET" unit="");
|
||||
parameter real PWSTBET = 0.0 `P(info="Coefficient for the width dependence of STBET" unit="");
|
||||
parameter real PLWSTBET = 0.0 `P(info="Coefficient for the length times width dependence of STBET" unit="");
|
||||
parameter real POMUE = 0.5 `P(info="Coefficient for the geometry independent part of MUE" unit="m/V");
|
||||
parameter real PLMUE = 0.0 `P(info="Coefficient for the length dependence of MUE" unit="m/V");
|
||||
parameter real PWMUE = 0.0 `P(info="Coefficient for the width dependence of MUE" unit="m/V");
|
||||
parameter real PLWMUE = 0.0 `P(info="Coefficient for the length times width dependence of MUE" unit="m/V");
|
||||
parameter real POSTMUE = 0 `P(info="Coefficient for the geometry independent part of STMUE" unit="");
|
||||
parameter real POTHEMU = 1.5 `P(info="Coefficient for the geometry independent part of THEMU" unit="");
|
||||
parameter real POSTTHEMU = 1.5 `P(info="Coefficient for the geometry independent part of STTHEMU" unit="");
|
||||
parameter real POCS = 0 `P(info="Coefficient for the geometry independent part of CS" unit="");
|
||||
parameter real PLCS = 0.0 `P(info="Coefficient for the length dependence of CS" unit="");
|
||||
parameter real PWCS = 0.0 `P(info="Coefficient for the width dependence of CS" unit="");
|
||||
parameter real PLWCS = 0.0 `P(info="Coefficient for the length times width dependence of CS" unit="");
|
||||
parameter real POSTCS = 0 `P(info="Coefficient for the geometry independent part of STCS" unit="");
|
||||
parameter real POXCOR = 0 `P(info="Coefficient for the geometry independent part of XCOR" unit="V^-1");
|
||||
parameter real PLXCOR = 0.0 `P(info="Coefficient for the length dependence of XCOR" unit="V^-1");
|
||||
parameter real PWXCOR = 0.0 `P(info="Coefficient for the width dependence of XCOR" unit="V^-1");
|
||||
parameter real PLWXCOR = 0.0 `P(info="Coefficient for the length times width dependence of XCOR" unit="V^-1");
|
||||
parameter real POSTXCOR = 0 `P(info="Coefficient for the geometry independent part of STXCOR" unit="");
|
||||
parameter real POFETA = 1 `P(info="Coefficient for the geometry independent part of FETA" unit="");
|
||||
|
||||
// Series resistance parameters
|
||||
parameter real PORS = 30 `P(info="Coefficient for the geometry independent part of RS" unit="Ohm");
|
||||
parameter real PLRS = 0.0 `P(info="Coefficient for the length dependence of RS" unit="Ohm");
|
||||
parameter real PWRS = 0.0 `P(info="Coefficient for the width dependence of RS" unit="Ohm");
|
||||
parameter real PLWRS = 0.0 `P(info="Coefficient for the length times width dependence of RS" unit="Ohm");
|
||||
parameter real POSTRS = 1 `P(info="Coefficient for the geometry independent part of STRS" unit="");
|
||||
parameter real PORSB = 0 `P(info="Coefficient for the geometry independent part of RSB" unit="V^-1");
|
||||
parameter real PORSG = 0 `P(info="Coefficient for the geometry independent part of RSG" unit="V^-1");
|
||||
|
||||
// Velocity saturation parameters
|
||||
parameter real POTHESAT = 1 `P(info="Coefficient for the geometry independent part of THESAT" unit="V^-1");
|
||||
parameter real PLTHESAT = 0.0 `P(info="Coefficient for the length dependence of THESAT" unit="V^-1");
|
||||
parameter real PWTHESAT = 0.0 `P(info="Coefficient for the width dependence of THESAT" unit="V^-1");
|
||||
parameter real PLWTHESAT = 0.0 `P(info="Coefficient for the length times width dependence of THESAT" unit="V^-1");
|
||||
parameter real POSTTHESAT = 1 `P(info="Coefficient for the geometry independent part of STTHESAT" unit="");
|
||||
parameter real PLSTTHESAT = 0.0 `P(info="Coefficient for the length dependence of STTHESAT" unit="");
|
||||
parameter real PWSTTHESAT = 0.0 `P(info="Coefficient for the width dependence of STTHESAT" unit="");
|
||||
parameter real PLWSTTHESAT = 0.0 `P(info="Coefficient for the length times width dependence of STTHESAT" unit="");
|
||||
parameter real POTHESATB = 0 `P(info="Coefficient for the geometry independent part of THESATB" unit="V^-1");
|
||||
parameter real PLTHESATB = 0.0 `P(info="Coefficient for the length dependence of THESATB" unit="V^-1");
|
||||
parameter real PWTHESATB = 0.0 `P(info="Coefficient for the width dependence of THESATB" unit="V^-1");
|
||||
parameter real PLWTHESATB = 0.0 `P(info="Coefficient for the length times width dependence of THESATB" unit="V^-1");
|
||||
parameter real POTHESATG = 0 `P(info="Coefficient for the geometry independent part of THESATG" unit="V^-1");
|
||||
parameter real PLTHESATG = 0.0 `P(info="Coefficient for the length dependence of THESATG" unit="V^-1");
|
||||
parameter real PWTHESATG = 0.0 `P(info="Coefficient for the width dependence of THESATG" unit="V^-1");
|
||||
parameter real PLWTHESATG = 0.0 `P(info="Coefficient for the length times width dependence of THESATG" unit="V^-1");
|
||||
|
||||
// Saturation voltage parameters
|
||||
parameter real POAX = 3 `P(info="Coefficient for the geometry independent part of AX" unit="");
|
||||
parameter real PLAX = 0.0 `P(info="Coefficient for the length dependence of AX" unit="");
|
||||
parameter real PWAX = 0.0 `P(info="Coefficient for the width dependence of AX" unit="");
|
||||
parameter real PLWAX = 0.0 `P(info="Coefficient for the length times width dependence of AX" unit="");
|
||||
|
||||
// Channel length modulation (CLM) parameters
|
||||
parameter real POALP = 0.01 `P(info="Coefficient for the geometry independent part of ALP" unit="");
|
||||
parameter real PLALP = 0.0 `P(info="Coefficient for the length dependence of ALP" unit="");
|
||||
parameter real PWALP = 0.0 `P(info="Coefficient for the width dependence of ALP" unit="");
|
||||
parameter real PLWALP = 0.0 `P(info="Coefficient for the length times width dependence of ALP" unit="");
|
||||
parameter real POALP1 = 0 `P(info="Coefficient for the geometry independent part of ALP1" unit="V");
|
||||
parameter real PLALP1 = 0.0 `P(info="Coefficient for the length dependence of ALP1" unit="V");
|
||||
parameter real PWALP1 = 0.0 `P(info="Coefficient for the width dependence of ALP1" unit="V");
|
||||
parameter real PLWALP1 = 0.0 `P(info="Coefficient for the length times width dependence of ALP1" unit="V");
|
||||
parameter real POALP2 = 0 `P(info="Coefficient for the geometry independent part of ALP2" unit="V^-1");
|
||||
parameter real PLALP2 = 0.0 `P(info="Coefficient for the length dependence of ALP2" unit="V^-1");
|
||||
parameter real PWALP2 = 0.0 `P(info="Coefficient for the width dependence of ALP2" unit="V^-1");
|
||||
parameter real PLWALP2 = 0.0 `P(info="Coefficient for the length times width dependence of ALP2" unit="V^-1");
|
||||
parameter real POVP = 0.05 `P(info="Coefficient for the geometry independent part of VP" unit="V");
|
||||
|
||||
// Impact ionization parameters
|
||||
parameter real POA1 = 1 `P(info="Coefficient for the geometry independent part of A1" unit="");
|
||||
parameter real PLA1 = 0.0 `P(info="Coefficient for the length dependence of A1" unit="");
|
||||
parameter real PWA1 = 0.0 `P(info="Coefficient for the width dependence of A1" unit="");
|
||||
parameter real PLWA1 = 0.0 `P(info="Coefficient for the length times width dependence of A1" unit="");
|
||||
parameter real POA2 = 10 `P(info="Coefficient for the geometry independent part of A2" unit="V");
|
||||
parameter real POSTA2 = 0 `P(info="Coefficient for the geometry independent part of STA2" unit="V");
|
||||
parameter real POA3 = 1 `P(info="Coefficient for the geometry independent part of A3" unit="");
|
||||
parameter real PLA3 = 0.0 `P(info="Coefficient for the length dependence of A3" unit="");
|
||||
parameter real PWA3 = 0.0 `P(info="Coefficient for the width dependence of A3" unit="");
|
||||
parameter real PLWA3 = 0.0 `P(info="Coefficient for the length times width dependence of A3" unit="");
|
||||
parameter real POA4 = 0 `P(info="Coefficient for the geometry independent part of A4" unit="V^-0.5");
|
||||
parameter real PLA4 = 0.0 `P(info="Coefficient for the length dependence of A4" unit="V^-0.5");
|
||||
parameter real PWA4 = 0.0 `P(info="Coefficient for the width dependence of A4" unit="V^-0.5");
|
||||
parameter real PLWA4 = 0.0 `P(info="Coefficient for the length times width dependence of A4" unit="V^-0.5");
|
||||
parameter real POGCO = 0 `P(info="Coefficient for the geometry independent part of GCO" unit="");
|
||||
|
||||
// Gate current parameters
|
||||
parameter real POIGINV = 0 `P(info="Coefficient for the geometry independent part of IGINV" unit="A");
|
||||
parameter real PLIGINV = 0.0 `P(info="Coefficient for the length dependence of IGINV" unit="A");
|
||||
parameter real PWIGINV = 0.0 `P(info="Coefficient for the width dependence of IGINV" unit="A");
|
||||
parameter real PLWIGINV = 0.0 `P(info="Coefficient for the length times width dependence of IGINV" unit="A");
|
||||
parameter real POIGOV = 0 `P(info="Coefficient for the geometry independent part of IGOV" unit="A");
|
||||
parameter real PLIGOV = 0.0 `P(info="Coefficient for the length dependence of IGOV" unit="A");
|
||||
parameter real PWIGOV = 0.0 `P(info="Coefficient for the width dependence of IGOV" unit="A");
|
||||
parameter real PLWIGOV = 0.0 `P(info="Coefficient for the length times width dependence of IGOV" unit="A");
|
||||
parameter real POIGOVD = 0 `P(info="Coefficient for the geometry independent part of IGOV for drain side" unit="A");
|
||||
parameter real PLIGOVD = 0.0 `P(info="Coefficient for the length dependence of IGOV for drain side" unit="A");
|
||||
parameter real PWIGOVD = 0.0 `P(info="Coefficient for the width dependence of IGOV for drain side" unit="A");
|
||||
parameter real PLWIGOVD = 0.0 `P(info="Coefficient for the length times width dependence of IGOV for drain side" unit="A");
|
||||
parameter real POSTIG = 2 `P(info="Coefficient for the geometry independent part of STIG" unit="");
|
||||
parameter real POGC2 = 0.375 `P(info="Coefficient for the geometry independent part of GC2" unit="");
|
||||
parameter real POGC3 = 0.063 `P(info="Coefficient for the geometry independent part of GC3" unit="");
|
||||
parameter real POCHIB = 3.1 `P(info="Coefficient for the geometry independent part of CHIB" unit="V");
|
||||
|
||||
// Gate-induced drain leakage (GIDL) parameters
|
||||
parameter real POAGIDL = 0 `P(info="Coefficient for the geometry independent part of AGIDL" unit="A/V^3");
|
||||
parameter real PLAGIDL = 0.0 `P(info="Coefficient for the length dependence of AGIDL" unit="A/V^3");
|
||||
parameter real PWAGIDL = 0.0 `P(info="Coefficient for the width dependence of AGIDL" unit="A/V^3");
|
||||
parameter real PLWAGIDL = 0.0 `P(info="Coefficient for the length times width dependence of AGIDL" unit="A/V^3");
|
||||
parameter real POAGIDLD = 0 `P(info="Coefficient for the geometry independent part of AGIDL for drain side" unit="A/V^3");
|
||||
parameter real PLAGIDLD = 0.0 `P(info="Coefficient for the length dependence of AGIDL for drain side" unit="A/V^3");
|
||||
parameter real PWAGIDLD = 0.0 `P(info="Coefficient for the width dependence of AGIDL for drain side" unit="A/V^3");
|
||||
parameter real PLWAGIDLD = 0.0 `P(info="Coefficient for the length times width dependence of AGIDL for drain side" unit="A/V^3");
|
||||
parameter real POBGIDL = 41 `P(info="Coefficient for the geometry independent part of BGIDL" unit="V");
|
||||
parameter real POBGIDLD = 41 `P(info="Coefficient for the geometry independent part of BGIDL for drain side" unit="V");
|
||||
parameter real POSTBGIDL = 0 `P(info="Coefficient for the geometry independent part of STBGIDL" unit="V/K");
|
||||
parameter real POSTBGIDLD = 0 `P(info="Coefficient for the geometry independent part of STBGIDL for drain side" unit="V/K");
|
||||
parameter real POCGIDL = 0 `P(info="Coefficient for the geometry independent part of CGIDL" unit="");
|
||||
parameter real POCGIDLD = 0 `P(info="Coefficient for the geometry independent part of CGIDL for drain side" unit="");
|
||||
|
||||
// Charge model parameters
|
||||
parameter real POCOX = 1E-14 `P(info="Coefficient for the geometry independent part of COX" unit="F");
|
||||
parameter real PLCOX = 0.0 `P(info="Coefficient for the length dependence of COX" unit="F");
|
||||
parameter real PWCOX = 0.0 `P(info="Coefficient for the width dependence of COX" unit="F");
|
||||
parameter real PLWCOX = 0.0 `P(info="Coefficient for the length times width dependence of COX" unit="F");
|
||||
parameter real POCGOV = 1E-15 `P(info="Coefficient for the geometry independent part of CGOV" unit="F");
|
||||
parameter real PLCGOV = 0.0 `P(info="Coefficient for the length dependence of CGOV" unit="F");
|
||||
parameter real PWCGOV = 0.0 `P(info="Coefficient for the width dependence of CGOV" unit="F");
|
||||
parameter real PLWCGOV = 0.0 `P(info="Coefficient for the length times width dependence of CGOV" unit="F");
|
||||
parameter real POCGOVD = 1E-15 `P(info="Coefficient for the geometry independent part of CGOV for drain side" unit="F");
|
||||
parameter real PLCGOVD = 0.0 `P(info="Coefficient for the length dependence of CGOV for drain side" unit="F");
|
||||
parameter real PWCGOVD = 0.0 `P(info="Coefficient for the width dependence of CGOV for drain side" unit="F");
|
||||
parameter real PLWCGOVD = 0.0 `P(info="Coefficient for the length times width dependence of CGOV for drain side" unit="F");
|
||||
parameter real POCGBOV = 0 `P(info="Coefficient for the geometry independent part of CGBOV" unit="F");
|
||||
parameter real PLCGBOV = 0.0 `P(info="Coefficient for the length dependence of CGBOV" unit="F");
|
||||
parameter real PWCGBOV = 0.0 `P(info="Coefficient for the width dependence of CGBOV" unit="F");
|
||||
parameter real PLWCGBOV = 0.0 `P(info="Coefficient for the length times width dependence of CGBOV" unit="F");
|
||||
parameter real POCFR = 0 `P(info="Coefficient for the geometry independent part of CFR" unit="F");
|
||||
parameter real PLCFR = 0.0 `P(info="Coefficient for the length dependence of CFR" unit="F");
|
||||
parameter real PWCFR = 0.0 `P(info="Coefficient for the width dependence of CFR" unit="F");
|
||||
parameter real PLWCFR = 0.0 `P(info="Coefficient for the length times width dependence of CFR" unit="F");
|
||||
parameter real POCFRD = 0 `P(info="Coefficient for the geometry independent part of CFR for drain side" unit="F");
|
||||
parameter real PLCFRD = 0.0 `P(info="Coefficient for the length dependence of CFR for drain side" unit="F");
|
||||
parameter real PWCFRD = 0.0 `P(info="Coefficient for the width dependence of CFR for drain side" unit="F");
|
||||
parameter real PLWCFRD = 0.0 `P(info="Coefficient for the length times width dependence of CFR for drain side" unit="F");
|
||||
|
||||
// Noise model parameters
|
||||
parameter real POFNT = 1 `P(info="Coefficient for the geometry independent part of FNT" unit="");
|
||||
parameter real POFNTEXC = 0.0 `P(info="Coefficient for the geometry independent part of FNTEXC" unit="");
|
||||
parameter real PLFNTEXC = 0.0 `P(info="Coefficient for the length dependence of FNTEXC" unit="");
|
||||
parameter real PWFNTEXC = 0.0 `P(info="Coefficient for the width dependence of FNTEXC" unit="");
|
||||
parameter real PLWFNTEXC = 0.0 `P(info="Coefficient for the length times width dependence of FNTEXC" unit="");
|
||||
parameter real PONFA = 8E+22 `P(info="Coefficient for the geometry independent part of NFA" unit="V^-1/m^4");
|
||||
parameter real PLNFA = 0.0 `P(info="Coefficient for the length dependence of NFA" unit="V^-1/m^4");
|
||||
parameter real PWNFA = 0.0 `P(info="Coefficient for the width dependence of NFA" unit="V^-1/m^4");
|
||||
parameter real PLWNFA = 0.0 `P(info="Coefficient for the length times width dependence of NFA" unit="V^-1/m^4");
|
||||
parameter real PONFB = 3E+07 `P(info="Coefficient for the geometry independent part of NFB" unit="V^-1/m^2");
|
||||
parameter real PLNFB = 0.0 `P(info="Coefficient for the length dependence of NFB" unit="V^-1/m^2");
|
||||
parameter real PWNFB = 0.0 `P(info="Coefficient for the width dependence of NFB" unit="V^-1/m^2");
|
||||
parameter real PLWNFB = 0.0 `P(info="Coefficient for the length times width dependence of NFB" unit="V^-1/m^2");
|
||||
parameter real PONFC = 0 `P(info="Coefficient for the geometry independent part of NFC" unit="V^-1");
|
||||
parameter real PLNFC = 0.0 `P(info="Coefficient for the length dependence of NFC" unit="V^-1");
|
||||
parameter real PWNFC = 0.0 `P(info="Coefficient for the width dependence of NFC" unit="V^-1");
|
||||
parameter real PLWNFC = 0.0 `P(info="Coefficient for the length times width dependence of NFC" unit="V^-1");
|
||||
parameter real POEF = 1.0 `P(info="Coefficient for the flicker noise frequency exponent" unit="");
|
||||
|
||||
// Other parameters
|
||||
parameter real DTA = 0 `P(info="Temperature offset w.r.t. ambient temperature" unit="K");
|
||||
|
||||
// Well proximity effect parameters
|
||||
parameter real POKVTHOWE = 0 `P(info="Coefficient for the geometry independent part of KVTHOWE" unit="");
|
||||
parameter real PLKVTHOWE = 0 `P(info="Coefficient for the length dependence part of KVTHOWE" unit="");
|
||||
parameter real PWKVTHOWE = 0 `P(info="Coefficient for the width dependence part of KVTHOWE" unit="");
|
||||
parameter real PLWKVTHOWE = 0 `P(info="Coefficient for the length times width dependence part of KVTHOWE" unit="");
|
||||
parameter real POKUOWE = 0 `P(info="Coefficient for the geometry independent part of KUOWE" unit="");
|
||||
parameter real PLKUOWE = 0 `P(info="Coefficient for the length dependence part of KUOWE" unit="");
|
||||
parameter real PWKUOWE = 0 `P(info="Coefficient for the width dependence part of KUOWE" unit="");
|
||||
parameter real PLWKUOWE = 0 `P(info="Coefficient for the length times width dependence part of KUOWE" unit="");
|
||||
|
||||
// `Dummy' parameters for binning-set labeling
|
||||
parameter real LMIN = 0 `P(info="Dummy parameter to label binning set" unit="m");
|
||||
parameter real LMAX = 1.0 `P(info="Dummy parameter to label binning set" unit="m");
|
||||
parameter real WMIN = 0 `P(info="Dummy parameter to label binning set" unit="m");
|
||||
parameter real WMAX = 1.0 `P(info="Dummy parameter to label binning set" unit="m");
|
||||
|
|
@ -4,18 +4,24 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.1, April 2007 (Simkit 2.5)
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
//
|
||||
// Macros and constants used in PSP
|
||||
|
|
@ -23,7 +29,7 @@
|
|||
/////////////////////////////////////////////
|
||||
|
||||
// Explicit Gmin
|
||||
`define GMIN 1E-15
|
||||
`define GMIN $simparam("gmin")
|
||||
|
||||
`define PMOS -1
|
||||
`define NMOS +1
|
||||
|
|
@ -33,7 +39,6 @@
|
|||
`define MAXA(x,y,a) 0.5*((x)+(y)+sqrt(((x)-(y))*((x)-(y))+(a)))
|
||||
|
||||
// Physical constants
|
||||
`define EPSOX 3.453E-11
|
||||
`define QMN 5.951993
|
||||
`define QMP 7.448711
|
||||
|
||||
|
|
@ -41,20 +46,10 @@
|
|||
`define DELTA1 0.02
|
||||
`define invSqrt2 7.0710678118654746e-01
|
||||
`define oneSixth 1.6666666666666667e-01
|
||||
`define exp80 5.5406223843935098e+34
|
||||
`define exp160 3.0698496406442424e+69
|
||||
|
||||
`ifdef NQSmodel
|
||||
`define Gint GP
|
||||
`define Bint BP
|
||||
`define Bjs BS
|
||||
`define Bjd BD
|
||||
`else // NQSmodel
|
||||
`define Gint G
|
||||
`define Bint B
|
||||
`define Bjs B
|
||||
`define Bjd B
|
||||
`endif // NQSModel
|
||||
|
||||
`define OPdef(OPvarname, OPdesc, OPunit) (*desc=OPdesc*) real OPvarname;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
|
@ -73,19 +68,14 @@
|
|||
// around the arguments in the expressions are necessary)
|
||||
`define sigma(a,c,tau,eta,y) \
|
||||
nu = (a) + (c); \
|
||||
mu = nu * nu / (tau) + 0.5 * ((c) * (c)) - (a); \
|
||||
y = (eta) + (a) * nu / (mu + (nu / mu) * (c) * ((c) * (c) * `oneThird - (a)));
|
||||
|
||||
mutau = nu * nu + (tau) * (0.5 * ((c) * (c)) - (a)); \
|
||||
y = (eta) + (a) * nu * (tau) / (mutau + (nu / mutau) * (tau) * (tau) * (c) * ((c) * (c) * `oneThird - (a)));
|
||||
|
||||
// modified version of sigma, which takes 4 arguments
|
||||
`define sigma2(a,b,c,tau,eta,y) \
|
||||
nu = (a) + (c); \
|
||||
if (abs(tau) < 1e-120) begin /*sometimes tau is extremely small...*/\
|
||||
y = (eta); \
|
||||
end else begin \
|
||||
mu = (nu) * (nu) / (tau) + 0.5 * ((c) * (c)) - (a) * (b); \
|
||||
y = (eta) + (a) * nu / (mu + (nu / mu) * (c) * ((c) * (c) * `oneThird - (a) * (b))); \
|
||||
end
|
||||
mutau = (nu) * (nu) + (tau) * (0.5 * ((c) * (c)) - (a) * (b)); \
|
||||
y = (eta) + (a) * nu * (tau) / (mutau + (nu / mutau) * (tau) * (tau) * (c) * ((c) * (c) * `oneThird - (a) * (b)));
|
||||
|
||||
//
|
||||
// sp_s surface potential calculation
|
||||
|
|
@ -248,3 +238,37 @@
|
|||
end \
|
||||
sp = -sp; \
|
||||
end
|
||||
|
||||
// This construct is used for parasitic resistances.
|
||||
// If R=0, the Verilog-A compiler should recognize
|
||||
// that the corresponding nodes can be collapsed
|
||||
`define CollapsableR(G, R, SN, N1, N2) \
|
||||
if ((R) > 0.0) begin \
|
||||
I(N1, N2) <+ MULT_i * (G) * V(N1, N2); \
|
||||
I(N1, N2) <+ white_noise(MULT_i * SN); \
|
||||
end else begin \
|
||||
V(N1, N2) <+ 0.0; \
|
||||
end
|
||||
|
||||
`define NonCollapsableR(G, R, SN, N1, N2) \
|
||||
I(N1, N2) <+ MULT_i * (G) * V(N1, N2); \
|
||||
I(N1, N2) <+ white_noise(MULT_i * SN, "thermal noise");
|
||||
|
||||
// This macro is used for asymmetric overlap regions.
|
||||
// The following variables are changed to those for source/drain side.
|
||||
`define ChangeToSource \
|
||||
GOV = GOV_s; \
|
||||
GOV2 = GOV2_s; \
|
||||
xi_ov = xi_ov_s; \
|
||||
inv_xi_ov = inv_xi_ov_s; \
|
||||
x_mrg_ov = x_mrg_ov_s; \
|
||||
inv_xg1 = inv_xg1_s;
|
||||
|
||||
|
||||
`define ChangeToDrain \
|
||||
GOV = GOV_d; \
|
||||
GOV2 = GOV2_d; \
|
||||
xi_ov = xi_ov_d; \
|
||||
inv_xi_ov = inv_xi_ov_d; \
|
||||
x_mrg_ov = x_mrg_ov_d; \
|
||||
inv_xg1 = inv_xg1_d;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,121 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: PSP102_nqs_macrodefs.include
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
//////////////////////////////////////////
|
||||
//
|
||||
// Macros used in PSP-NQS
|
||||
//
|
||||
//////////////////////////////////////////
|
||||
|
||||
// Function to calculate bulk charge from surface potential
|
||||
`define PhiToQb(phi,Qb_tmp) \
|
||||
if (abs(phi) <= margin) \
|
||||
Qb_tmp = -0.70710678 * phi * Gf * (1.0 - `oneSixth * phi * (1.0 - `oneSixth * phi)); \
|
||||
else begin \
|
||||
`expl((-phi), temp) \
|
||||
Qb_tmp = Gf * sqrt(temp + phi - 1.0); \
|
||||
if (phi > margin) \
|
||||
Qb_tmp = -Qb_tmp; \
|
||||
end
|
||||
|
||||
// Function used in fq-macro
|
||||
`define PhiTod2Qis(xphi,d2Qis) \
|
||||
if (abs(xphi) <= margin) begin \
|
||||
Qb_tmp = -0.70710678 * xphi * Gf * (1.0 - `oneSixth * xphi * (1.0 - `oneSixth * xphi)); \
|
||||
dQbs = -0.70710678 * Gf * (1.0 - `oneThird * xphi * (1.0 - 0.25 * xphi)); \
|
||||
d2Qis = -0.235702 * Gf * (1.0 - 0.5 * xphi); \
|
||||
end else begin \
|
||||
`expl((-xphi),temp) \
|
||||
Qb_tmp = Gf * sqrt(temp + xphi - 1.0); \
|
||||
if (xphi > margin) \
|
||||
Qb_tmp = -Qb_tmp; \
|
||||
dQbs = 0.5 * Gf2 * (1.0 - temp) / Qb_tmp; \
|
||||
d2Qis = (dQbs * dQbs - 0.5 * Gf * Gf) / Qb_tmp + dQbs; \
|
||||
end
|
||||
|
||||
|
||||
// Function used in QiToPhi
|
||||
`define sps(sp, xg) \
|
||||
if (abs(xg) <= marginp) begin \
|
||||
sp = xg / a_factrp; \
|
||||
end else begin \
|
||||
if (xg < -marginp) begin \
|
||||
NQS_yg = -xg; \
|
||||
NQS_z = 1.25 * NQS_yg / a_factrp; \
|
||||
NQS_eta = (NQS_z + 10.0 - sqrt((NQS_z - 6.0) * (NQS_z - 6.0) + 64.0)) * 0.5; \
|
||||
NQS_a = (NQS_yg - NQS_eta) * (NQS_yg - NQS_eta) + Gp2 * (NQS_eta + 1.0); \
|
||||
NQS_c = 2.0 * (NQS_yg - NQS_eta) - Gp2; \
|
||||
NQS_tau = ln(NQS_a / Gp2) - NQS_eta; \
|
||||
`sigma(NQS_a, NQS_c, NQS_tau, NQS_eta, NQS_y0) \
|
||||
`expl(NQS_y0, NQS_D0) \
|
||||
NQS_xi = 1.0 - Gp2 * NQS_D0 * 0.5; \
|
||||
NQS_p = 2.0 * (NQS_yg - NQS_y0) + Gp2 * (NQS_D0 - 1.0); \
|
||||
NQS_q = (NQS_yg - NQS_y0) * (NQS_yg - NQS_y0) + Gp2 * (NQS_y0 + 1.0 - NQS_D0); \
|
||||
NQS_temp = NQS_p * NQS_p - 4.0 * NQS_xi * NQS_q; \
|
||||
NQS_w = 2.0 * NQS_q / (NQS_p + sqrt(NQS_temp)); \
|
||||
sp = -(NQS_y0 + NQS_w); \
|
||||
end else begin \
|
||||
NQS_xg1 = 1.0 / ( 1.25 + 7.32464877560822e-01 * Gp); \
|
||||
NQS_A_fac = (1.25 * a_factrp * NQS_xg1 - 1.0) * NQS_xg1; \
|
||||
NQS_xbar = xg / a_factrp * (1.0 + NQS_A_fac * xg); \
|
||||
`expl(-NQS_xbar, NQS_temp) \
|
||||
NQS_w = 1.0 - NQS_temp; \
|
||||
NQS_x0 = xg + Gp2 * 0.5 - Gp * sqrt(xg + Gp2 * 0.25 - NQS_w); \
|
||||
`expl((-NQS_x0), NQS_D0) \
|
||||
NQS_xi = 1.0 - Gp2 * 0.5 * NQS_D0; \
|
||||
NQS_p = 2.0 * (xg - NQS_x0) + Gp2 * (1.0 - NQS_D0); \
|
||||
NQS_q = (xg - NQS_x0) * (xg - NQS_x0) - Gp2 * (NQS_x0 - 1.0 + NQS_D0); \
|
||||
NQS_temp = NQS_p * NQS_p - 4.0 * NQS_xi * NQS_q; \
|
||||
NQS_u = 2.0 * NQS_q / (NQS_p + sqrt(NQS_temp)); \
|
||||
sp = NQS_x0 + NQS_u; \
|
||||
end \
|
||||
end
|
||||
|
||||
|
||||
// Function to calculate surface potential from inversion charge
|
||||
`define QiToPhi(Qi,xg,xphi) \
|
||||
temp = Qi / pd + xg; \
|
||||
`sps(xphi,temp)
|
||||
|
||||
// Calculation of fk
|
||||
`define fq(Qi,xg,dQy,d2Qy,fk) \
|
||||
`QiToPhi(Qi, xg, xphi) \
|
||||
`PhiTod2Qis(xphi, d2Qis) \
|
||||
dQis = pd - dQbs; \
|
||||
dQis_1 = 1.0 / dQis; \
|
||||
fQi = Qi * dQis_1 - 1.0; \
|
||||
dfQi = (1.0 - Qi * d2Qis * dQis_1 * dQis_1) * dQis_1; \
|
||||
fk0 = dfQi * dQy * dQy + fQi * d2Qy; \
|
||||
dpsy2 = dQy * dQy * dQis_1 * dQis_1; \
|
||||
zsat = thesat2 * dpsy2; \
|
||||
if (CHNL_TYPE == `PMOS) \
|
||||
zsat = zsat / (1.0 + thesat1 * dps); \
|
||||
temp = sqrt(1.0 + 2.0 * zsat); \
|
||||
Fvsat = 2.0 / (1.0 + temp); \
|
||||
temp1 = d2Qy - dpsy2 * d2Qis; \
|
||||
fk = Fvsat * (fk0 - zsat * fQi * temp1 * Fvsat / temp);
|
||||
|
||||
// Interpolation of surface potential along channel
|
||||
`define Phiy(y) \
|
||||
x_m + H * (1.0 - sqrt(1.0 - 2.0 * dps / H * ((y) - ym))) * inv_phit1
|
||||
|
|
@ -4,25 +4,36 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.1, April 2007 (Simkit 2.5)
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file readme.txt
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
`include "discipline.h"
|
||||
|
||||
`include "SIMKIT_macrodefs.include"
|
||||
`include "Common102_macrodefs.include"
|
||||
|
||||
`include "JUNCAP200_macrodefs.include"
|
||||
|
||||
`include "PSP102_macrodefs.include"
|
||||
|
||||
// Note: some verilog-A compilers have problems handling the ddx-operator,
|
||||
// which occurs in definition of OP-output variables. If the line below is
|
||||
// commented out, all OP-output variables using the ddx-operator are skipped.
|
||||
`define OPderiv
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
|
@ -30,19 +41,9 @@
|
|||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// `undef LocalModel
|
||||
// `define Binning
|
||||
|
||||
module PSP102VA(D, G, S, B);
|
||||
|
||||
//`P(
|
||||
// info = "PSP MOSFET Model"
|
||||
// version = `VERS
|
||||
// revision = `VREV
|
||||
// simkit:name = "psp1020"
|
||||
// simkit:desc = "psp_1020"
|
||||
//)
|
||||
|
||||
`include "PSP102_module.include"
|
||||
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: psp102_nqs.va
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
`include "discipline.h"
|
||||
|
||||
`define NQSmodel true
|
||||
|
||||
`include "Common102_macrodefs.include"
|
||||
|
||||
`include "JUNCAP200_macrodefs.include"
|
||||
|
||||
`include "PSP102_macrodefs.include"
|
||||
|
||||
// Note: some verilog-A compilers have problems handling the ddx-operator,
|
||||
// which occurs in definition of OP-output variables. If the line below is
|
||||
// commented out, all OP-output variables using the ddx-operator are skipped.
|
||||
`define OPderiv
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// PSP global model code
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
`include "PSP102_nqs_macrodefs.include"
|
||||
|
||||
module PSPNQS102VA(D, G, S, B);
|
||||
|
||||
`include "PSP102_module.include"
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: psp102b.va
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
`include "discipline.h"
|
||||
|
||||
`define Binning true
|
||||
|
||||
`include "Common102_macrodefs.include"
|
||||
|
||||
`include "JUNCAP200_macrodefs.include"
|
||||
|
||||
`include "PSP102_macrodefs.include"
|
||||
|
||||
// Note: some verilog-A compilers have problems handling the ddx-operator,
|
||||
// which occurs in definition of OP-output variables. If the line below is
|
||||
// commented out, all OP-output variables using the ddx-operator are skipped.
|
||||
`define OPderiv
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// PSP global model code (binning)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
module PSP102BVA(D, G, S, B);
|
||||
|
||||
`include "PSP102_module.include"
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: psp102b_nqs.va
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
`include "discipline.h"
|
||||
|
||||
`define NQSmodel true
|
||||
|
||||
`define Binning true
|
||||
|
||||
`include "Common102_macrodefs.include"
|
||||
|
||||
`include "JUNCAP200_macrodefs.include"
|
||||
|
||||
`include "PSP102_macrodefs.include"
|
||||
|
||||
// Note: some verilog-A compilers have problems handling the ddx-operator,
|
||||
// which occurs in definition of OP-output variables. If the line below is
|
||||
// commented out, all OP-output variables using the ddx-operator are skipped.
|
||||
`define OPderiv
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// PSP global model code (binning)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
`include "PSP102_nqs_macrodefs.include"
|
||||
|
||||
module PSPNQS102BVA(D, G, S, B);
|
||||
|
||||
`include "PSP102_module.include"
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: psp102e.va
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
`include "discipline.h"
|
||||
|
||||
`define LocalModel true
|
||||
|
||||
`include "Common102_macrodefs.include"
|
||||
|
||||
`include "JUNCAP200_macrodefs.include"
|
||||
|
||||
`include "PSP102_macrodefs.include"
|
||||
|
||||
// Note: some verilog-A compilers have problems handling the ddx-operator,
|
||||
// which occurs in definition of OP-output variables. If the line below is
|
||||
// commented out, all OP-output variables using the ddx-operator are skipped.
|
||||
`define OPderiv
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// PSP local model code
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
module PSP102EVA(D, G, S, B);
|
||||
|
||||
`include "PSP102_module.include"
|
||||
|
||||
endmodule
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
//======================================================================================
|
||||
//======================================================================================
|
||||
// Filename: psp102e_nqs.va
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// (c) Copyright notice
|
||||
//
|
||||
// Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
// Delft University of Technology. For this part of the model, each claim undivided
|
||||
// ownership and copyrights
|
||||
// Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
// Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
// undivided ownership and copyrights.
|
||||
//
|
||||
//
|
||||
// Version: 102.5.0, December 2013
|
||||
//
|
||||
//======================================================================================
|
||||
//======================================================================================
|
||||
//
|
||||
// Further information can be found in the file releasenotesPSP102.txt
|
||||
//
|
||||
|
||||
`include "discipline.h"
|
||||
|
||||
`define NQSmodel true
|
||||
|
||||
`define LocalModel true
|
||||
|
||||
`include "Common102_macrodefs.include"
|
||||
|
||||
`include "JUNCAP200_macrodefs.include"
|
||||
|
||||
`include "PSP102_macrodefs.include"
|
||||
|
||||
// Note: some verilog-A compilers have problems handling the ddx-operator,
|
||||
// which occurs in definition of OP-output variables. If the line below is
|
||||
// commented out, all OP-output variables using the ddx-operator are skipped.
|
||||
`define OPderiv
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// PSP local model code
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
`include "PSP102_nqs_macrodefs.include"
|
||||
|
||||
module PSPNQS102EVA(D, G, S, B);
|
||||
|
||||
`include "PSP102_module.include"
|
||||
|
||||
endmodule
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
ngspice customizations of package psp102.1
|
||||
------------------------------------------
|
||||
|
||||
- Mon Apr 30 15:28:25 WEDT 2007 (Berlin)
|
||||
o renamed 'initializeModel/initializeInstance' to 'initial_model/initial_instance'.
|
||||
(this issue should go away when auto-partionning done in adms.)
|
||||
o redefined macro P(txt) in order to 'see' instance parameters
|
||||
o status: psp code created by adms compiles
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
---------------------------
|
||||
Verilog-A definition of PSP
|
||||
---------------------------
|
||||
|
||||
|
||||
(c) Copyright 2007, All Rights Reserved, NXP Semiconductors
|
||||
|
||||
|
||||
Version: PSP 102.1 (including JUNCAP2 200.2), April 2007 (Simkit 2.5)
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
Authors: G.D.J. Smit, A.J. Scholten, and D.B.M. Klaassen (NXP Semiconductors Research)
|
||||
R. van Langevelde (Philips Research)
|
||||
G. Gildenblat, X. Li, and W. Wu (The Arizona State University)
|
||||
|
||||
|
||||
|
||||
The most recent version of the model code, the documentation, and contact information
|
||||
can be found on:
|
||||
|
||||
http://PSPmodel.asu.edu/
|
||||
or
|
||||
http://www.nxp.com/Philips_Models/
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
This package consists of several files:
|
||||
|
||||
- readme.txt This file
|
||||
|
||||
- psp102.va Main file for global ("geometrical") model
|
||||
- psp102b.va Main file for global binning model
|
||||
- psp102e.va Main file for local ("electrical") model
|
||||
- psp102_nqs.va Main file for global ("geometrical") model with NQS-effects
|
||||
- psp102b_nqs.va Main file for global binning model with NQS-effects
|
||||
- psp102e_nqs.va Main file for local ("electrical") model with NQS-effects
|
||||
- juncap200.va Main file for JUNCAP2 stand-alone model
|
||||
|
||||
- SIMKIT_macrodefs.include Common macro definitions
|
||||
- PSP102_macrodefs.include Macro definitions for PSP
|
||||
- PSP102_module.include Actual model code for intrinsic MOS model
|
||||
- PSP102_binning.include Geometry scaling equation for binning
|
||||
- PSP102_binpars.include Parameterlist for global PSP binning model
|
||||
- PSP102_nqs_macrodefs.include Macro definitions for PSP-NQS
|
||||
- PSP102_InitNQS.include PSP-NQS initialization code
|
||||
- PSP102_ChargesNQS.include Calculation of NQS-charge contributions
|
||||
- JUNCAP200_macrodefs.include Macro definitions for JUNCAP2 model
|
||||
- JUNCAP200_parlist.include JUNCAP2 parameter list
|
||||
- JUNCAP200_varlist.include JUNCAP2 variable declarations
|
||||
- JUNCAP200_InitModel.include JUNCAP2 model initialization code
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Depending which model one wants to use, one should compile one of the seven .va-files
|
||||
(psp102.va, psp102b.va, psp102e.va, psp102_nqs.va, psp102b_nqs.va, psp102e_nqs.va, and
|
||||
juncap200.va). The module names are "PSP102VA" and "PSPNQS102VA" for the global PSP-model
|
||||
(QS and NQS, respectively), and similarly "PSP102BVA" and "PSPNQS102BVA" for the binning
|
||||
PSP-model, "PSP102EVA" and "PSPNQS102EVA" for the local PSP-model, and "JUNCAP200" for
|
||||
the JUNCAP2-model.
|
||||
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
Release notes va-code of PSP 102.1, including JUNCAP2 200.2 (April 2007)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Focus in this release has been on improving the simulation speed of PSP and JUNCAP2.
|
||||
The model equations in this release of PSP 102.1 are identical to those in the
|
||||
October 2006 release. This version features some minor impelementation changes
|
||||
w.r.t. the previous release.
|
||||
|
||||
The main changes have been in the SiMKit version generated from this verilog-A
|
||||
implementation: improvements in the automatic C-code generation process
|
||||
and compilation of the C-code. The result is reflected in the SiMKit 2.5 version of
|
||||
PSP, which shows a very significant simulation speed improvement w.r.t SiMKit 2.4.
|
||||
|
||||
The minor implementation changes in the verilog-A code will have some positive effect
|
||||
on the simulation speed of the verilog-A version as well. Note, however, that the
|
||||
simulation speed of the verilog-A version of PSP and the improvement w.r.t. the
|
||||
previous version strongly depend on the verilog-A compiler used.
|
||||
|
||||
PSP 102.1 is backwards compatible with the previous version, PSP 102.0.
|
||||
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
The functionality of the Verilog-A code in this package is the same as that of the
|
||||
C-code, which is contained in SIMKIT version 2.5. Note that Operating Point information
|
||||
is available only in the C-code, not in Verilog-A code.
|
||||
|
||||
|
||||
The PSP-NQS model is provided as Verilog-A code. In SiMKit 2.5, a test version of
|
||||
the PSP-NQS model is included (identical to that in SiMKit 2.4). This implementation
|
||||
circumvents the problem of the SpectreVerilog-A-generated C-code being too large to
|
||||
compile. Moreover, it is computationally more efficient as it uses less rows in the
|
||||
simulator matrix. On the other hand, this implementation has some known limitations.
|
||||
More information is available from the authors. Further improvements are expected in
|
||||
future releases.
|
||||
|
||||
|
||||
This Verilog-A code of PSP is primarily intended as a source for C-code generation
|
||||
using ADMS. Most of the testing has been done on the C-code which was generated from it.
|
||||
|
||||
|
||||
The authors want to thank Laurent Lemaitre and Colin McAndrew (Freescale)
|
||||
for their help with ADMS and the implementation of the model code. Geoffrey
|
||||
Coram (Analog Devices) is acknowledged for useful comments on the Verilog-A
|
||||
code.
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
---------------------------
|
||||
Verilog-A definition of PSP
|
||||
---------------------------
|
||||
|
||||
|
||||
(c) Copyright notice
|
||||
|
||||
Since 2012 until today, PSP has been co-developed by NXP Semiconductors and
|
||||
Delft University of Technology. For this part of the model, each claim undivided
|
||||
ownership and copyrights
|
||||
Until and including 2011, PSP has been co-developed by NXP Semiconductors and
|
||||
Arizona State University. For this part of the model, NXP Semiconductors claims
|
||||
undivided ownership and copyrights.
|
||||
|
||||
|
||||
Version: PSP 102.5.0 (including JUNCAP2 200.4.0), December 2013
|
||||
|
||||
This version of PSP is contained in SiMKit 4.2
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
Authors: G.D.J. Smit, A.J. Scholten, and D.B.M. Klaassen (NXP Semiconductors)
|
||||
R. van der Toorn (Delft University of Technology)
|
||||
|
||||
Former contributers:
|
||||
G. Gildenblat, W. Yao, Z. Zhu, X. Li and W. Wu (Arizona State University)
|
||||
R. van Langevelde (Philips Research)
|
||||
|
||||
The most recent version of the model code, the documentation, and contact
|
||||
information can be found on:
|
||||
|
||||
http://psp.ewi.tudelft.nl/
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
This package consists of the following files:
|
||||
|
||||
- releasenotesPSP102.txt This file
|
||||
|
||||
- psp102.va Main file for global ("geometrical") model
|
||||
- psp102b.va Main file for global binning model
|
||||
- psp102e.va Main file for local ("electrical") model
|
||||
- psp102_nqs.va Main file for global ("geometrical") model with NQS-effects
|
||||
- psp102b_nqs.va Main file for global binning model with NQS-effects
|
||||
- psp102e_nqs.va Main file for local ("electrical") model with NQS-effects
|
||||
|
||||
- Common102_macrodefs.include Common macro definitions
|
||||
- PSP102_macrodefs.include Macro definitions for PSP
|
||||
- PSP102_module.include Actual model code for intrinsic MOS model
|
||||
- PSP102_binning.include Geometry scaling equation for binning
|
||||
- PSP102_binpars.include Parameterlist for global PSP binning model
|
||||
- PSP102_nqs_macrodefs.include Macro definitions for PSP-NQS
|
||||
- PSP102_InitNQS.include PSP-NQS initialization code
|
||||
- PSP102_ChargesNQS.include Calculation of NQS-charge contributions
|
||||
- JUNCAP200_macrodefs.include Macro definitions for JUNCAP2 model
|
||||
- JUNCAP200_parlist.include JUNCAP2 parameter list
|
||||
- JUNCAP200_varlist1.include JUNCAP2 variable declarations
|
||||
- JUNCAP200_varlist2.include JUNCAP2 variable declarations
|
||||
- JUNCAP200_InitModel.include JUNCAP2 model initialization code
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Depending which model one wants to use, one should compile one of the seven .va-files
|
||||
(psp102.va, psp102b.va, psp102e.va, psp102_nqs.va, psp102b_nqs.va, and psp102e_nqs.va).
|
||||
The module names are "PSP102VA" and "PSPNQS102VA" for the global PSP-model (QS and
|
||||
NQS, respectively), and similarly "PSP102BVA" and "PSPNQS102BVA" for the binning
|
||||
PSP-model, "PSP102EVA" and "PSPNQS102EVA" for the local PSP-model.
|
||||
|
||||
For the stand-alone version of JUNCAP2, version 200.4.0, please refer to the distribution
|
||||
of PSP103.
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
Release notes vA-code of PSP 102.5.0 (December 2013)
|
||||
----------------------------------------------------
|
||||
|
||||
Changes:
|
||||
|
||||
- Added excess noise model.
|
||||
- Solved minor numerical issue in avalanche current calculation (occurring when A4 is
|
||||
large and the body is forward biased).
|
||||
- Fixed missing T-scaling in OP-output variables lp_bgidl and lp_bgidld.
|
||||
|
||||
PSP 102.5.0 is backwards compatible with the previous version, PSP 102.4.0.
|
||||
|
||||
======================================================================================
|
||||
======================================================================================
|
||||
|
||||
The authors want to thank Laurent Lemaitre and Colin McAndrew (Freescale)
|
||||
for their help with ADMS and the implementation of the model code. Geoffrey
|
||||
Coram (Analog Devices) is acknowledged for input concerning the Verilog-A
|
||||
implementation of the model.
|
||||
Loading…
Reference in New Issue