1 /****************************************************************************/
3 /* Chaine de CAO & VLSI Alliance */
5 /* Produit : MCC Version 1 */
6 /* Fichier : mcc_genspi.h */
8 /* (c) copyright 1991-1998 Laboratoire LIP6 equipe ASIM */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
12 /* Auteur(s) : Karim DIOURY */
14 /****************************************************************************/
18 extern long MCC_SPICEUD_FITA
;
19 extern long MCC_SPICEDU_FITA
;
20 extern long MCC_SPICEUD_FITCG
;
21 extern long MCC_SPICEDU_FITCG
;
22 extern long MCC_SPICEUD_FITCGNOCAPA
;
23 extern long MCC_SPICEDU_FITCGNOCAPA
;
24 extern long MCC_SPICEUD_FITDN
;
25 extern long MCC_SPICEDU_FITDN
;
26 extern long MCC_SPICEDU_FITDP
;
27 extern long MCC_SPICEUD_FITDP
;
28 extern long MCC_SPICEFUD_FITA
;
29 extern long MCC_SPICEFDU_FITA
;
30 extern long MCC_SPICEFUD_FITCG
;
31 extern long MCC_SPICEFDU_FITCG
;
32 extern long MCC_SPICEFUD_FITCGNOCAPA
;
33 extern long MCC_SPICEFDU_FITCGNOCAPA
;
34 extern long MCC_SPICEFUD_FITDN
;
35 extern long MCC_SPICEFDU_FITDN
;
36 extern long MCC_SPICEFDU_FITDP
;
37 extern long MCC_SPICEFUD_FITDP
;
39 extern double *MCC_IDNSAT
;
40 extern double *MCC_IDNRES
;
41 extern double *MCC_IDNVGS
;
42 extern double *MCC_IDPSAT
;
43 extern double *MCC_IDPRES
;
44 extern double *MCC_IDPVGS
;
45 extern double *MCC_VDDDEG
;
46 extern double *MCC_VSSDEG
;
47 extern double **MCC_FITS
;
49 extern char surf_string_n
[1024];
50 extern char surf_string_p
[1024];
51 extern elp_lotrs_param mcc_user_lotrsparam_n
, mcc_user_lotrsparam_p
;
55 void mcc_trs_corner( int type
, elp_lotrs_param
*lotrsparam_n
, elp_lotrs_param
*lotrsparam_p
, mcc_corner_info
*info
);
56 extern double mcc_calcul_isat
__P((double,
60 extern double mcc_calcul_ures
__P((double,
64 extern double mcc_calcul_ires
__P((double,
68 extern double mcc_current
__P((double,
73 extern double mcc_spicecurrent
__P((double,
79 extern double mcc_spicecalccurrent
__P((double,
85 extern double mcc_spicesimcurrent
__P((double,
90 extern double mcc_spicevdeg
__P((
95 extern double mcc_calcdiffmodelsat
__P((double,
102 extern void mcc_calcul_vt
__P((int,elp_lotrs_param
*,elp_lotrs_param
*,mcc_corner_info
*info
)) ;
103 extern double mcc_calcul_a
__P((double,
111 extern double mcc_calcul_b
__P((double,
119 extern double mcc_calcul_r
__P((double,
124 extern double mcc_calcul_rs
__P((double,
131 extern void mcc_calcul_k
__P((int,elp_lotrs_param
*)) ;
132 extern void mcc_calcul_abr
__P((int,double,double,elp_lotrs_param
*,elp_lotrs_param
*)) ;
133 extern void mcc_calcul_vti
__P((int,elp_lotrs_param
*,elp_lotrs_param
*)) ;
134 extern void mcc_calcul_vdeg
__P((int,elp_lotrs_param
*,elp_lotrs_param
*)) ;
135 extern void mcc_drvspitab
__P((int,
142 extern void mcc_prsspifile
__P((int,
147 extern void mcc_addspidata
__P((int,elp_lotrs_param
*,elp_lotrs_param
*)) ;
148 extern void mcc_readspidata
__P((int,elp_lotrs_param
*,elp_lotrs_param
*)) ;
149 extern void mcc_allocspidata
__P((int)) ;
150 extern void mcc_freespidata
__P((int,int)) ;
151 extern void mcc_runspice
__P((int)) ;
152 //extern void mcc_execspice __P((char *,int)) ;
153 extern void mcc_genspicom
__P((FILE *,
158 extern void mcc_genspi
__P((
163 extern void mcc_calcspicedelay
__P((char *,
171 extern void mcc_genparam
__P((char *,
180 extern void mcc_setelpparam
__P((void)) ;
181 extern double mcc_get_best_abr_from_vt ( int type
,
182 elp_lotrs_param
*lotrsparam_n
,
183 elp_lotrs_param
*lotrsparam_p
,
184 mcc_corner_info
*info
186 extern void mcc_update_technoparams(char*,int,double,double,lotrs_list
*,int);
187 extern double mcc_calcIleakage_from_lotrs (char *modelname
,int type
, double l
, double w
,
188 lotrs_list
*lotrs
, int lotrscase
,
189 double vgs
,double vds
,double vbs
,
190 double AD
,double PD
,double AS
, double PS
,
191 double *BLeak
,double *DLeak
,double *SLeak
,
192 elp_lotrs_param
*lotrsparam
);
193 extern void mcc_calcul_raccess(int,elp_lotrs_param
*,elp_lotrs_param
*);
194 double mcc_calcul_vt_error( int type
, elp_lotrs_param
*lotrsparam_n
, elp_lotrs_param
*lotrsparam_p
, double testvt
, mcc_corner_info
*info
);
195 void mcc_calcul_rst( int type
, elp_lotrs_param
*lotrsparam_n
, elp_lotrs_param
*lotrsparam_p
);
196 void mcc_printf_instance_specific(FILE *file
, elp_lotrs_param
*lotrsparam_n
);
197 void mcc_get_np_vgs(float *vgsn
, float *vgsp
);
198 void mcc_genspi_for_inverter_simulator(elp_lotrs_param
*lotrsparam_n
,elp_lotrs_param
*lotrsparam_p
);
199 void mcc_calcul_ibranch(elp_lotrs_param
*lotrsparam_n
,elp_lotrs_param
*lotrsparam_p
);
200 void mcc_calcul_ibranch_spice(elp_lotrs_param
*lotrsparam_n
,elp_lotrs_param
*lotrsparam_p
, double *tabin
, double *tabip
);
201 void mcc_calcul_ibranch_mcc( elp_lotrs_param
*lotrsparam_n
, elp_lotrs_param
*lotrsparam_p
, double *tabin
, double *tabip
, int n
, char mode
);
202 char *mcc_check_subckt(char *nmos
, char *pmos
);
203 void mcc_check_techno_with_subckt(elp_lotrs_param
*lotrsparam_n
,elp_lotrs_param
*lotrsparam_p
, char *subcktmodeln
, char *subcktmodelp
);
204 void mcc_update_technoparams (char *modelname
,int type
, double l
, double w
,lotrs_list
*lotrs
,int lotrscase
);
205 void mcc_optim_resetsearch_for_new_pwl();