1 /****************************************************************************/
3 /* Chaine de CAO & VLSI Alliance */
5 /* Produit : TAS Version 5 */
6 /* Fichier : tas600.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) : Payam KIANI */
15 /****************************************************************************/
16 /* les structures et base de donnees de TAS */
17 /****************************************************************************/
24 /* LISTE DES INCLUDE */
31 #include <sys/types.h>
33 #include <sys/resource.h>
36 #define TAS_UNKNOWN_EVENT ((char)'X')
38 /* LISTE DES DEFINE */
53 #define TAS_KEEP_LOFIG ((int) 0x0c1c)
55 #define TAS_TRMODEL_MCCRSAT ((char)'M')
56 #define TAS_TRMODEL_SPICE ((char)'S')
58 #define TAS_MODEL_SCM ((char)'m')
59 #define TAS_MODEL_IV ((char)'i')
65 #define TAS_BLOC_SIZE (long)1024
66 #define TAS_NBEMETMAX (long)20
67 #define TAS_NBRECMAX (long)20
68 #define TAS_NBCONMAX (long)35
69 #define TAS_DELTADELAY (long)25
70 #define TAS_DIFFDELAY (long)30
71 #define TAS_MAXDELAY (long)100
73 /* defines utilises pour des affectations */
74 #define TAS_NOTIME (LONG_MIN ) /* pas de TPxx */
75 #define TAS_NOFRONT (LONG_MIN ) /* pas de front */
76 #define TAS_NORES ((long) 0x00000000 ) /* pas de res */
77 #define TAS_NOS (LONG_MIN ) /* pas de s */
78 #define TAS_NOCAPA ((float) 0x00000000 ) /* pas de c */
79 #define TAS_NOWIDTH ((long) 0x00000000 ) /* pas de w */
80 #define TAS_NOLENGTH ((long) 0x00000000 ) /* pas de l */
81 #define TAS_ELM ((char) 'E' ) /* elmore save */
82 #define TAS_RCN ((char) 'R' ) /* rcn save */
84 /* defines utilises pour des affectations en double */
85 #define TAS_NOFRONT_DBL (DBL_MAX) /* pas de front */
86 /* mots clefs des champs USER des locon */
87 #define TAS_CON_CARAC ((long) 0x20000001 )
88 #define TAS_CON_BYPASSIN ((long) 0x20000002 )
89 #define TAS_CON_BYPASSOUT ((long) 0x20000003 )
90 #define TAS_CON_TAGCONE ((long) 0x20000004 )
91 #define TAS_CON_TAGOUT ((long) 0x20000005 )
92 #define TAS_CON_TAGUSED ((long) 0x20000006 )
93 #define TAS_CON_TAGCAPA ((long) 0x20000007 )
94 #define TAS_CON_BLDUP ((long) 0x20000008 )
95 #define TAS_CON_BLDDOWN ((long) 0x20000009 )
96 #define TAS_CON_MARQUE ((long) 0x2000000a )
97 #define TAS_CON_INCONE ((long) 0x2000000b )
99 /* mots clefs des champs USER des lotrs */
100 #define TAS_BTCONFL ((long) 0x20000010 )
101 #define TAS_UCONFL ((long) 0x20000020 )
102 #define TAS_CAPA_PASS ((long) 0x20000030 )
103 #define TAS_TRANS_TAGCONE ((long) 0x20000040 )
104 #define TAS_TRANS_TAGOUT ((long) 0x20000050 )
105 #define TAS_TRANS_TAGCAPA ((long) 0x20000060 )
106 #define TAS_TRANS_TAGUSED ((long) 0x20000070 )
107 #define TAS_TRANS_USED ((long) 0x20000080 )
108 #define TAS_CAPA_USED ((long) 0x20000090 )
109 #define TAS_TRANS_PARA ((long) 0x200000a0 )
110 #define TAS_TRANS_BLDUP ((long) 0x200000b0 )
111 #define TAS_TRANS_BLDDOWN ((long) 0x200000c0 )
112 #define TAS_TRANS_INOUT ((long) 0x200000d0 )
113 #define TAS_TRANS_SWITCH ((long) 0x200000e0 )
114 #define TAS_TRANS_LINK ((long) 0x200000f0 )
115 #define TAS_MARK_LOTRS_CAPAI ((long) 0x200000f1 )
117 /* mots clefs des champs USER des losig */
118 #define TAS_ONACTIVEPATH ((long) 20060321)
119 #define TAS_SIGNAL_LEVEL ((long) 20060324)
120 #define TAS_SIG_VOLTAGE ((long) 20061121)
122 /* mots clefs des champs USER des cones */
123 #define TAS_SLOPE_MIN ((long) 0x20000100 )
124 #define TAS_SLOPE_MAX ((long) 0x20000200 )
125 #define TAS_INCONE ((long) 0x20000300 )
126 #define TAS_IN_BACK ((long) 0x20000400 )
127 #define TAS_SIG_CONE ((long) 0x20000500 )
128 #define TAS_RC_CONE ((long) 0x20000600 )
129 #define TAS_RC_MAXHH ((long) 0x20000700 )
130 #define TAS_RC_MAXLL ((long) 0x20000800 )
131 #define TAS_RC_MINHH ((long) 0x20000900 )
132 #define TAS_RC_MINLL ((long) 0x20000a00 )
133 #define TAS_RC_INDEX ((long) 0x20000b00 )
134 #define TAS_CONE_NAME ((long) 0x20000c00 )
135 #define TAS_CONE_BASENAME ((long) 0x20000d00 )
136 #define TAS_CONE_MARQUE ((long) 0x20000e00 )
137 #define TAS_DELAY_UP_MAX ((long) 0x20000f00 )
138 #define TAS_DELAY_DOWN_MAX ((long) 0x20001000 )
139 #define TAS_DELAY_UP_MIN ((long) 0x20001100 )
140 #define TAS_DELAY_DOWN_MIN ((long) 0x20001200 )
141 #define TAS_OUT_CARAC_MIN ((long) 0x20001400 )
142 #define TAS_OUT_CARAC_MAX ((long) 0x20001500 )
143 #define TAS_DISABLE_GATE_DELAY 0x20001501
144 #define TAS_VDD_NOTDEG 0x20001502
145 #define TAS_LEAKAGE 0x20001503
147 /* mots clefs des champs USER des cnsfigs */
148 #define TAS_ALL_DISABLE_GATE_DELAY 0x20001501
150 /* defines utilises pour masquage pour link */
151 #define TAS_INCONE_NINOUT ((long) 0x10000000 )
153 /* mots clefs des champs USER des incone */
154 #define TAS_DELAY_MIN ((long) 0x20001000 )
155 #define TAS_DELAY_MAX ((long) 0x20002000 )
156 #define TAS_IN_CONESYM ((long) 0x20003000 )
157 #define TAS_RC_LOCON ((long) 0x20004000 )
158 #define TAS_SIG_INCONE ((long) 0x20005000 )
159 #define TAS_DELAY_MINT ((long) 0x20006000 )
160 #define TAS_DELAY_MAXT ((long) 0x20007000 )
161 #define TAS_IN_RCIN ((long) 0x20008000 )
162 #define TAS_INCONE_NAME ((long) 0x20009000 )
164 /* mots clefs des champs USER des branch */
165 #define TAS_RESIST ((long) 0x20010000 )
167 /* defines utilises pour masquage pour link */
168 #define TAS_LINK_BL ((long) 0x10000000 )
169 #define TAS_LINK_INOUT ((long) 0x20000000 )
171 /* mots clefs des champs USER des link */
172 #define TAS_LINK_CARAC ((long) 0x20100000 )
173 #define TAS_LINK_BLDUP ((long) 0x20200000 )
174 #define TAS_LINK_BLDDOWN ((long) 0x20300000 )
175 //#define TAS_LINK_DELAYRC ((long) 0x20400000 )
176 //#define TAS_LINK_RESISRC ((long) 0x20500000 )
177 #define TAS_LINK_CAPA ((long) 0x20600000 )
178 #define TAS_LINK_VPOL ((long) 0x20700000 )
179 #define TAS_LINK_UNUSED_SWITCH_COMMAND ((long) 0x20800000 )
181 /* marquage des branches contenant des switch */
182 #define TAS_SWITCH ((long) 0x10000000 ) /* part of switch */
183 #define TAS_SWITCH_DEG ((long) 0x40000000 ) /* switch degraded */
185 /* marquage des branches et des incone */
186 #define TAS_PATH_INOUT ((long) 0x01000000 ) /* branches INOUT */
187 #define TAS_EXT_IN ((long) 0x02000000 )
188 #define TAS_EXT_OUT ((long) 0x04000000 )
189 #define TAS_IN_MEMSYM ((long) 0x08000000 )
190 #define TAS_IN_NOTMEMSYM ((long) 0x00100000 )
191 #define TAS_NORC_INCONE ((long) 0x00200000 )
192 #define TAS_RCUU_INCONE ((long) 0x00400000 )
193 #define TAS_RCDD_INCONE ((long) 0x00800000 )
194 #define TAS_NORCT_INCONE ((long) 0x80000000 )
195 #define TAS_INCONE_MASK ((long) 0x000FFFFF ) /* initialisation du type*/
197 /* defines utilises pour masquage pour cones */
198 #define TAS_MARQUE ((long) 0x10000000 )
199 #define TAS_DEJAEMPILE ((long) 0x20000000 )
200 #define TAS_NOPRECH ((long) 0x40000000 ) /* noeud connecteur */
201 #define TAS_CONE_CONNECT ((long) 0x80000000 ) /* pour typer un cone con*/
202 #define TAS_LCOMMAND ((long) 0x01000000 )
203 #define TAS_PRECHARGE ((long) 0x02000000 ) /* noeud precharge */
204 #define TAS_INTER ((long) 0x04000000 ) /* noeud precharge */
205 #define TAS_BREAK ((long) 0x08000000 ) /* noeud precharge */
206 #define TAS_BYPASSOUT ((long) 0x00100000 ) /* cone non-important OUT*/
207 #define TAS_BYPASSIN ((long) 0x00200000 ) /* cone non-important IN */
208 #define TAS_CONE_INV ((long) 0x00400000 ) /* cone inverseur */
209 #define TAS_CONE_BUF ((long) 0x00800000 ) /* cone buffer */
210 #define TAS_RLCOMMAND ((long) 0x00010000 )
211 #define TAS_ECONE ((long) 0x00020000 )
212 #define TAS_NORISING ((long) 0x00040000 )
213 #define TAS_NOFALLING ((long) 0x00080000 )
214 #define TAS_CONE_MASK ((long) 0x0000FFFF ) /* initialisation du type*/
216 /* defines utilises pour figure hierarchique */
218 #define TAS_ALIM ((char) 'A') /* signal alimentation */
220 /* mots clefs des champs USER de la figure hierarchique */
222 #define TAS_SIG_LOCON ((long) 0x40000001 ) /* signal => connecteur */
223 #define TAS_LOCON_SIG ((long) 0x40000002 ) /* connecteur => signal */
224 #define TAS_SIG_NEWSIG ((long) 0x40000003 ) /* signal <=> signal */
225 #define TAS_LOCON_NSIG ((long) 0x40000004 ) /* connecteur => signal */
226 #define TAS_DELAY_NNRC ((long) 0x40000005 ) /* delay rc entre NN */
227 #define TAS_LOSIG_BUF ((long) 0x40000006 ) /* info du .inf */
228 #define TAS_SIG_BYPASSIN ((long) 0x40000007 ) /* info du .inf */
229 #define TAS_SIG_BYPASSOUT ((long) 0x40000008 ) /* info du .inf */
230 #define TAS_SIG_INTER ((long) 0x40000009 ) /* info du .inf */
231 #define TAS_SIG_ELM ((long) 0x4000000a ) /* info du .inf */
232 #define TAS_SIG_RCN ((long) 0x4000000b ) /* info du .inf */
233 #define TAS_SIG_RC ((long) 0x4000000d ) /* info du .inf */
234 #define TAS_SIG_NORC ((long) 0x4000000e ) /* info du .inf */
235 #define TAS_SIG_NORCDELAY ((long) 0x4000000f ) /* info du .inf */
236 #define TAS_LOFIGCHAIN ((long) 0x40000010 ) /* info du .inf */
237 #define TAS_SIG_LOSIG ((long) 0x40000011 ) /* info du .inf */
238 #define TAS_SIG_DRV ((long) 0x40000012 ) /* info du .inf */
239 #define TAS_SIG_VDD ((long) 0x40000013 ) /* info du .inf */
240 #define TAS_SIG_VSS ((long) 0x40000014 ) /* info du .inf */
241 #define TAS_SIG_ALIM ((long) 0x40000015 ) /* info du .inf */
242 #define TAS_SIG_NAME ((long) 0x40000016 ) /* info du .inf */
243 #define TAS_SIG_INDEX ((long) 0x40000017 ) /* info du .inf */
244 #define TAS_SIG_TERMINAL ((long) 0x40000019 ) /* info du .inf */
245 #define TAS_SIG_INITIAL ((long) 0x40000020 ) /* info du .inf */
246 #define TAS_SIG_MAXELM ((long) 0x40000021 ) /* info du .inf */
247 #define TAS_SIG_MINELM ((long) 0x40000023 ) /* info du .inf */
248 #define TAS_LOCON_NAME ((long) 0x40000024 ) /* info du .inf */
249 #define TAS_SIG_BREAK ((long) 0x40000025 ) /* info du .inf */
250 #define TAS_SIG_SET ((long) 0x40000026 ) /* info du .inf */
251 #define TAS_SIG_LOCONEXT ((long) 0x40000027 ) /* info du .inf */
252 #define TAS_SIG_BEG ((long) 0x40000028 ) /* 1er sig du .inf */
253 #define TAS_SIG_END ((long) 0x40000029 ) /* dernier sig du .inf */
254 #define TAS_SIG_HZ ((long) 0x4000002a ) /* signal pouvant etre HZ */
255 #define TAS_CONE_NUMBER ((long) 0x4000002b ) /* numerotation des cone */
256 #define TAS_SIG_NOD ((long) 0x4000002c ) /* info du .inf */
257 #define TAS_SIG_INTERFACE ((long) 0x4000002d ) /* info du .inf */
258 #define TAS_MODEL_HTAB ((long) 0x4000002e ) /* table de hash pour tmodel */
259 #define TAS_SIG_CAPA ((long) 0x4000002f ) /* capacite d'un signal */
260 #define TAS_SIG_TYPE ((long) 0x40000030 ) /* type d'un signal */
261 #define TAS_LOCON_INLIST ((long) 0x40000031 ) /* list des entree d'un locon*/
262 #define TAS_LOCON_OUTCONE ((long) 0x40000032 ) /* list des entree d'un locon*/
263 #define TAS_SIG_ONLYEND ((long) 0x40000033 ) /* list des entree d'un locon*/
264 #define TAS_FIG_LOSIGRCX ((long) 0x40000034 ) /* list des entree d'un locon*/
265 #define TAG_CONE_OUTPUT_CAPACITANCE ((long) 0x40000035 ) // TAS_CAPAOUT/connecteur
266 #define TAS_SIG_FORCERCDELAY ((long) 0x400000036 ) /* info du .inf */
268 #define TAS_CASE ((int)(mcc_use_multicorner() == 0 ) ? elpTYPICAL : (TAS_PATH_TYPE == 'm') ? elpBEST : elpWORST)
298 #define TP_DELTAVT0 28
315 /* les pseudo-fonctions */
316 #define TAS_GETCLINK(link) ((caraclink_list *)getptype(link->USER, \
317 TAS_LINK_CARAC)->DATA)
318 #define TAS_GETWIDTH(link) ((long)((caraclink_list *)getptype(link->USER, \
319 TAS_LINK_CARAC)->DATA)->WIDTH)
320 #define TAS_GETLENGTH(link) ((long)((caraclink_list *)getptype(link->USER, \
321 TAS_LINK_CARAC)->DATA)->LENGTH)
322 #define TAS_GETCAPARA(link) (((TAS_PATH_TYPE == 'M')||V_INT_TAB[__TAS_CAPARA_DEPTH].VALUE) ? \
323 ((double)((caraclink_list *)getptype(link->USER, \
324 TAS_LINK_CARAC)->DATA)->CRAM) : (double)0)
325 #define TAS_GETCAPAEQ(link) ((double)((caraclink_list *)getptype(link->USER, \
326 TAS_LINK_CARAC)->DATA)->CEQUI)
327 #define TAS_F1(a,b,r) ((double)((a)*sqrt( (b)/((b)+((r)*(a))) )))
328 #define TAS_F2(a,b,r) ((double)sqrt( (b)*((b)+((r)*(a))) ))
329 #define TAS_F3(a,b,i) ((double) ((((i)*(b))+sqrt((i)*(b)*(i)*(b)+(4*(a)*(i)))) / (2*(a))) )
330 #define TAS_F4(u,vdd,fin) ((double)((fin)*(u)/(vdd)))
331 #define TAS_F5(yp,yn,qp,qn) ((double)(sqrt(((yp)*(qp))/((yn)*(qn)))))
332 #define TAS_F6(u,b) ((double)(0.5*(((1.0+(b))*(log(1.0+(u)))/(1.0-(b)))\
333 -log(1-(u))-2*(log(1+(b)*(u)))/((b)-(b)*(b)))))
334 #define TAS_TGH(x) ((double)((exp(x)-exp((-(x))))/(exp(x)+exp((-(x))))))
335 #define TAS_GETCAPA(losig) ((double)(getcapa(losig) * (float)1000.0))
339 float SLOPE
; /* threshold for measure. */
340 float VTH
; /* voltage threshold for measure. */
342 float VT
; /* slope parameter for tanh model. */
346 float VSAT
; /* slope parameter for the end of the */
347 float RLIN
; /* transition. */
350 double SLOPE
; /* threshold for measure. */
351 double VTH
; /* voltage threshold for measure. */
353 double VT
; /* slope parameter for tanh model. */
357 double VSAT
; /* slope parameter for the end of the */
358 double RLIN
; /* transition. */
363 } output_carac_trans
;
366 output_carac_trans UP
;
367 output_carac_trans DW
;
370 /* STRUCTURES DE TAS */
414 stm_pwl
*PWLUP
, *PWLDN
;
415 tas_driver DRIVERUP
, DRIVERDN
;
419 typedef struct caraccon
421 long RUPMAX
,RDOWNMAX
;
422 long RUPMIN
,RDOWNMIN
;
431 typedef struct caraclink
441 typedef struct caracnode
448 typedef struct tpiv
{
449 stm_solver_maillon_list
*HEAD
;
450 chain_list
*HEADTRSSPICE
;
451 chain_list
*HEADTRSMCC
;
454 typedef struct tpiv_i
{
455 stm_solver_maillon_list
*HEAD
;
456 stm_solver_maillon_list
*ACTIVE
;
462 typedef struct leakage
{
469 typedef struct information
/* informations relatives au circuit */
471 long lo_t
; /* temps du chargement de le netlist logique */
472 long db_t
; /* temps du desassemblage */
473 long el_t
; /* temps du calcul des temps elementaires */
474 long gr_t
; /* temps du parcours de graphe */
475 long pr_t
; /* temps de generation du perfmodule */
476 long nb_trans
; /* nombre de transistors */
477 long nb_cone
; /* nombre de cones */
478 long comp
; /* complexite du circuit */
479 long maxdelay
; /* delai max du bloc */
480 long mindelay
; /* delai min du bloc */
481 short argc
; /* nombre d'arguments de la ligne de commande*/
482 char **argv
; /* arguments de la ligne de commande */
486 typedef struct tas_context
488 struct tas_context
*NEXT
;
489 double TAS_CAPARAPREC
;
490 double TAS_CAPASWITCH
;
497 double TAS_LIMITMEM
;
499 char TAS_DEBUG_MODE
;
502 float TAS_CURVE_START
;
503 float TAS_CURVE_END
;
504 char TAS_DELAY_PROP
;
505 char TAS_DELAY_SWITCH
;
507 char TAS_SHORT_MODELNAME
;
513 char TAS_NB_VERSION
[80] ;
514 char TAS_DATE_VER
[80] ;
524 char TAS_CNS_ANNOTATE_LOFIG
;
525 char TAS_TREATPRECH
;
526 char TAS_SILENTMODE
;
531 char TAS_SUPSTMMODEL
;
536 char TAS_CHECKRCDELAY
;
538 char TAS_CARAC_MEMORY
;
540 char TAS_PRES_CON_DIR
;
542 char *TAS_TRANSINSNAME
;
543 char TAS_SAVE_BEFIG
;
544 befig_list
*TAS_BEFIG
;
545 lofig_list
*TAS_HIERLOFIG
;
546 lofig_list
*TAS_LOFIG
;
547 cnsfig_list
*TAS_CNSFIG
;
552 char TAS_CHECK_PROP
;
554 double FRONT_NOT_SHRINKED
;
556 list_list
*INF_SIGLIST
;
562 chain_list
*slopes
, *capas
;
565 } tas_spice_charac_struct
;
567 /* declaration de variable */
569 extern tas_context_list
*TAS_CONTEXT
;
570 extern info_list TAS_INFO
;
572 extern chain_list
*DETAILED_MODELS
;
573 extern int TAS_PVT_COUNT
;
576 /* declaration de fonction */
578 extern void tas_initcnsfigalloc
__P(( cnsfig_list
* ));
579 extern void tas_freecnsfigalloc
__P(( cnsfig_list
* ));
580 extern void tas_freecnsfig
__P(( cnsfig_list
* ));
581 extern void tas_freelofig
__P(( lofig_list
* ));
582 extern int tas_timing
__P(( cnsfig_list
*, lofig_list
*,
585 extern int tas_drislo
__P(( cnsfig_list
*, ttvfig_list
* ));
586 extern int tas_error
__P(( short, char*, long ));
587 extern ttvfig_list
* tas_cns2ttv
__P(( cnsfig_list
*, ttvfig_list
*,
590 extern double tas_getparam
__P(( lotrs_list
*, int, int)) ;
591 extern int tas_capara
__P(( cnsfig_list
* ));
592 extern int tas_DetectConeConnect
__P(( cnsfig_list
* ));
593 extern long tas_prelink
__P(( cnsfig_list
* ));
594 extern int tas_para
__P(( cone_list
* ));
595 extern int tas_switch_cmos
__P(( cone_list
* ));
596 extern void tas_AddCapaOut
__P(( cnsfig_list
* ));
597 extern void tas_AddCapaDiff
__P(( lofig_list
* ));
598 extern int tas_StuckAt
__P(( cnsfig_list
* ));
599 extern list_list
* tas_GetAliasSig
__P(( lofig_list
*, list_list
* ));
600 extern int tas_DifLatch
__P(( cnsfig_list
* ));
601 extern int tas_TechnoParameters
__P(( void ));
602 extern int tas_tpd
__P(( cone_list
* ));
603 extern int tas_PwlFile
__P(( void ));
604 extern int tas_setenv
__P(( void ));
605 extern void tas_restore
__P(( void ));
606 extern void tas_yaginit
__P(( void ));
607 extern int tas_option
__P(( int, char**, char ));
608 extern int tas_CloseTerm
__P(( void ));
609 extern int tas_RestoreTerm
__P(( void ));
610 extern void tas_GetKill
__P(( int ));
611 extern info_list tas_InitInfo
__P(( struct information
));
612 extern int tas_PrintTime
__P(( struct rusage
,
616 extern void tas_visu
__P(( void ));
617 extern void tas_init
__P(( void )) ;
618 extern ttvfig_list
* tas_main
__P(( void )) ;
619 extern ttvfig_list
* tas_core
__P(( int keeplofig
)) ;
620 extern double* tas_DynamicSlopes
__P((long, int));
621 extern double* tas_DynamicCapas
__P((double, int));
622 extern void tas_handler_core
__P(( void ));
623 extern float tas_gettotalcapa (lofig_list
*lofig
, losig_list
*losig
, int type
);
625 // pour les API et surtout ttv_API
626 extern void tas_simu_set_progression ( void (*callfn
)( void*, char*, int ) );
628 extern double tas_get_input_slope ( ttvcritic_list
* );
630 extern int tas_simu_netlist ( ttvfig_list
*, lofig_list
* ,
638 tas_spice_charac_struct
*tscs
,
642 // pour les API et surtout ttv_API
643 extern ttvfig_list
*tas_builtfig(lofig_list
*lofig
);
644 extern void tas_loconorient (lofig_list
*lofig
, ttvfig_list
*ttvfig
);
645 extern void tas_setsigname (lofig_list
*lofig
);
646 extern void tas_builtrcxview (lofig_list
*lofig
, ttvfig_list
*ttvfig
);
647 extern void tas_detecloconsig (lofig_list
*lofig
, ttvfig_list
*ttvfig
);
648 extern void tas_builtline (ttvfig_list
*ttvfig
, long type
);
649 extern void tas_cleanfig (lofig_list
*lofig
, ttvfig_list
*ttvfig
);
650 extern int tas_deleteflatemptyfig (ttvfig_list
*ttvfig
, long type
, char flat
);
651 extern void tas_detectloop (ttvfig_list
*ttvfig
, long type
);
652 extern void tas_calcfigdelay (ttvfig_list
*ttvfig
, lofig_list
*lofig
, long type
, long typefile
);
653 extern void tas_calcrcxdelay (lofig_list
*, ttvfig_list
*, long);
654 extern void tas_capasig (lofig_list
*);
655 extern void tas_detectinout (cnsfig_list
*);
656 extern int tas_version ();
657 extern int tas_top_main (int argc
, char *argv
[]);
659 // pour le solveur STM
660 extern timing_iv
* tpiv_dualmodel( cone_list
*cone
, branch_list
*head
, link_list
*active
, float vref
, float pconf0
, float pconf1
, float fin_vi
, float fin_vf
, float fin_vs
, float vouti
);
662 extern char tpiv_calc_i( tpiv_i
*model
, float ve
, float vs
, float *is
);
663 extern tpiv
* tpiv_createbranch( link_list
*head
, char transtype
);
664 extern void tpiv_freebranch( tpiv
*br
);
665 extern tpiv
* tpiv_alloc( void );
666 extern void tpiv_free( tpiv
*s
);
667 extern void tpiv_carac_static( lotrs_list
*lotrs
, float vdd
, float vdsmax
, float vgsmax
, float vb
, float vs
);
668 extern void tas_update_mcctemp (inffig_list
*ifl
);
669 extern float tas_get_current_leakage_2( branch_list
*branch
, link_list
*head
, link_list
*activelink
);
671 int ttv_path_is_activable(ttvfig_list
*tvf
, cnsfig_list
*cf
, ttvpath_list
*tc
, chain_list
*pathlist
, char *divname
, char *convname
);
672 float tas_get_cone_output_capacitance(cone_list
*cone
);
673 ttvfig_list
*hitas_tcl (char *figname
);