1 /****************************************************************************/
3 /* Chaine de CAO & VLSI Alliance */
5 /* Produit : TRC Version 1.01 */
6 /* Fichier : trc_rcx.h */
8 /* (c) copyright 1997-1998 Laboratoire LIP6 equipe ASIM */
9 /* Tous droits reserves */
10 /* Support : e-mail alliance-support@asim.lip6.fr */
12 /* Auteur(s) : Gregoire AVOT */
14 /****************************************************************************/
17 #define RCXLOGINFO 'I'
18 #define RCXLOGWARNING 'W'
19 #define RCXLOGERROR 'E'
20 #define RCXLOGDEBUG 'D'
22 extern FILE *RCXFILELOG
;
26 #define RCX_HTAGR 0x5243580E
27 // Table de hash pour retrouver la liste des agresseur. rcx_agragrlistfast().
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.
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.
41 #define RCXLOSIGFLAG 0x52435812
42 // Contient des flags. Ce ptype est utilisé dans rcn_coupledinformation, il
43 // correspond donc aux valeurs 0x52435812 et 0x52435813
45 #define RCX_NODE_BASE 0x52435814
46 // Contient le décalage à appliquer sur un noeud de signal d'instance.
49 #define RCX_NI_LOSIG 0x1
51 extern char RCX_FASTMODE
;
52 extern char RCX_FREEUNUSEDCTC
;
53 extern char RCX_USEREALSLOPE
;
55 // Arguments where pour la fonction rcx_get_new_num_node()
59 // Arguments pour la fonction rcx_iscrosstalk
60 #define RCX_TEST_ONE 'o'
61 #define RCX_TEST_LIMIT 'l'
63 /* Fonctions externes */
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 );
71 int rcx_state( rcx_list
*, int );
72 extern void rcx_create( lofig_list
* );
74 /* Construction de la vue RCX d'une lofig */
75 extern void buildrcx( lofig_list
* );
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 );
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
* );
90 /* Sélectionne le type de représentation d'un losig */
91 extern int setrcxmodel( lofig_list
*, losig_list
*, int );
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 );
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
);
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
);
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
);
142 extern void rcx_setdriver( losig_list
*losig
, num_list
*driversup
, num_list
*driversdw
);
143 extern void rcx_cleardriver( losig_list
*losig
);
145 void rcx_trsfdriver( lofig_list
*currentfig
, losig_list
*sigext
, rcx_list
*rcxext
, losig_list
*sigint
, rcx_list
*rcxint
);