Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / trc / trc_rcx.h
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI Alliance */
4 /* */
5 /* Produit : TRC Version 1.01 */
6 /* Fichier : trc_rcx.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 /* Type de LOG */
17 #define RCXLOGINFO 'I'
18 #define RCXLOGWARNING 'W'
19 #define RCXLOGERROR 'E'
20 #define RCXLOGDEBUG 'D'
21
22 extern FILE *RCXFILELOG ;
23
24 // USER des lofig
25
26 #define RCX_HTAGR 0x5243580E
27 // Table de hash pour retrouver la liste des agresseur. rcx_agragrlistfast().
28
29 // USER des losig
30
31 #define RCX_BELLOW 0x52435800
32 // Lorsque ce ptype est présent, ce signal n'existe pas au niveau courant, mais
33 // est défini dans une des instances de la figure courante..
34 // Le nom du signal est la chaîne de caractère dans le champs DATA, sous la
35 // forme NOMINSTANCE.NOMSIGNAL.
36
37 #define RCX_COPIED 0x52435806
38 // Dans la fonction rcxbuild(), indique que ce signal a été traité, et qu'il
39 // est devenu le losig pointé par le champ data.
40
41 #define RCXLOSIGFLAG 0x52435812
42 // Contient des flags. Ce ptype est utilisé dans rcn_coupledinformation, il
43 // correspond donc aux valeurs 0x52435812 et 0x52435813
44
45 #define RCX_NODE_BASE 0x52435814
46 // Contient le décalage à appliquer sur un noeud de signal d'instance.
47
48 // Flag de couplage.
49 #define RCX_NI_LOSIG 0x1
50
51 extern char RCX_FASTMODE;
52 extern char RCX_FREEUNUSEDCTC;
53 extern char RCX_USEREALSLOPE;
54
55 // Arguments where pour la fonction rcx_get_new_num_node()
56 #define RCX_LOINS 'i'
57 #define RCX_LOFIG 'f'
58
59 // Arguments pour la fonction rcx_iscrosstalk
60 #define RCX_TEST_ONE 'o'
61 #define RCX_TEST_LIMIT 'l'
62
63 /* Fonctions externes */
64
65 /* Indique que les crosstalk actifs seront pris en compte. Si cette
66 fonction n'est pas appellée, les capacités de couplage sont prise à leur valeurs
67 nominales (pas d'effet de couplage). Cette fonction ne doit pas être utilisée
68 pendant la construction des vues RCX. */
69 extern int rcx_crosstalkactive( int );
70
71 int rcx_state( rcx_list*, int );
72 extern void rcx_create( lofig_list* );
73
74 /* Construction de la vue RCX d'une lofig */
75 extern void buildrcx( lofig_list* );
76
77 extern chain_list* rcx_getagrlist( lofig_list*, losig_list*, char*, chain_list* );
78 extern void rcx_freeagrlist( lofig_list*, losig_list*, chain_list* );
79 extern RCXFLOAT rcx_getmiller( RCXFLOAT fvic, RCXFLOAT fagr, char type, char model );
80 RCXFLOAT rcx_capamiller( losig_list*, loctc_list*, rcx_slope*, char );
81 void rcx_exit( int );
82 void rcx_setflagcoupled( losig_list *victime, losig_list *agresseur, long flag );
83 int rcx_getflagcoupled( losig_list *victime, losig_list *agresseur, long flag );
84 void rcx_clearflagcoupled ( losig_list *victime, losig_list *agresseur, long flag );
85 int rcx_isnotinfluentagressor( losig_list *victime, losig_list *agresseur );
86 void rcx_setnotinfluentagressor( losig_list *victime, losig_list *agresseur );
87 void rcx_clearnotinfluentagressor( losig_list *victime, losig_list *agresseur );
88 int rcx_iscrosstalkcapa( loctc_list*, losig_list* );
89
90 /* Sélectionne le type de représentation d'un losig */
91 extern int setrcxmodel( lofig_list*, losig_list*, int );
92
93 void rcx_freewire( losig_list* );
94 void rcx_freectc( losig_list* );
95 char* rcx_isbellow( losig_list* );
96 int rcx_isloop( rcx_list*, losig_list* );
97 void rcx_env_error( char*, char* );
98 extern void rcx_env( void );
99 int rcx_islosigbreakloop( losig_list* );
100 extern void rcx_setlosigbreakloop( losig_list* );
101 void rcx_freeflagcoupled( losig_list* );
102 void rcx_addbellow( losig_list *ptsig, char *sigpointed );
103 void rcx_clear_new_num_node( lofig_list *lofig );
104 int rcx_get_new_num_node( losig_list *losig, int node, char where, char withnowire );
105 void rcx_build_new_num_node( lofig_list *lofig );
106 int rcx_get_node_base( losig_list *losig );
107 int rcx_set_node_base( losig_list *losig, int index );
108 losig_list* rcx_get_out_ins_sig( losig_list *losig );
109 void rcx_copyrcx( lofig_list *lofig, losig_list *sigext, loins_list *loins, losig_list *sigint );
110 void rcx_trsfloinscapa( lofig_list *lofig, loins_list *loins, losig_list *sigint ) ;
111 void rcx_buildrcxnowire( lofig_list*, losig_list* );
112 void merge_ext( rcxfile *file, losig_list *ptsig, locon_list *ptcon, char iscache, char keeponenode );
113 void set_ext_rcn( losig_list *ptsig );
114 void rcx_addsignal( lofig_list *fig );
115 void rcx_name_locon_trs( lofig_list *currentfig );
116 void rcx_addfigcon( lofig_list *fig );
117 void rcx_set_lofig_savesig( lofig_list *fig );
118 losig_list* rcx_addsigbellow ( lofig_list*, char* );
119 rcxparam* rcx_allocrcxparam ( void );
120
121 void rcx_clear_node_base( losig_list *losig );
122 void rcx_clear_new_num_node( lofig_list *lofig );
123 void rcx_trsfnodelocon( locon_list *locon, char where );
124
125 chain_list* rcx_getagrlistfast( lofig_list *lofig, char *insname, losig_list *victime );
126 void rcx_setagrlistfast( lofig_list *lofig, char *insname, losig_list *victime, chain_list *headagr );
127 void rcx_dumpnet( rcxfile *file, losig_list *losig );
128 void rcn_flatnet( lofig_list *lofig );
129 void rcx_mergercn( lofig_list *lofig, losig_list *sigext, loins_list *scanloins, losig_list *sigint, losig_list *vss, losig_list *vssni );
130 void rcx_repair_pnode( losig_list *losig );
131 char rcx_isvalidlocon( locon_list *locon );
132 RCXFLOAT rcx_realslope( RCXFLOAT cc, RCXFLOAT cca, RCXFLOAT fcc, RCXFLOAT f0 );
133 int rcx_calc_cca( rcx_slope *slope, losig_list *victime );
134 int rcx_calc_cca_param( rcxparam *param );
135 void rcx_set_locon_one_pnode( locon_list *locon );
136 char rcx_is_locon_one_pnode( locon_list *locon );
137
138 int rcx_dw_forloop( losig_list *losig, lonode_list *lonode, chain_list *chwire, ht *htpack, void *userdata);
139 int rcx_up_pack_forloop( losig_list *losig, lonode_list *lonode, rcx_triangle *tr, void *userdata );
140 int rcx_up_forloop( losig_list *losig, lonode_list *lonode, lowire_list *lowire, void *userdata );
141
142 extern void rcx_setdriver( losig_list *losig, num_list *driversup, num_list *driversdw );
143 extern void rcx_cleardriver( losig_list *losig );
144
145 void rcx_trsfdriver( lofig_list *currentfig, losig_list *sigext, rcx_list *rcxext, losig_list *sigint, rcx_list *rcxint );