1 /*****************************************************************************/
3 /* 8888888 88888888 88888888 */
6 /* 8 88888888 88888888 */
9 /* 888888 888888888 888888888 */
11 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
13 /* GSS material database Version 0.4 */
14 /* Last update: Feb 17, 2006 */
18 /* NINT, No.69 P.O.Box, Xi'an City, China */
20 /*****************************************************************************/
27 class GSS_Mob_Analytic
: public PMIS_Mobility
30 // parameters for Analytic mobility
44 // parameters for high field modification
47 void Mob_Analytic_Init()
49 MUN_MIN
= 5.524000E+01*cm
*cm
/V
/s
;
50 MUN_MAX
= 1.429230E+03*cm
*cm
/V
/s
;
51 NREFN
= 1.072000E+17*pow(cm
,-3);
54 ALPHAN
= 7.300000E-01;
55 MUP_MIN
= 4.970000E+01*cm
*cm
/V
/s
;
56 MUP_MAX
= 4.793700E+02*cm
*cm
/V
/s
;
57 NREFP
= 1.606000E+17*pow(cm
,-3);
60 ALPHAP
= 7.000000E-01;
67 //---------------------------------------------------------------------------
68 // Electron low field mobility
69 PetscScalar
ElecMobLowField(const PetscScalar
&Tl
) const
71 PetscScalar Na
= ReadDopingNa();
72 PetscScalar Nd
= ReadDopingNd();
73 return MUN_MIN
+(MUN_MAX
*pow(Tl
/T300
,NUN
)-MUN_MIN
)/ \
74 (1+pow(Tl
/T300
,XIN
)*pow((Na
+Nd
)/NREFN
,ALPHAN
));
76 AutoDScalar
ElecMobLowField(const AutoDScalar
&Tl
) const
78 PetscScalar Na
= ReadDopingNa();
79 PetscScalar Nd
= ReadDopingNd();
80 return MUN_MIN
+(MUN_MAX
*pow(Tl
/T300
,NUN
)-MUN_MIN
)/ \
81 (1+pow(Tl
/T300
,XIN
)*pow((Na
+Nd
)/NREFN
,ALPHAN
));
84 //---------------------------------------------------------------------------
85 // Hole low field mobility
86 PetscScalar
HoleMobLowField(const PetscScalar
&Tl
) const
88 PetscScalar Na
= ReadDopingNa();
89 PetscScalar Nd
= ReadDopingNd();
90 return MUP_MIN
+(MUP_MAX
*pow(Tl
/T300
,NUP
)-MUP_MIN
)/ \
91 (1+pow(Tl
/T300
,XIP
)*pow((Na
+Nd
)/NREFP
,ALPHAP
));
93 AutoDScalar
HoleMobLowField(const AutoDScalar
&Tl
) const
95 PetscScalar Na
= ReadDopingNa();
96 PetscScalar Nd
= ReadDopingNd();
97 return MUP_MIN
+(MUP_MAX
*pow(Tl
/T300
,NUP
)-MUP_MIN
)/ \
98 (1+pow(Tl
/T300
,XIP
)*pow((Na
+Nd
)/NREFP
,ALPHAP
));
102 //---------------------------------------------------------------------------
104 PetscScalar
ElecMob(const PetscScalar
&p
, const PetscScalar
&n
, const PetscScalar
&Tl
,
105 const PetscScalar
&Ep
, const PetscScalar
&Et
, const PetscScalar
&Tn
) const
107 PetscScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
108 PetscScalar mu0
= ElecMobLowField(Tl
);
109 return mu0
/pow(1+pow(mu0
*fabs(Ep
)/vsat
,BETAN
),1.0/BETAN
);
111 AutoDScalar
ElecMob(const AutoDScalar
&p
, const AutoDScalar
&n
, const AutoDScalar
&Tl
,
112 const AutoDScalar
&Ep
, const AutoDScalar
&Et
, const AutoDScalar
&Tn
) const
114 AutoDScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
115 AutoDScalar mu0
= ElecMobLowField(Tl
);
116 return mu0
/pow(1+pow(mu0
*fabs(Ep
)/vsat
,BETAN
),1.0/BETAN
);
119 //---------------------------------------------------------------------------
121 PetscScalar
HoleMob (const PetscScalar
&p
, const PetscScalar
&n
, const PetscScalar
&Tl
,
122 const PetscScalar
&Ep
, const PetscScalar
&Et
, const PetscScalar
&Tp
) const
124 PetscScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
125 PetscScalar mu0
= HoleMobLowField(Tl
);
126 return mu0
/pow(1+pow(mu0
*fabs(Ep
)/vsat
,BETAP
),1.0/BETAP
);
128 AutoDScalar
HoleMob(const AutoDScalar
&p
, const AutoDScalar
&n
, const AutoDScalar
&Tl
,
129 const AutoDScalar
&Ep
, const AutoDScalar
&Et
, const AutoDScalar
&Tp
) const
131 AutoDScalar vsat
= (2.4e7
*cm
/s
)/(1+0.8*exp(Tl
/(2*T300
)));
132 AutoDScalar mu0
= HoleMobLowField(Tl
);
133 return mu0
/pow(1+pow(mu0
*fabs(Ep
)/vsat
,BETAP
),1.0/BETAP
);
136 // constructor and destructor
138 GSS_Mob_Analytic(const PMIS_Environment
&env
):PMIS_Mobility(env
)
151 /*---------------------------------------------------------------
152 * the interface function called by material databse controller
153 * use Analytic model as default mobility model
157 PMIS_Mobility
* PMIS_Ge_Mob_Default (const PMIS_Environment
& env
)
159 return new GSS_Mob_Analytic(env
);
165 PMIS_Mobility
* PMIS_Ge_Mob_Analytic (const PMIS_Environment
& env
)
167 return new GSS_Mob_Analytic(env
);