Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / trc / trc_delay.h
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI Alliance */
4 /* */
5 /* Produit : TRC */
6 /* Fichier : trc_delay.h */
7 /* */
8 /* (c) copyright 1997-1998 Laboratoire LIP6 equipe ASIM */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
11 /* */
12 /* Auteur(s) : Gregoire AVOT */
13 /* */
14 /****************************************************************************/
15
16
17 typedef struct {
18 RCXFLOAT extcapa ;
19 rcx_slope *slope ;
20 char type ;
21 RCXFLOAT coefctc ;
22 ht *htyi ;
23 }
24 dataforload ;
25
26 typedef struct {
27 double Y1, Y2, Y3 ;
28 }
29 yiload ;
30
31 #define RCX_AGREINDEX_CHK 0x52435805
32
33 #define RCX_DELAYCACHE 0x52435821
34 #define RCX_MODEL_LOAD 0x01
35 #define RCX_MODEL_AWE 0x02
36
37 typedef struct rcx_cache_load {
38 struct rcx_cache_load *NEXT ;
39 int PIN ;
40 float EXTCAPA ;
41 char MODELREQUEST ;
42 float R ;
43 float C1 ;
44 float C2 ;
45 char MODELCOMPUTED ;
46 } rcx_cache_load ;
47
48 extern mbkcache *RCXDELAYCACHE ;
49 extern char RCX_USE_MATRIX_LOAD ;
50
51 /* Fonctions visibles */
52
53 extern char rcx_rcnload( lofig_list*, losig_list*, num_list*, RCXFLOAT*, RCXFLOAT*, RCXFLOAT*, char, RCXFLOAT, rcx_slope*, char);
54 char rcx_rcnload_basic( lofig_list*, rcx_list*, losig_list*, num_list*, RCXFLOAT*, RCXFLOAT*, RCXFLOAT*, char, RCXFLOAT, rcx_slope*, char);
55 extern int rcx_getdelayslope( lofig_list*, locon_list*, locon_list*, rcx_slope*, RCXFLOAT, RCXFLOAT*, RCXFLOAT*, RCXFLOAT*, RCXFLOAT*, mbk_pwl**, mbk_pwl** );
56 extern RCXFLOAT rcx_getdelay( lofig_list*, locon_list*, locon_list*);
57 extern void rcx_rcnload_reset( losig_list* );
58 RCXFLOAT rcx_getsumresi( losig_list* );
59
60 int rcx_iscrosstalk( lofig_list*, losig_list*, char );
61 int rcx_isrcdelay( lofig_list*, losig_list* );
62 void rcx_checkcrosstalk( losig_list* );
63 RCXFLOAT rcx_getcoefctc( lofig_list*, losig_list*, rcx_slope*, char, RCXFLOAT, RCXFLOAT*);
64
65 int rcx_dw_forload( losig_list *losig, lonode_list *lonode, chain_list *chwire, ht *htpack, dataforload *data );
66 int rcx_up_pack_forload( losig_list *losig, lonode_list *lonode, rcx_triangle *tr, void *userdata );
67 int rcx_up_forload( losig_list *losig, lonode_list *lonode, lowire_list *lowire, void *userdata );
68 yiload* rcx_getadmiforload( ht *table, int node );
69 void rcx_setadmiforload( ht *table, int node, double y1, double y2, double y3 );
70 long int rcx_cache_build_ptype( char transition, char type, char iscrosstalk, char model );
71 rcx_cache_load* rcx_get_cache_load( losig_list *losig, int pin, float extcapa, char model, char transition, char type, char iscrosstalk );
72 unsigned long int rcx_add_cache_load( losig_list *ptsig, int pin, float extcapa, char modelrequest, char modelcomputed, char transition, char type, char iscrosstalk, float r, float c1, float c2 );
73 unsigned long int rcx_cache_fn_load( void *null, losig_list *losig );
74 unsigned long int rcx_cache_fn_release( void *null, losig_list *losig );
75 mbkcache* rcx_get_delay_cache( void );
76 void rcx_init_delay_cache( unsigned long int size );
77 char rcx_cache_delay_model( long int ptype );
78 char rcx_cache_delay_crosstalk( long int ptype );
79 char rcx_cache_delay_type( long int ptype );
80 char rcx_cache_delay_transition( long int ptype );
81 void trc_logbuildtype( long int ntype );
82 unsigned long int rcx_cache_release_load( rcx_cache_load *load );
83
84 extern void rcx_disable_delay_cache_for_crosstalk( void );
85 extern void rcx_enable_delay_cache_for_crosstalk( void );
86 extern int rcx_is_delay_cache_for_crosstalk( void );
87 extern void rcx_disable_delay_cache_for_quiet( void );
88 extern void rcx_enable_delay_cache_for_quiet( void );
89 extern int rcx_is_delay_cache_for_quiet( void );
90 void rcx_delay_cache_remove_from_cache( char ctkmode );
91 extern void trcflushdelaycache();
92 void trccheckcachecoherence();
93 extern void rcx_crosstalk_analysis( char mode );
94
95 void delaybetween( lofig_list *lofig, locon_list *start, locon_list *end, int display );
96 extern int alldelayfromlocon( lofig_list *lofig, locon_list *locon, int display );
97 extern void trc_delayforlosig( lofig_list *lofig, losig_list *losig, int display, int level );
98 extern void rcx_forcercdelay(losig_list *losig);
99