hisimhv1, hisim2, clean up unused variables
This commit is contained in:
parent
4d9ce25848
commit
5bb69f77d1
|
|
@ -59,7 +59,10 @@ int HSM2acLoad(
|
|||
double grg = 0.0, pxcbdb_i = 0.0, pxcbsb_i = 0.0;
|
||||
|
||||
double Qi, Qi_dVgs, Qi_dVbs, Qi_dVds ;
|
||||
double Qb, Qb_dVgs, Qb_dVbs, Qb_dVds ;
|
||||
#ifdef DEBUG_HISIM2CGG
|
||||
double Qb ;
|
||||
#endif
|
||||
double Qb_dVgs, Qb_dVbs, Qb_dVds ;
|
||||
double tau ;
|
||||
double taub ;
|
||||
double Xd, Xd_dVgs, Xd_dVbs, Xd_dVds ;
|
||||
|
|
@ -95,7 +98,9 @@ int HSM2acLoad(
|
|||
Qi_dVds = here->HSM2_Qi_dVds ;
|
||||
Qi_dVbs = here->HSM2_Qi_dVbs ;
|
||||
|
||||
#ifdef DEBUG_HISIM2CGG
|
||||
Qb = here->HSM2_Qb ;
|
||||
#endif
|
||||
Qb_dVgs = here->HSM2_Qb_dVgs ;
|
||||
Qb_dVds = here->HSM2_Qb_dVds ;
|
||||
Qb_dVbs = here->HSM2_Qb_dVbs ;
|
||||
|
|
|
|||
|
|
@ -898,17 +898,17 @@ int HSM2evaluate
|
|||
double Chi_A=0.0, Chi_A_dVxb=0.0, Chi_A_dVgb =0.0 ;
|
||||
double Chi_B=0.0, Chi_B_dVxb=0.0, Chi_B_dVgb =0.0 ;
|
||||
double Chi_1=0.0, Chi_1_dVxb=0.0, Chi_1_dVgb =0.0 ;
|
||||
double psi_B=0.0, arg_B =0.0 ;
|
||||
/* double psi_B=0.0, arg_B =0.0 ;*/
|
||||
double psi=0.0, psi_dVgb=0.0, psi_dVxb =0.0 ;
|
||||
double Ps0_iniA_dVxb=0.0, Ps0_iniA_dVgb =0.0 ;
|
||||
double Ps0_iniB_dVxb=0.0, Ps0_iniB_dVgb =0.0 ;
|
||||
/* double Ps0_iniB_dVxb=0.0 , Ps0_iniB_dVgb =0.0 ;*/
|
||||
double Psa_dVxb=0.0, Psa_dVgb=0.0, Ps0LD_dVxb=0.0, Ps0LD_dVgb =0.0 ;
|
||||
double fs02_dVxb=0.0, fs02_dVgb =0.0 ;
|
||||
double /*fs02_dVxb=0.0,*/ fs02_dVgb =0.0 ;
|
||||
|
||||
/* SCE LOOP */
|
||||
double A =0.0, A_dVgs=0.0, A_dVds=0.0, A_dVbs =0.0 ;
|
||||
int NNN =0 ;
|
||||
double PS0_SCE=0 , PS0_SCE_dVgs = 0 , PS0_SCE_dVds = 0 , PS0_SCE_dVbs = 0 ;
|
||||
/* double PS0_SCE=0 , PS0_SCE_dVgs = 0 , PS0_SCE_dVds = 0 , PS0_SCE_dVbs = 0 ;*/
|
||||
double PS0Z_SCE=0 , PS0Z_SCE_dVgs = 0 , PS0Z_SCE_dVds = 0 , PS0Z_SCE_dVbs = 0 ;
|
||||
/* double arg0 = 0.01 , arg1 = 0.04 ; */
|
||||
double arg0 = 0.01 ;
|
||||
|
|
@ -1563,11 +1563,11 @@ int HSM2evaluate
|
|||
/**************************/
|
||||
|
||||
/* initial value for SCE LOOP */
|
||||
PS0_SCE = Ps0_ini ;
|
||||
/* PS0_SCE = Ps0_ini ;
|
||||
PS0_SCE_dVds = Ps0_ini_dVds ;
|
||||
PS0_SCE_dVgs = Ps0_ini_dVgs ;
|
||||
PS0_SCE_dVbs = Ps0_ini_dVbs ;
|
||||
|
||||
*/
|
||||
PS0Z_SCE = Ps0_ini ;
|
||||
PS0Z_SCE_dVds = Ps0_ini_dVds ;
|
||||
PS0Z_SCE_dVgs = Ps0_ini_dVgs ;
|
||||
|
|
@ -2818,12 +2818,12 @@ int HSM2evaluate
|
|||
PS0Z_SCE_dVbs = Ps0z_dVbs ;
|
||||
PS0Z_SCE_dVds = Ps0z_dVds ;
|
||||
PS0Z_SCE_dVgs = Ps0z_dVgs ;
|
||||
|
||||
/*
|
||||
PS0_SCE = PS0Z_SCE - Pzadd ;
|
||||
PS0_SCE_dVbs = Ps0_dVbs ;
|
||||
PS0_SCE_dVds = Ps0_dVds ;
|
||||
PS0_SCE_dVgs = Ps0_dVgs ;
|
||||
|
||||
*/
|
||||
NNN += 1 ;
|
||||
|
||||
if( ( fabs(delta_PS0Z_SCE) > PS0_SCE_tol
|
||||
|
|
@ -3321,12 +3321,12 @@ int HSM2evaluate
|
|||
PS0Z_SCE_dVbs = Ps0z_dVbs ;
|
||||
PS0Z_SCE_dVds = Ps0z_dVds ;
|
||||
PS0Z_SCE_dVgs = Ps0z_dVgs ;
|
||||
|
||||
/*
|
||||
PS0_SCE = PS0Z_SCE - Pzadd ;
|
||||
PS0_SCE_dVbs = Ps0_dVbs ;
|
||||
PS0_SCE_dVds = Ps0_dVds ;
|
||||
PS0_SCE_dVgs = Ps0_dVgs ;
|
||||
|
||||
*/
|
||||
|
||||
NNN += 1 ;
|
||||
|
||||
|
|
@ -3775,12 +3775,12 @@ start_of_loopl:
|
|||
PS0Z_SCE_dVbs = Ps0z_dVbs ;
|
||||
PS0Z_SCE_dVds = Ps0z_dVds ;
|
||||
PS0Z_SCE_dVgs = Ps0z_dVgs ;
|
||||
|
||||
/*
|
||||
PS0_SCE = PS0Z_SCE - Pzadd ;
|
||||
PS0_SCE_dVbs = Ps0_dVbs ;
|
||||
PS0_SCE_dVds = Ps0_dVds ;
|
||||
PS0_SCE_dVgs = Ps0_dVgs ;
|
||||
|
||||
*/
|
||||
NNN += 1 ;
|
||||
|
||||
if( ( fabs(delta_PS0Z_SCE) > PS0_SCE_tol
|
||||
|
|
@ -5623,17 +5623,17 @@ start_of_mobility:
|
|||
psi_dVxb -= Chi_1_dVxb ;
|
||||
|
||||
psi += beta*0.1 ;
|
||||
|
||||
/*
|
||||
psi_B = psi;
|
||||
arg_B = psi*psi/(gamma*T0);
|
||||
arg_B = psi*psi/(gamma*T0);*/
|
||||
Chi_B = log(gamma*T0 + psi*psi) - log(cnst1over*T0) + beta*Vxbgmtcl;
|
||||
Chi_B_dVgb = 2.0*psi*psi_dVgb/ (gamma*T0 + psi*psi);
|
||||
Chi_B_dVxb = (gamma_dVxb*T0+2.0*psi*psi_dVxb)/(gamma*T0+psi*psi)
|
||||
+ beta*Vxbgmtcl_dVxbgmt;
|
||||
Ps0_iniB = Chi_B/beta - Vxbgmtcl ;
|
||||
Ps0_iniB_dVgb = Chi_B_dVgb/beta;
|
||||
/* Ps0_iniB_dVgb = Chi_B_dVgb/beta;
|
||||
Ps0_iniB_dVxb = Chi_B_dVxb/beta- Vxbgmtcl_dVxbgmt;
|
||||
|
||||
*/
|
||||
|
||||
/* construction of Ps0LD by taking Ps0_iniB as an upper limit of Ps0_iniA
|
||||
*
|
||||
|
|
@ -5861,7 +5861,7 @@ start_of_mobility:
|
|||
fs01_dVds = Ps0LD_dVds * fs01_dPs0 ;
|
||||
fs01_dVgs = Ps0LD_dVgb * fs01_dPs0 ;
|
||||
fs02_dVbs = Ps0LD_dVxb * fs02_dPs0 + fs02_dVbs ;
|
||||
fs02_dVxb = Ps0LD_dVds * fs02_dPs0 ;
|
||||
/* fs02_dVxb = Ps0LD_dVds * fs02_dPs0 ;*/
|
||||
fs02_dVgb = Ps0LD_dVgb * fs02_dPs0 ;
|
||||
|
||||
/*-----------------------------------------------------------*
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ int HSM2load(
|
|||
{
|
||||
register HSM2model *model = (HSM2model*)inModel;
|
||||
register HSM2instance *here;
|
||||
HSM2binningParam *pParam;
|
||||
/* HSM2binningParam *pParam;*/
|
||||
double cbhat=0.0, cdrain=0.0, cdhat=0.0, cdreq=0.0, cgbhat=0.0, cgshat=0.0, cgdhat=0.0 ;
|
||||
double Ibtot=0.0, Idtot=0.0, Igbtot=0.0, Igstot=0.0, Igdtot=0.0 ;
|
||||
double ceq=0.0, ceqbd=0.0, ceqbs=0.0, ceqqb=0.0, ceqqd=0.0, ceqqg=0.0 ;
|
||||
|
|
@ -204,7 +204,7 @@ int HSM2load(
|
|||
double ivds=0.0, ivgs=0.0, ivbs=0.0 ;
|
||||
double gjbs=0.0, gjbd=0.0, gcdbdb=0.0, gcsbsb=0.0, gcbbb=0.0, gcdbb=0.0, gcsbb=0.0, grg=0.0 ;
|
||||
double vdbs=0.0, vsbs=0.0, vdbd=0.0, delvdbs=0.0, delvsbs=0.0, delvdbd=0.0 ;
|
||||
double vges=0.0, vged=0.0, delvges=0.0, delvged=0.0, vgedo=0.0 ;
|
||||
double vges=0.0, vged=0.0, delvges=0.0,/* delvged=0.0,*/ vgedo=0.0 ;
|
||||
double vsbdo=0.0, vsbd=0.0;
|
||||
double vbs_jct=0.0, vbd_jct=0.0, delvbs_jct=0.0, delvbd_jct=0.0 ;
|
||||
int ByPass=0, Check=0, Check1=0, Check2=0 ;
|
||||
|
|
@ -241,7 +241,7 @@ tm0 = gtodsecld() ;
|
|||
|
||||
for (here = model->HSM2instances; here != NULL ;
|
||||
here = here->HSM2nextInstance) {
|
||||
pParam = &here->pParam ;
|
||||
/* pParam = &here->pParam ;*/
|
||||
showPhysVal = 0;
|
||||
Check=1;
|
||||
ByPass = 0;
|
||||
|
|
@ -369,7 +369,7 @@ tm0 = gtodsecld() ;
|
|||
delvsbs = vsbs - *(ckt->CKTstate0 + here->HSM2vsbs);
|
||||
delvdbd = vdbd - *(ckt->CKTstate0 + here->HSM2vdbd);
|
||||
delvgd = vgd - vgdo;
|
||||
delvged = vged - vgedo;
|
||||
/* delvged = vged - vgedo;*/
|
||||
|
||||
delvbd_jct = (!here->HSM2_corbnet) ? delvbd : delvdbd;
|
||||
delvbs_jct = (!here->HSM2_corbnet) ? delvbs : delvsbs;
|
||||
|
|
|
|||
|
|
@ -465,7 +465,7 @@ int HSMHVevaluate
|
|||
double Ps0 =0.0, Ps0_dVbs =0.0, Ps0_dVds =0.0, Ps0_dVgs =0.0, Ps0_dT =0.0 ;
|
||||
double Ps0_ini =0.0 ;
|
||||
double Ps0_iniA =0.0, Ps0_iniA_dVxb =0.0, Ps0_iniA_dVgb =0.0, Ps0_iniA_dT =0.0 ;
|
||||
double Ps0_iniB =0.0, Ps0_iniB_dVxb =0.0, Ps0_iniB_dVgb =0.0, Ps0_iniB_dT =0.0 ;
|
||||
double Ps0_iniB =0.0;/*, Ps0_iniB_dVxb =0.0, Ps0_iniB_dVgb =0.0, Ps0_iniB_dT =0.0 ;*/
|
||||
/* Psl : surface potential at the drain side */
|
||||
double Psl =0.0, Psl_dVbs =0.0, Psl_dVds =0.0, Psl_dVgs =0.0, Psl_dT =0.0 ;
|
||||
double Psl_lim =0.0, dPlim =0.0 ;
|
||||
|
|
@ -542,7 +542,7 @@ int HSMHVevaluate
|
|||
double costi0 =0.0 ;
|
||||
double costi1 =0.0, costi1_dT =0.0 ;
|
||||
double costi3 =0.0, costi3_dVb =0.0, costi3_dVd =0.0, costi3_dVg =0.0, costi3_dT =0.0 ;
|
||||
double costi3_dVb_c3 =0.0, costi3_dVd_c3 =0.0, costi3_dVg_c3 =0.0 ;
|
||||
double costi3_dVb_c3 =0.0, costi3_dVd_c3 =0.0, costi3_dVg_c3 =0.0;/*, costi3_dT_c3 =0.0 ;*/
|
||||
double costi4 =0.0, costi4_dT =0.0 ;
|
||||
double costi5 =0.0, costi5_dT =0.0 ;
|
||||
double costi6 =0.0, costi6_dT =0.0 ;
|
||||
|
|
@ -583,8 +583,8 @@ int HSMHVevaluate
|
|||
double bs12=0.0, bs12_dVb=0.0, bs12_dVd =0.0, bs12_dVg =0.0, bs12_dT =0.0 ;
|
||||
double Qbmm=0.0, Qbmm_dVb=0.0, Qbmm_dVd =0.0, Qbmm_dVg =0.0, Qbmm_dT =0.0 ;
|
||||
double dqb=0.0, dqb_dVb=0.0, dqb_dVg=0.0, dqb_dVd =0.0, dqb_dT =0.0 ;
|
||||
double Vdx=0.0, Vdx_dVbs=0.0 ;
|
||||
double Vdx2=0.0, Vdx2_dVbs=0.0 ;
|
||||
double Vdx=0.0, Vdx_dVbs=0.0;/*, Vdx_dT=0.0 ;*/
|
||||
double Vdx2=0.0, Vdx2_dVbs=0.0;/*, Vdx2_dT=0.0 ;*/
|
||||
double Pbsum=0.0, Pbsum_dVb=0.0, Pbsum_dVd=0.0, Pbsum_dVg =0.0, Pbsum_dT =0.0 ;
|
||||
double sqrt_Pbsum =0.0 ;
|
||||
/* Poly-Depletion Effect */
|
||||
|
|
@ -710,6 +710,7 @@ int HSMHVevaluate
|
|||
/* PART-4 (junction diode) */
|
||||
double Ibs =0.0, Gbs =0.0, Gbse =0.0, Ibs_dT =0.0 ;
|
||||
double Ibd =0.0, Gbd =0.0, Gbde =0.0, Ibd_dT =0.0 ;
|
||||
/* double Nvtm =0.0 ;*/
|
||||
/* junction capacitance */
|
||||
double Qbs =0.0, Capbs =0.0, Capbse =0.0, Qbs_dT =0.0 ;
|
||||
double Qbd =0.0, Capbd =0.0, Capbde =0.0, Qbd_dT =0.0 ;
|
||||
|
|
@ -778,9 +779,9 @@ int HSMHVevaluate
|
|||
double Qovs =0.0, Qovs_dVbs =0.0, Qovs_dVds =0.0, Qovs_dVgs =0.0, Qovs_dT =0.0 ;
|
||||
double QbuLD =0.0, QbuLD_dVbs =0.0, QbuLD_dVds =0.0, QbuLD_dVgs =0.0, QbuLD_dT =0.0 ;
|
||||
double QbdLD =0.0, QbdLD_dVbs =0.0, QbdLD_dVds =0.0, QbdLD_dVgs =0.0, QbdLD_dT =0.0 ;
|
||||
double QbsLD =0.0, QbsLD_dVbs =0.0, QbsLD_dVds =0.0, QbsLD_dVgs =0.0, QbsLD_dT =0.0 ;
|
||||
double QbsLD =0.0;/*, QbsLD_dVbs =0.0, QbsLD_dVds =0.0, QbsLD_dVgs =0.0, QbsLD_dT =0.0 ;*/
|
||||
double QbdLDext =0.0, QbdLDext_dVbse =0.0, QbdLDext_dVdse =0.0, QbdLDext_dVgse =0.0, QbdLDext_dT =0.0 ;
|
||||
double QbsLDext =0.0, QbsLDext_dVbse =0.0, QbsLDext_dVdse =0.0, QbsLDext_dVgse =0.0, QbsLDext_dT =0.0 ;
|
||||
double QbsLDext =0.0;/*, QbsLDext_dVbse =0.0, QbsLDext_dVdse =0.0, QbsLDext_dVgse =0.0, QbsLDext_dT =0.0 ;*/
|
||||
|
||||
/* Vgsz for SCE and PGD */
|
||||
double dmpacc =0.0, dmpacc_dVbs =0.0, dmpacc_dVds =0.0, dmpacc_dVgs =0.0 ;
|
||||
|
|
@ -813,7 +814,7 @@ int HSMHVevaluate
|
|||
double Ra_alpha, Ra_beta ;
|
||||
|
||||
/* modified external biases for symmetry */
|
||||
double Vzadd_ext_dVd = 0.0 ;
|
||||
double /*Vzadd_ext = 0.0,*/ Vzadd_ext_dVd = 0.0 ;
|
||||
double Vdserevz = 0.0, Vdserevz_dVd = 0.0 ;
|
||||
double Vgserevz = 0.0, Vgserevz_dVd = 0.0 ;
|
||||
double Vbserevz = 0.0, Vbserevz_dVd = 0.0 ;
|
||||
|
|
@ -832,7 +833,7 @@ int HSMHVevaluate
|
|||
|
||||
/* temperature-dependent variables for SHE model */
|
||||
double TTEMP =0.0, TTEMP0 =0.0 ;
|
||||
double Tdiff0 = 0.0, Tdiff0_2 = 0.0, Tdiff = 0.0, Tdiff_2 = 0.0 ;
|
||||
double/* Tdiff0 = 0.0, Tdiff0_2 = 0.0,*/ Tdiff = 0.0, Tdiff_2 = 0.0 ;
|
||||
double Eg =0.0, Eg_dT =0.0 ;
|
||||
double Nin =0.0, Nin_dT =0.0 ;
|
||||
double js =0.0, js_dT =0.0 ;
|
||||
|
|
@ -849,14 +850,14 @@ int HSMHVevaluate
|
|||
|
||||
double QsuLD =0.0, QsuLD_dVbs =0.0, QsuLD_dVds =0.0, QsuLD_dVgs =0.0, QsuLD_dT =0.0 ;
|
||||
double QiuLD =0.0, QiuLD_dVbs =0.0, QiuLD_dVds =0.0, QiuLD_dVgs =0.0, QiuLD_dT =0.0 ;
|
||||
double QidLD =0.0, QidLD_dVbs =0.0, QidLD_dVds =0.0, QidLD_dVgs =0.0, QidLD_dT =0.0 ;
|
||||
double QisLD =0.0, QisLD_dVbs =0.0, QisLD_dVds =0.0, QisLD_dVgs =0.0, QisLD_dT =0.0 ;
|
||||
double QidLDext =0.0, QidLDext_dVbse =0.0, QidLDext_dVdse =0.0, QidLDext_dVgse =0.0, QidLDext_dT =0.0 ;
|
||||
double QisLDext =0.0, QisLDext_dVbse =0.0, QisLDext_dVdse =0.0, QisLDext_dVgse =0.0, QisLDext_dT =0.0 ;
|
||||
double /*QidLD =0.0,*/ QidLD_dVbs =0.0, QidLD_dVds =0.0, QidLD_dVgs =0.0, QidLD_dT =0.0 ;
|
||||
double /*QisLD =0.0,*/ QisLD_dVbs =0.0, QisLD_dVds =0.0, QisLD_dVgs =0.0, QisLD_dT =0.0 ;
|
||||
double /*QidLDext =0.0,*/ QidLDext_dVbse =0.0, QidLDext_dVdse =0.0, QidLDext_dVgse =0.0, QidLDext_dT =0.0 ;
|
||||
double /*QisLDext =0.0,*/ QisLDext_dVbse =0.0, QisLDext_dVdse =0.0, QisLDext_dVgse =0.0, QisLDext_dT =0.0 ;
|
||||
|
||||
/* Self heating */
|
||||
double mphn0_dT =0.0 ;
|
||||
double ps0ldinib_dT =0.0, cnst0over_dT =0.0 ;
|
||||
double ps0ldinib_dT =0.0, cnst0over_dT =0.0 ;
|
||||
double ps0ldinibs_dT =0.0, cnst0overs_dT =0.0 ;
|
||||
double Temp_dif =0.0 ;
|
||||
/* for SCE */
|
||||
|
|
@ -868,7 +869,7 @@ int HSMHVevaluate
|
|||
/* Qover */
|
||||
int flg_ovzone = 0 ;
|
||||
double VgpLD =0.0, VgpLD_dVgb =0.0 ;
|
||||
double Vgb_fb_LD =0.0 ;
|
||||
double /*VthLD =0.0,*/ Vgb_fb_LD =0.0 ;
|
||||
double Ac31_dVgb =0.0, Ac31_dVxb =0.0 ;
|
||||
double Ac1_dVgb =0.0, Ac1_dVxb =0.0 ;
|
||||
double Ac2_dVgb =0.0, Ac2_dVxb =0.0 ;
|
||||
|
|
@ -879,11 +880,11 @@ int HSMHVevaluate
|
|||
double Psa_dVgb =0.0, Psa_dVxb =0.0 ;
|
||||
double QsuLD_dVgb =0.0, QsuLD_dVxb =0.0 ;
|
||||
double QbuLD_dVgb =0.0, QbuLD_dVxb =0.0 ;
|
||||
double fs02_dVgb =0.0, fs02_dVxb =0.0 ;
|
||||
double fs02_dVgb =0.0 ;/*, fs02_dVxb =0.0 ;*/
|
||||
double TX_dVgb =0.0, TX_dVxb =0.0 ;
|
||||
double TY_dVgb =0.0, TY_dVxb =0.0 ;
|
||||
double Ps0LD =0.0, Ps0LD_dVgb =0.0, Ps0LD_dVxb =0.0, Ps0LD_dT =0.0 ;
|
||||
double Ps0LD_dVbs =0.0, Ps0LD_dVds =0.0, Ps0LD_dVgs =0.0 ;
|
||||
double /*Ps0LD_dVbs =0.0,*/ Ps0LD_dVds =0.0; /*Ps0LD_dVgs =0.0 ;*/
|
||||
double Pb2over =0.0, Pb2over_dT =0.0 ;
|
||||
|
||||
int flg_overgiven =0 ;
|
||||
|
|
@ -891,7 +892,7 @@ int HSMHVevaluate
|
|||
double Lovers =0.0, Loverd =0.0 ;
|
||||
double Novers =0.0, Noverd =0.0 ;
|
||||
double Nover_func =0.0 ;
|
||||
double ps0ldinib_func =0.0, ps0ldinib_func_dT =0.0 ;
|
||||
/* double ps0ldinib_func =0.0, ps0ldinib_func_dT =0.0 ;*/
|
||||
double cnst0over_func =0.0, cnst0over_func_dT =0.0 ;
|
||||
double cnst1over =0.0, cnst1over_dT =0.0;
|
||||
/* Qover Analytical Model */
|
||||
|
|
@ -904,15 +905,17 @@ int HSMHVevaluate
|
|||
double Tp, Tp_dT ;
|
||||
double Tq, Tq_dVxb, Tq_dVgb, Tq_dT ;
|
||||
double T1_dVxb, T1_dVgb ;
|
||||
/* double T2_dVxb, T2_dVgb ;*/
|
||||
/* double T3_dVxb, T3_dVgb ;*/
|
||||
double T5_dVxb, T5_dVgb ;
|
||||
double VgpLD_shift, VgpLD_shift_dT ;
|
||||
double VgpLD_shift_dVgb, VgpLD_shift_dVxb, exp_bVbs_dVxb ;
|
||||
double gamma, gamma_dVxb, gamma_dT ;
|
||||
double psi , psi_dVgb , psi_dVxb , psi_dT ;
|
||||
double psi_B, arg_B ;
|
||||
/* double psi_B, arg_B ;*/
|
||||
double Chi_1, Chi_1_dVgb, Chi_1_dVxb ,Chi_1_dT ;
|
||||
double Chi_A, Chi_A_dVgb, Chi_A_dVxb, Chi_A_dT ;
|
||||
double Chi_B, Chi_B_dVgb, Chi_B_dVxb, Chi_B_dT;
|
||||
double Chi_B, Chi_B_dVgb, Chi_B_dVxb, Chi_B_dT;/*, Chi_B_dpsi , Chi_B_dgamma ;*/
|
||||
|
||||
/* X_dT for leakage currents & junction diodes */
|
||||
double isbd_dT =0.0, isbs_dT =0.0 ;
|
||||
|
|
@ -1815,8 +1818,10 @@ int HSMHVevaluate
|
|||
|
||||
Vdx = model->HSMHV_scp21 + Vdsz ;
|
||||
Vdx_dVbs = Vdsz_dVbs ;
|
||||
/* Vdx_dT = Vdsz_dT ;*/
|
||||
Vdx2 = Vdx * Vdx ;
|
||||
Vdx2_dVbs = 2 * Vdx_dVbs * Vdx ;
|
||||
/* Vdx2_dT = 2 * Vdx_dT * Vdx ;*/
|
||||
|
||||
dVthLP = T1 * dVth0 * T3 + dqb - here->HSMHV_msc / Vdx2 ;
|
||||
dVthLP_dVb = T1_dVb * dVth0 * T3 + T1 * dVth0_dVb * T3 + T1 * dVth0 * T3_dVb
|
||||
|
|
@ -4045,6 +4050,7 @@ start_of_mobility:
|
|||
costi3_dVb_c3 = costi3_dVb * T2 ;
|
||||
costi3_dVd_c3 = costi3_dVd * T2 ;
|
||||
costi3_dVg_c3 = costi3_dVg * T2 ;
|
||||
/* costi3_dT_c3 = costi3_dT * T2 ;*/
|
||||
|
||||
costi4 = costi3 * beta * 0.5 ;
|
||||
costi4_dT = ( costi3_dT * beta + costi3 * beta_dT ) * 0.5 ;
|
||||
|
|
@ -5051,9 +5057,8 @@ start_of_mobility:
|
|||
Nover_func = Novers ;
|
||||
cnst0over_func = ModeNML * here->HSMHV_cnst0overs + ModeRVS * here->HSMHV_cnst0over ;
|
||||
cnst0over_func_dT = ModeNML * cnst0overs_dT + ModeRVS * cnst0over_dT ;
|
||||
ps0ldinib_func = ModeNML * here->HSMHV_ps0ldinibs + ModeRVS * here->HSMHV_ps0ldinib ;
|
||||
ps0ldinib_func_dT = ModeNML * ps0ldinibs_dT + ModeRVS * ps0ldinib_dT ;
|
||||
|
||||
/* ps0ldinib_func = ModeNML * here->HSMHV_ps0ldinibs + ModeRVS * here->HSMHV_ps0ldinib ;*/
|
||||
/* ps0ldinib_func_dT = ModeNML * ps0ldinibs_dT + ModeRVS * ps0ldinib_dT ;*/
|
||||
#include "hsmhveval_qover.h"
|
||||
|
||||
T4 = here->HSMHV_weffcv_nf * Lovers * ( 1 - CVDSOVER ) ;
|
||||
|
|
@ -5064,18 +5069,18 @@ start_of_mobility:
|
|||
Qovs_dVbs = T4 * QsuLD_dVbs ;
|
||||
Qovs_dT = T4 * QsuLD_dT ;
|
||||
|
||||
QisLD = T4 * QiuLD ;
|
||||
/* QisLD = T4 * QiuLD ;*/
|
||||
QisLD_dVbs = T4 * QiuLD_dVbs ;
|
||||
QisLD_dVds = T4 * QiuLD_dVds ;
|
||||
QisLD_dVgs = T4 * QiuLD_dVgs ;
|
||||
QisLD_dT = T4 * QiuLD_dT ;
|
||||
|
||||
QbsLD = T4 * QbuLD ;
|
||||
QbsLD_dVbs = T4 * QbuLD_dVbs ;
|
||||
/* QbsLD_dVbs = T4 * QbuLD_dVbs ;
|
||||
QbsLD_dVds = T4 * QbuLD_dVds ;
|
||||
QbsLD_dVgs = T4 * QbuLD_dVgs ;
|
||||
QbsLD_dT = T4 * QbuLD_dT ;
|
||||
|
||||
*/
|
||||
|
||||
|
||||
if ( CVDSOVER != 0.0 ) { /* Qovsext begin */
|
||||
|
|
@ -5097,18 +5102,18 @@ start_of_mobility:
|
|||
Qovsext_dVbse = T4 * QsuLD_dVbs ;
|
||||
Qovsext_dT = T4 * QsuLD_dT ;
|
||||
|
||||
QisLDext = T4 * QiuLD ;
|
||||
/* QisLDext = T4 * QiuLD ;*/
|
||||
QisLDext_dVbse = T4 * QiuLD_dVbs ;
|
||||
QisLDext_dVdse = T4 * QiuLD_dVds ;
|
||||
QisLDext_dVgse = T4 * QiuLD_dVgs ;
|
||||
QisLDext_dT = T4 * QiuLD_dT ;
|
||||
|
||||
QbsLDext = T4 * QbuLD ;
|
||||
QbsLDext_dVbse = T4 * QbuLD_dVbs ;
|
||||
/* QbsLDext_dVbse = T4 * QbuLD_dVbs ;
|
||||
QbsLDext_dVdse = T4 * QbuLD_dVds ;
|
||||
QbsLDext_dVgse = T4 * QbuLD_dVgs ;
|
||||
QbsLDext_dT = T4 * QbuLD_dT ;
|
||||
|
||||
*/
|
||||
} /* Qovsext end */
|
||||
|
||||
}
|
||||
|
|
@ -5186,9 +5191,8 @@ start_of_mobility:
|
|||
Nover_func = Noverd ;
|
||||
cnst0over_func = ModeNML * here->HSMHV_cnst0over + ModeRVS * here->HSMHV_cnst0overs ;
|
||||
cnst0over_func_dT = ModeNML * cnst0over_dT + ModeRVS * cnst0overs_dT ;
|
||||
ps0ldinib_func = ModeNML * here->HSMHV_ps0ldinib + ModeRVS * here->HSMHV_ps0ldinibs ;
|
||||
ps0ldinib_func_dT = ModeNML * ps0ldinib_dT + ModeRVS * ps0ldinibs_dT ;
|
||||
|
||||
/* ps0ldinib_func = ModeNML * here->HSMHV_ps0ldinib + ModeRVS * here->HSMHV_ps0ldinibs ;*/
|
||||
/* ps0ldinib_func_dT = ModeNML * ps0ldinib_dT + ModeRVS * ps0ldinibs_dT ;*/
|
||||
#include "hsmhveval_qover.h"
|
||||
|
||||
T4 = here->HSMHV_weffcv_nf * Loverd * ( 1 - CVDSOVER ) ;
|
||||
|
|
@ -5198,7 +5202,7 @@ start_of_mobility:
|
|||
Qovd_dVbs = T4 * QsuLD_dVbs ;
|
||||
Qovd_dT = T4 * QsuLD_dT ;
|
||||
|
||||
QidLD = T4 * QiuLD ;
|
||||
/* QidLD = T4 * QiuLD ;*/
|
||||
QidLD_dVbs = T4 * QiuLD_dVbs ;
|
||||
QidLD_dVds = T4 * QiuLD_dVds ;
|
||||
QidLD_dVgs = T4 * QiuLD_dVgs ;
|
||||
|
|
@ -5230,7 +5234,7 @@ start_of_mobility:
|
|||
Qovdext_dVbse = T4 * QsuLD_dVbs ;
|
||||
Qovdext_dT = T4 * QsuLD_dT ;
|
||||
|
||||
QidLDext = T4 * QiuLD ;
|
||||
/* QidLDext = T4 * QiuLD ;*/
|
||||
QidLDext_dVbse = T4 * QiuLD_dVbs ;
|
||||
QidLDext_dVdse = T4 * QiuLD_dVds ;
|
||||
QidLDext_dVgse = T4 * QiuLD_dVgs ;
|
||||
|
|
|
|||
|
|
@ -311,8 +311,8 @@
|
|||
psi += beta*0.1 ;
|
||||
psi_dT += beta_dT*0.1 ;
|
||||
|
||||
psi_B = psi;
|
||||
arg_B = psi*psi/(gamma*T0);
|
||||
/* psi_B = psi;*/
|
||||
/* arg_B = psi*psi/(gamma*T0);*/
|
||||
Chi_B = log(gamma*T0 + psi*psi) - log(cnst1over*T0) + beta*Vxbgmtcl;
|
||||
Chi_B_dVgb = 2.0*psi*psi_dVgb/ (gamma*T0 + psi*psi);
|
||||
Chi_B_dVxb = (gamma_dVxb*T0+2.0*psi*psi_dVxb)/(gamma*T0+psi*psi)
|
||||
|
|
@ -321,10 +321,10 @@
|
|||
- (cnst1over_dT*T0 + cnst1over*T0_dT)/(cnst1over*T0)
|
||||
+ beta_dT*Vxbgmtcl + beta*Vxbgmtcl_dT;
|
||||
Ps0_iniB = Chi_B/beta - Vxbgmtcl ;
|
||||
Ps0_iniB_dVgb = Chi_B_dVgb/beta;
|
||||
/* Ps0_iniB_dVgb = Chi_B_dVgb/beta;
|
||||
Ps0_iniB_dVxb = Chi_B_dVxb/beta- Vxbgmtcl_dVxbgmt;
|
||||
Ps0_iniB_dT = Chi_B_dT/beta - Chi_B/(beta*beta)*beta_dT - Vxbgmtcl_dT;
|
||||
|
||||
*/
|
||||
|
||||
/* construction of Ps0LD by taking Ps0_iniB as an upper limit of Ps0_iniA
|
||||
*
|
||||
|
|
@ -577,7 +577,7 @@
|
|||
fs01_dVgs = Ps0LD_dVgb * fs01_dPs0 ;
|
||||
fs01_dT = Ps0LD_dT * fs01_dPs0 + fs01_dT;
|
||||
fs02_dVbs = Ps0LD_dVxb * fs02_dPs0 + fs02_dVbs ;
|
||||
fs02_dVxb = Ps0LD_dVds * fs02_dPs0 ;
|
||||
/* fs02_dVxb = Ps0LD_dVds * fs02_dPs0 ;*/
|
||||
fs02_dVgb = Ps0LD_dVgb * fs02_dPs0 ;
|
||||
fs02_dT = Ps0LD_dT * fs02_dPs0 + fs02_dT;
|
||||
|
||||
|
|
@ -616,9 +616,9 @@
|
|||
} /* end of Vgbgmt region blocks */
|
||||
|
||||
/* convert to source ref. */
|
||||
Ps0LD_dVbs = Ps0LD_dVxb * Vxbgmt_dVbs + Ps0LD_dVgb * Vgbgmt_dVbs ;
|
||||
/* Ps0LD_dVbs = Ps0LD_dVxb * Vxbgmt_dVbs + Ps0LD_dVgb * Vgbgmt_dVbs ;*/
|
||||
Ps0LD_dVds = Ps0LD_dVxb * Vxbgmt_dVds + Ps0LD_dVgb * Vgbgmt_dVds ;
|
||||
Ps0LD_dVgs = Ps0LD_dVxb * Vxbgmt_dVgs + Ps0LD_dVgb * Vgbgmt_dVgs ;
|
||||
/* Ps0LD_dVgs = Ps0LD_dVxb * Vxbgmt_dVgs + Ps0LD_dVgb * Vgbgmt_dVgs ;*/
|
||||
|
||||
QsuLD_dVbs = QsuLD_dVxb * Vxbgmt_dVbs + QsuLD_dVgb * Vgbgmt_dVbs ;
|
||||
QsuLD_dVds = QsuLD_dVxb * Vxbgmt_dVds + QsuLD_dVgb * Vgbgmt_dVds ;
|
||||
|
|
|
|||
|
|
@ -171,8 +171,8 @@ int HSMHVload(
|
|||
register HSMHVmodel *model = (HSMHVmodel*)inModel;
|
||||
register HSMHVinstance *here;
|
||||
HSMHVbinningParam *pParam;
|
||||
HSMHVmodelMKSParam *modelMKS ;
|
||||
HSMHVhereMKSParam *hereMKS ;
|
||||
/* HSMHVmodelMKSParam *modelMKS ;*/
|
||||
/* HSMHVhereMKSParam *hereMKS ;*/
|
||||
|
||||
|
||||
|
||||
|
|
@ -249,7 +249,7 @@ int HSMHVload(
|
|||
|
||||
double Qdext=0.0, dQdext_dVdse=0.0, dQdext_dVgse=0.0, dQdext_dVbse=0.0, dQdext_dT=0.0 ;
|
||||
double Qgext=0.0, dQgext_dVdse=0.0, dQgext_dVgse=0.0, dQgext_dVbse=0.0, dQgext_dT=0.0 ;
|
||||
double dQsext_dVdse=0.0, dQsext_dVgse=0.0, dQsext_dVbse=0.0, dQsext_dT=0.0 ;
|
||||
double /*Qsext=0.0,*/ dQsext_dVdse=0.0, dQsext_dVgse=0.0, dQsext_dVbse=0.0, dQsext_dT=0.0 ;
|
||||
double Qbext=0.0, dQbext_dVdse=0.0, dQbext_dVgse=0.0, dQbext_dVbse=0.0, dQbext_dT=0.0 ;
|
||||
/* 5th substrate node */
|
||||
int flg_subNode = 0 ;
|
||||
|
|
@ -363,12 +363,12 @@ int HSMHVload(
|
|||
for ( ; model != NULL; model = model->HSMHVnextModel ) {
|
||||
/* loop through all the instances of the model */
|
||||
|
||||
modelMKS = &model->modelMKS ;
|
||||
/* modelMKS = &model->modelMKS ;*/
|
||||
|
||||
for (here = model->HSMHVinstances; here != NULL ;
|
||||
here = here->HSMHVnextInstance) {
|
||||
|
||||
hereMKS = &here->hereMKS ;
|
||||
/* hereMKS = &here->hereMKS ;*/
|
||||
pParam = &here->pParam ;
|
||||
showPhysVal = 0;
|
||||
Check=1;
|
||||
|
|
@ -1107,6 +1107,7 @@ line755: /* standard entry if HSMHVevaluate is bypassed */
|
|||
dQgext_dVgse = here->HSMHV_dQgext_dVgse ;
|
||||
dQgext_dVbse = here->HSMHV_dQgext_dVbse ;
|
||||
dQgext_dT = (here->HSMHV_coselfheat > 0) ? here->HSMHV_dQgext_dTi : 0.0 ;
|
||||
/* Qsext = here->HSMHV_qsext ;*/
|
||||
dQsext_dVdse = here->HSMHV_dQsext_dVdse ;
|
||||
dQsext_dVgse = here->HSMHV_dQsext_dVgse ;
|
||||
dQsext_dVbse = here->HSMHV_dQsext_dVbse ;
|
||||
|
|
@ -1268,6 +1269,7 @@ line755: /* standard entry if HSMHVevaluate is bypassed */
|
|||
dQgext_dVgse = here->HSMHV_dQgext_dVgse ;
|
||||
dQgext_dVbse = here->HSMHV_dQgext_dVbse ;
|
||||
dQgext_dT = (here->HSMHV_coselfheat > 0) ? here->HSMHV_dQgext_dTi : 0.0 ;
|
||||
/* Qsext = here->HSMHV_qdext ;*/
|
||||
dQsext_dVdse = - (here->HSMHV_dQdext_dVdse + here->HSMHV_dQdext_dVgse + here->HSMHV_dQdext_dVbse);
|
||||
dQsext_dVgse = here->HSMHV_dQdext_dVgse ;
|
||||
dQsext_dVbse = here->HSMHV_dQdext_dVbse ;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ int HSMHVtemp(
|
|||
double T0, T1, T2, T3, T4, T5, T6, T7 ;
|
||||
/* temperature-dependent variables */
|
||||
double Eg =0.0, TTEMP0=0.0, TTEMP=0.0, beta=0.0, Nin=0.0 ;
|
||||
double Tdiff0 = 0.0, Tdiff0_2 = 0.0, Tdiff = 0.0, Tdiff_2 = 0.0 ;
|
||||
double /*Tdiff0 = 0.0, Tdiff0_2 = 0.0,*/ Tdiff = 0.0, Tdiff_2 = 0.0 ;
|
||||
double js=0.0, jssw=0.0, js2=0.0, jssw2 =0.0 ;
|
||||
int i=0 ;
|
||||
double TMF1 , TMF2 ;
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@
|
|||
/* Self heating */
|
||||
TTEMP = TTEMP + deltemp ;
|
||||
#endif
|
||||
Tdiff0 = TTEMP0 - model->HSMHV_ktnom ;
|
||||
Tdiff0_2 = TTEMP0 * TTEMP0 - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
/*Tdiff0 = TTEMP0 - model->HSMHV_ktnom ;*/
|
||||
/*Tdiff0_2 = TTEMP0 * TTEMP0 - model->HSMHV_ktnom * model->HSMHV_ktnom ;*/
|
||||
Tdiff = TTEMP - model->HSMHV_ktnom ;
|
||||
Tdiff_2 = TTEMP * TTEMP - model->HSMHV_ktnom * model->HSMHV_ktnom ;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue