Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / val / ttvren.c
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI Alliance */
4 /* */
5 /* Produit : TTVREN Version 1 */
6 /* Fichier : ttvren.c */
7 /* */
8 /* (c) copyright 2002 AVERTEC */
9 /* Tous droits reserves */
10 /* */
11 /* Auteur(s) : Antony PINTO */
12 /* */
13 /****************************************************************************/
14
15 #include "ttvren.h"
16
17
18
19 char *NAMEFIG = NULL ;
20 char *NAMEEXT = NULL ;
21 char NEWNAME[1024];
22 ttvfig_list *TTVFIG;
23 timing_cell *MODELSTM;
24
25
26 /****************************************************************************/
27 /*{{{ ren_printrun() */
28 /* */
29 /* */
30 /****************************************************************************/
31 void ren_printrun(file,tTstart,tTend,Tstart,Tend)
32 FILE *file ;
33 struct rusage Tstart ,
34 Tend ;
35 long tTstart ,
36 tTend ;
37 {
38 double cpu ;
39 double tm ;
40 double ss ;
41 double sl ;
42 double cs ;
43 double cl ;
44 long trun ;
45 long tuse ;
46 long user ;
47 long userms ;
48 long userM ;
49 long userS ;
50 long userD ;
51 long syst ;
52 long systms ;
53 long systM ;
54 long systS ;
55 long systD ;
56
57 cl = ttv_getlinecachesize() ;
58 cs = ttv_getsigcachesize() ;
59
60 sl = ttv_getlinememorysize() ;
61 ss = ttv_getsigmemorysize() ;
62
63 tm = (double)(Tend.ru_maxrss * getpagesize()) / (1024.0 * 1024.0) ;
64 trun = 10L * (tTend-tTstart);
65 if(trun == 0L) trun=10L;
66 tuse = (long)(((10L*Tend.ru_utime.tv_sec)+(Tend.ru_utime.tv_usec/100000L))
67 -((10L*Tstart.ru_utime.tv_sec)+(Tstart.ru_utime.tv_usec/100000L))
68 +((10L*Tend.ru_stime.tv_sec)+(Tend.ru_stime.tv_usec/100000L))
69 -((10L*Tstart.ru_stime.tv_sec)+(Tstart.ru_stime.tv_usec/100000L)));
70 cpu = 100.0 * ((double)tuse/trun);
71 if(cpu > 100.0) cpu = 100.0 ;
72
73 user = (long)(((10L*Tend.ru_utime.tv_sec)+(Tend.ru_utime.tv_usec/100000L))
74 - ((10L*Tstart.ru_utime.tv_sec)+(Tstart.ru_utime.tv_usec/100000L))) ;
75 syst = (long)(((10L*Tend.ru_stime.tv_sec)+(Tend.ru_stime.tv_usec/100000L))
76 - ((10L*Tstart.ru_stime.tv_sec)+(Tstart.ru_stime.tv_usec/100000L))) ;
77 userms = (long)(((1000000L*Tend.ru_utime.tv_sec)+(Tend.ru_utime.tv_usec))
78 - ((1000000L*Tstart.ru_utime.tv_sec)+(Tstart.ru_utime.tv_usec))) ;
79 systms = (long)(((1000000L*Tend.ru_stime.tv_sec)+(Tend.ru_stime.tv_usec))
80 - ((1000000L*Tstart.ru_stime.tv_sec)+(Tstart.ru_stime.tv_usec))) ;
81 userM = (long)((user/10L)/60L) ;
82 userS = (long)((user/10L)%60L) ;
83 userD = (long)(user%10L) ;
84 systM = (long)((syst/10L)/60L) ;
85 systS = (long)((syst/10L)%60L) ;
86 systD = (long)(syst%10L) ;
87 fprintf(file,"\n---------------------------------------------------------\n") ;
88 fprintf(file,"signal cache size in megabyte : %.2f MB\n",cs) ;
89 fprintf(file,"path cache size in megabyte : %.2f MB\n",cl) ;
90 fprintf(file,"signal size in megabyte : %.2f MB\n",ss) ;
91 fprintf(file,"path size in megabyte : %.2f MB\n",sl) ;
92 fprintf(file,"total run time : %02ldmin %02lds\n",
93 (long)((tTend-tTstart)/60L),(long)((tTend-tTstart)%60L)) ;
94 fprintf(file,"time user : %02ld'%02ld.%ld''\n",userM,userS,userD) ;
95 fprintf(file,"time system : %02ld'%02ld.%ld''\n",systM,systS,systD) ;
96 fprintf(file,"time user in ms : %.2f\n",(double)userms/(double)1000.0) ;
97 fprintf(file,"time system in ms : %.2f\n",(double)systms/(double)1000.0) ;
98 fprintf(file,"total memory : %.2f MB\n",tm) ;
99 fprintf(file,"cpu ratio : %.2f%% CPU\n",cpu) ;
100 fprintf(file,"\n---------------------------------------------------------\n") ;
101 }
102
103 /*}}}************************************************************************/
104 /*{{{ */
105 /* */
106 /* */
107 /****************************************************************************/
108 static void printarg(FILE *file, char *opt, char *def, int mode)
109 {
110 switch (mode)
111 {
112 case 0 :
113 fprintf(file," %s",opt);
114 break;
115 case 1 :
116 fprintf(file,"%20s : %s\n",opt,def);
117 break;
118 case 2 :
119 fprintf(file,"%20s : %s\n"," ",def);
120 break;
121 }
122 }
123
124 /*}}}************************************************************************/
125 /*{{{ ren_printhelp() */
126 /* */
127 /* */
128 /****************************************************************************/
129 void ren_printhelp(int mode)
130 {
131 if (!mode)
132 fprintf(stdout,"\nUsage : ttvren");
133 else
134 fprintf(stdout,"\n");
135
136 printarg(stdout,"-ttx" ,"rename ttx file" ,mode);
137 printarg(stdout,"-dtx" ,"rename dtx file" ,mode);
138 printarg(stdout,"-ext=<extension>","extension added to the filename",mode);
139 printarg(stdout,"-l" ,"do a top level renaming" ,mode);
140 printarg(stdout,"-h" ,"print this page" ,mode);
141 printarg(stdout,"filename" ,"without extension" ,mode);
142 fprintf(stdout,"\n");
143 }
144
145 /*}}}************************************************************************/
146 /*{{{ retkeyegal() */
147 /* */
148 /* */
149 /****************************************************************************/
150 short retkeyegal(chaine)
151 char *chaine ;
152 {
153 size_t i ;
154
155 for(i = 0 ; (i<strlen(chaine)) && (chaine[i] != '=') ; i ++)
156 ;
157
158 return((i == strlen(chaine)) ? -1 : (short)i) ;
159 }
160
161 /*}}}************************************************************************/
162 /*{{{ retkeypercent() */
163 /* */
164 /* */
165 /****************************************************************************/
166 short retkeypercent(chaine)
167 char *chaine ;
168 {
169 size_t i ;
170
171 for(i = 0 ; (i<strlen(chaine)) && (chaine[i] != '%') ; i ++)
172 ;
173
174 return((i == strlen(chaine)) ? -1 : (short)i) ;
175 }
176
177 /*}}}************************************************************************/
178 /*{{{ ren_error() */
179 /* */
180 /* */
181 /****************************************************************************/
182 void ren_error()
183 {
184 ren_printhelp(0);
185 EXIT(1) ;
186 }
187
188 /*}}}************************************************************************/
189 /*{{{ ren_getopt() */
190 /* parametres : */
191 /* */
192 /* renvoie le masque correspondant aux options */
193 /****************************************************************************/
194 long ren_getopt(argc,argv)
195 int argc;
196 char *argv[];
197 {
198 int i ;
199 short eq ;
200 long maskopt = 0;
201
202 for(i = 1 ; i != argc ; i++)
203 {
204 if(argv[i][0] != '-')
205 NAMEFIG = namealloc(argv[i]) ;
206 /* test si l'on a un = */
207 else if((eq=retkeyegal(argv[i])) != -1)
208 {
209 argv[i][eq]='\0';
210 if (strcmp(argv[i],"-ext") == 0)
211 {
212 NAMEEXT = namealloc((char *)(argv[i]+eq+1));
213 maskopt |= REN_OPT_EXT ;
214 }
215 else
216 ren_error() ;
217 }
218 else
219 {
220 if(strcmp(argv[i],"-dtx") == 0)
221 maskopt |= REN_OPT_DTX ;
222 else if(strcmp(argv[i],"-silent") == 0)
223 maskopt |= REN_OPT_SILENT ;
224 else if(strcmp(argv[i],"-ttx") == 0)
225 maskopt |= REN_OPT_TTX ;
226 else if(strcmp(argv[i],"-l") == 0)
227 maskopt |= REN_OPT_HIER ;
228 else if(strcmp(argv[i],"-h") == 0)
229 maskopt |= REN_OPT_HELP ;
230 else if(strcmp(argv[i],"-stm") == 0)
231 maskopt |= REN_OPT_STM ;
232 else
233 ren_error() ;
234 }
235 }
236 if (! (maskopt&REN_OPT_EXT))
237 ren_error();
238 return maskopt;
239 }
240
241 /*}}}************************************************************************/
242 /*{{{ main() */
243 /* */
244 /* */
245 /****************************************************************************/
246 int main(argc,argv)
247 int argc;
248 char *argv[];
249 {
250 struct rusage tstart, tend, Tstart, Tend;
251 long ttstart, ttend, tTstart, tTend;
252 FILE *file;
253 long maskopt, filetype;
254
255 #ifdef AVERTEC
256 avtenv() ;
257 #endif
258
259 mbkenv() ;
260
261
262 #ifdef AVERTEC_LICENSE
263 if (avt_givetoken("HITAS_LICENSE_SERVER","ttvren") != AVT_VALID_TOKEN)
264 EXIT(1) ;
265 #endif
266
267
268 if (((maskopt = ren_getopt(argc,argv))&REN_OPT_HELP)==REN_OPT_HELP)
269 {
270 ren_printhelp(1);
271 EXIT(0);
272 }
273
274 if ((maskopt & REN_OPT_SILENT)==0)
275 {
276 avt_banner("TtvRen","timing file rename","2002");
277 }
278
279 if ((maskopt&REN_OPT_DTXTTX)==0)
280 maskopt|= REN_OPT_DTXTTX;
281 if (NAMEFIG == NULL)
282 ren_error() ;
283
284 filetype = 0;
285
286 if ((maskopt&REN_OPT_DTXTTX) == REN_OPT_DTX)
287 filetype = TTV_FILE_DTX;
288 if ((maskopt&REN_OPT_DTXTTX) == REN_OPT_TTX)
289 filetype = TTV_FILE_TTX;
290 if ((TTVFIG = ttv_getttvfig(NAMEFIG,filetype)) == NULL)
291 ren_error() ;
292
293 // if ((maskopt&REN_OPT_STM)==REN_OPT_STM)
294 // if (!(MODELSTM = stm_getcell(NAMEFIG)))
295 // ren_error();
296
297 strcat(NEWNAME,"_");
298 strcat(NEWNAME,NAMEEXT);
299
300 file = stdout;
301
302 getrusage(RUSAGE_SELF,&Tstart) ;
303 time(&tTstart) ;
304
305 getrusage(RUSAGE_SELF,&tstart) ;
306 time(&ttstart) ;
307
308 #ifdef AVERTEC_LICENSE
309 if (avt_givetoken("HITAS_LICENSE_SERVER","ttvren") != AVT_VALID_TOKEN)
310 EXIT(1) ;
311 #endif
312 ren_ttvfigren(maskopt) ;
313 // if ((maskopt&REN_OPT_STM)==REN_OPT_STM) ren_stmren(maskopt);
314
315 getrusage(RUSAGE_SELF,&Tend) ;
316 time(&tTend) ;
317
318 getrusage(RUSAGE_SELF,&tend) ;
319 time(&ttend) ;
320
321 if ((maskopt & REN_OPT_SILENT)==0)
322 {
323 ren_printrun(file,ttstart,ttend,tstart,tend) ;
324 ren_printrun(file,tTstart,tTend,Tstart,Tend) ;
325 }
326 fprintf(file,"\nend\n") ;
327
328 ttv_freeallttvfig(TTVFIG) ;
329 if ((maskopt&REN_OPT_STM)==REN_OPT_STM)
330 stm_freecell(NAMEFIG);
331
332 EXIT(0) ;
333 return 0;
334 }
335
336 /*}}}************************************************************************/