1 /******************************************************************************/
3 /* Chaine de CAO & VLSI AVERTEC */
5 /* Fichier : mcc_mod_bsim3v3.h */
8 /* (c) copyright 2001 AVERTEC */
9 /* Tous droits reserves */
11 /* Auteur(s) : Marc KUOCH */
12 /*----------------------------------------------------------------------------*/
15 /*----------------------------------------------------------------------------*/
17 /******************************************************************************/
19 /******************************************************************************/
21 /******************************************************************************/
23 /******************************************************************************/
25 extern void mcc_initparam_bsim4(mcc_modellist
*ptmodel
) ;
27 // specific func for bsim43
28 extern int mcc_need_stress_bs43 ( mcc_modellist
*ptmodel
,
29 elp_lotrs_param
*lotrsparam
32 extern double mcc_update_Kstress_vsat_bs43 ( mcc_modellist
*ptmodel
,
33 elp_lotrs_param
*lotrsparam
,
40 extern double mcc_update_Kstress_ueff_bs43 ( mcc_modellist
*ptmodel
,
41 elp_lotrs_param
*lotrsparam
,
48 extern double mcc_update_Kstress_eta0_bs43 ( mcc_modellist
*ptmodel
,
49 elp_lotrs_param
*lotrsparam
,
56 extern double mcc_update_Kstress_k2_bs43 ( mcc_modellist
*ptmodel
,
57 elp_lotrs_param
*lotrsparam
,
63 extern double mcc_update_Kstress_vth0_bs43 ( mcc_modellist
*ptmodel
,
64 elp_lotrs_param
*lotrsparam
,
70 extern double mcc_calc_Kstress_vth0_bs43 ( mcc_modellist
*ptmodel
,
73 int NF
, elp_lotrs_param
*lotrsparam
);
75 extern double mcc_calc_Pueff_bs43 ( mcc_modellist
*ptmodel
,
76 double inv_sa
, double inv_sb
,
80 int NF
, elp_lotrs_param
*lotrsparam
);
82 extern double mcc_calc_Kstress_u0_bs43 ( mcc_modellist
*ptmodel
,
86 int NF
, elp_lotrs_param
*lotrsparam
);
88 extern void mcc_calc_inv_sa_bs43 ( mcc_modellist
*ptmodel
,
89 elp_lotrs_param
*lotrsparam
,
93 extern void mcc_calc_inv_sb_bs43 ( mcc_modellist
*ptmodel
,
94 elp_lotrs_param
*lotrsparam
,
99 extern double mcc_calc_coxe_bsim4 ( mcc_modellist
*ptmodel
);
100 extern double mcc_calc_coxp_bsim4 ( mcc_modellist
*ptmodel
);
101 extern double mcc_calc_coxeff_bsim4 (mcc_modellist
*ptmodel
,
102 double Vgsteff
, double temp
,
103 double Leff
, double Weff
,
105 double Vgseff
,double Vbseff
, double Vfbeff
,
106 double BINUNIT
, int cv_model
,
107 double *coxeff_acc_dep
,
108 elp_lotrs_param
*lotrsparam
,
110 extern double mcc_calc_gamma1_bsim4 (mcc_modellist
*ptmodel
, double Leff
,double Weff
, double BINUNIT
);
111 extern double mcc_calc_gamma2_bsim4 (mcc_modellist
*ptmodel
);
112 extern double mcc_calc_ni_bsim4 (mcc_modellist
*model
,double temp
);
113 extern double mcc_calc_phis_bsim4 (mcc_modellist
*ptmodel
,double Leff
,double Weff
,
114 double BINUNIT
,double temp
);
115 extern double mcc_calc_vbi_bsim4 (mcc_modellist
*ptmodel
,double temp
,
116 double Leff
, double Weff
, int getparm_flag
);
117 extern double mcc_calc_vbx_bsim4 (mcc_modellist
*ptmodel
,double Leff
,double Weff
,
118 double BINUNIT
,double temp
);
121 extern double mcc_calc_leff_bsim4 (mcc_modellist
*ptmodel
,elp_lotrs_param
*lotrsparam
,double L
,double W
);
122 extern double mcc_calc_weffcj_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
, double L
,double W
);
123 extern double mcc_calc_weff_bsim4 (mcc_modellist
*ptmodel
,elp_lotrs_param
*lotrsparam
,double L
,double W
);
124 extern double mcc_calcDW_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,double L
, double W
) ;
125 extern double mcc_calcDL_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,double L
, double W
) ;
126 extern double mcc_calcDLC_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,double L
, double W
) ;
127 extern double mcc_calcDWC_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,double L
, double W
) ;
128 extern double mcc_calcDWCJ_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
, double L
, double W
) ;
131 extern double mcc_calc_vbseff_bsim4 (mcc_modellist
*ptmodel
,
133 double Leff
, double Weff
,
134 double Temp
, double K2
,
135 int getparm_flag
,elp_lotrs_param
*lotrsparam
);
136 extern double mcc_calc_vgsteffcv_bsim4 (mcc_modellist
*ptmodel
,
137 double Vth
, double Vbseff
,
138 double Vds
, double Vgs
,
140 double Leff
, double Weff
,
142 elp_lotrs_param
*lotrsparam
,
145 extern double mcc_calc_vgsteff_bsim4 (mcc_modellist
*ptmodel
,
146 double Vth
, double Vbseff
,
147 double Vds
, double Vgs
,
149 double Leff
, double Weff
,
152 elp_lotrs_param
*lotrsparam
,
155 extern void mcc_calc_vdseff_bsim4 ( mcc_modellist
*ptmodel
,
156 double *Vdseff
, double *Vdsat
,
157 double *Esat
, double *ueffT
,
158 double *Abulk_r
, double *Rds_r
,
159 double *VsatT_r
, double *lambda_r
,
160 double *Rfactor_r
, double *Weff_v_r
,
161 double Vth
, double Vbseff
,
162 double Vds
, double Vgsteff
,
165 elp_lotrs_param
*lotrsparam
,
170 extern double mcc_calcVTH_bsim4 (mcc_modellist
*ptmodel
,
177 elp_lotrs_param
*lotrsparam
,
180 extern double mcc_calcIDS_bsim4 (mcc_modellist
*ptmodel
,
187 elp_lotrs_param
*lotrsparam
);
188 double mcc_calcCGP_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,double vdd
,
189 double L
, double W
, double *ptQov
);
190 double mcc_calcCDS_bsim4 (mcc_modellist
*ptmodel
, double temp
, double vbx1
, double vbx2
);
191 double mcc_calcCDP_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,
192 double temp
, double vbx1
,double vbx2
);
193 double mcc_calcCDW_bsim4 (mcc_modellist
*ptmodel
, elp_lotrs_param
*lotrsparam
,
194 double temp
, double vbx1
, double vbx2
,
195 double vdd
, double L
, double W
) ;
197 double mcc_calcIdiode_bsim4 (mcc_modellist *ptmodel, double AX,
198 double PX, double temp,
199 double L, double W, double vbx);
201 void mcc_calcQint_bsim4 (mcc_modellist
*ptmodel
, double L
, double W
,
202 double temp
, double vgs
, double vbs
, double vds
,
203 double *ptQg
, double *ptQs
, double *ptQd
,
204 double *ptQb
,elp_lotrs_param
*lotrsparam
);
205 double mcc_calcCGD_bsim4 (mcc_modellist
*ptmodel
,
212 elp_lotrs_param
*elp_lotrs_param
) ;
213 double mcc_calcCGSI_bsim4 (mcc_modellist
*ptmodel
,
219 elp_lotrs_param
*elp_lotrs_param
) ;
220 double mcc_calcIgb_bsim4 (mcc_modellist
*ptmodel
, double L
, double W
, double temp
,
221 double Vgs
, double Vds
, double Vbs
,
222 elp_lotrs_param
*lotrsparam
);
223 void mcc_calcIgixl_bsim4 (mcc_modellist
*ptmodel
, double L
, double W
,
224 double *ptIgidl
, double *ptIgisl
,
225 double temp
, double Vgs
, double Vds
, double Vbs
,
226 elp_lotrs_param
*lotrsparam
);
227 void mcc_calcIxb_bsim4 (mcc_modellist
*ptmodel
, double L
, double W
,
228 double *ptIdb
, double *Isb
,
229 double temp
, double Vds
, double Vbs
,
230 double AD
, double PD
, double AS
, double PS
,
231 elp_lotrs_param
*lotrsparam
);
232 void mcc_calcIgx_bsim4 (mcc_modellist
*ptmodel
, double L
, double W
,
233 double *ptIgd
, double *ptIgs
,
234 double temp
, double Vds
, double Vgs
,
235 elp_lotrs_param
*lotrsparam
);
236 void mcc_calcIgcx_bsim4 (mcc_modellist
*ptmodel
, double L
, double W
,
237 double *ptIgcd
, double *ptIgcs
,
238 double temp
, double Vds
, double Vgs
, double Vbs
,
239 elp_lotrs_param
*lotrsparam
);
240 void mcc_calcPAfromgeomod_bsim4( lotrs_list
*lotrs
,
241 mcc_modellist
*model
,
242 elp_lotrs_param
*lotrsparam
,
248 void mcc_calcPA_bsim4( double nf
,
260 void mcc_calcnumberfingerdiff( double nf
,
269 double mcc_update_wpe_ueff( mcc_modellist
*model
,
270 elp_lotrs_param
*lotrsparam
,
278 double mcc_update_wpe_k2( mcc_modellist
*model
,
279 elp_lotrs_param
*lotrsparam
,
287 double mcc_update_wpe_vth0( mcc_modellist
*model
,
288 elp_lotrs_param
*lotrsparam
,
296 int mcc_get_wpe( mcc_modellist
*model
,
297 elp_lotrs_param
*lotrsparam
,