Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / mcc / mcc_genspi.h
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI Alliance */
4 /* */
5 /* Produit : MCC Version 1 */
6 /* Fichier : mcc_genspi.h */
7 /* */
8 /* (c) copyright 1991-1998 Laboratoire LIP6 equipe ASIM */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
11 /* */
12 /* Auteur(s) : Karim DIOURY */
13 /* */
14 /****************************************************************************/
15
16 #include "mcc.h"
17
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 ;
38
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 ;
48
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;
52
53 #include MCC_H
54
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,
57 double,
58 int
59 )) ;
60 extern double mcc_calcul_ures __P((double,
61 double,
62 int
63 )) ;
64 extern double mcc_calcul_ires __P((double,
65 double,
66 int
67 )) ;
68 extern double mcc_current __P((double,
69 double,
70 double,
71 int
72 )) ;
73 extern double mcc_spicecurrent __P((double,
74 double,
75 double,
76 int,
77 elp_lotrs_param*
78 )) ;
79 extern double mcc_spicecalccurrent __P((double,
80 double,
81 double,
82 int,
83 elp_lotrs_param*
84 )) ;
85 extern double mcc_spicesimcurrent __P((double,
86 double,
87 double,
88 int
89 )) ;
90 extern double mcc_spicevdeg __P((
91 int,
92 elp_lotrs_param*
93 )) ;
94
95 extern double mcc_calcdiffmodelsat __P((double,
96 double,
97 int,
98 elp_lotrs_param*,
99 double,
100 mcc_corner_info*
101 )) ;
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,
104 double,
105 double,
106 double,
107 double,
108 double,
109 double
110 )) ;
111 extern double mcc_calcul_b __P((double,
112 double,
113 double,
114 double,
115 double,
116 double,
117 double
118 )) ;
119 extern double mcc_calcul_r __P((double,
120 double,
121 double,
122 double
123 )) ;
124 extern double mcc_calcul_rs __P((double,
125 double,
126 double,
127 double,
128 double,
129 double
130 )) ;
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,
136 double**,
137 int,
138 int,
139 elp_lotrs_param*,
140 elp_lotrs_param*
141 )) ;
142 extern void mcc_prsspifile __P((int,
143 int,
144 int,
145 double **
146 )) ;
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 *,
154 char *,
155 elp_lotrs_param *,
156 elp_lotrs_param *
157 )) ;
158 extern void mcc_genspi __P((
159 int,
160 elp_lotrs_param *,
161 elp_lotrs_param *
162 )) ;
163 extern void mcc_calcspicedelay __P((char *,
164 chain_list *,
165 double,
166 double,
167 double,
168 double,
169 double **
170 )) ;
171 extern void mcc_genparam __P((char *,
172 int,
173 double,
174 double,
175 double,
176 lotrs_list*,
177 int,
178 elp_lotrs_param*
179 )) ;
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
185 );
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();
206