1 /****************************************************************************/
3 /* Chaine de CAO & VLSI Alliance */
5 /* Produit : TRC Version 1.01 */
6 /* Fichier : trc101.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 /****************************************************************************/
19 #define RCXFLOAT double
21 // Bidouilles de Marc. Pour l'instant, ça marche.
22 #define TRC_LOCON_AWE (long)0x00000007 // TMP
23 extern int TRC_MARK_CON
; // SOLUTION TMP
26 // Les convertions d'unités entre TAS, RCX et le SI...
28 // Tas et TTV : capa=fF, délais=pS
29 // Alliance : capa=pF, délais=pS
31 #define RCX_PTRTESTANDSET( p, v ) if(p) *p=v;
32 #define RCX_UNIT_TIME_TAS_TO_SI (1e-12)
33 #define RCX_UNIT_CAPA_ALC_TO_SI (1e-12)
35 // Structures temporaires crée sur les agresseurs créée par rcx_getagrlist() et
36 // libérée par rcx_freeagrlist(). L'utilisateur doit remplir les champs FMINUP,
37 // FMINDW, EVENT et ACTIF.
39 typedef struct rcxparam
{
43 RCXFLOAT FMINUP
; // Front minimum avec crosstalk
44 RCXFLOAT F0UP
; // Front minimum sans crosstalk
47 RCXFLOAT CC
; // Capacité de couplage vers l'agresseur
48 RCXFLOAT CCA
; // Valeur totale des ctc sur l'agresseur
55 #define RCX_AGRBEST 0x01
56 #define RCX_AGRWORST 0x02
57 #define RCX_MTX_BEST 0x04
58 #define RCX_MTX_WORST 0x08
59 #define RCX_QUIET 0x10
60 /* Les trois dernieres valeurs ne sont pas prise en compte par RCX. Elle servent
61 à indiquer que cet agresseur a été éliminé car il existe une contrainte de
62 mutuelle exclusion avec un autre agresseur. C'est géré par STB-CTK. */
64 // Ptype sur le losig qui pointe vers le rcxparam.
65 #define RCX_REALAGRESSOR 0x52435808
68 // Information sur la transition du signal
70 /* Note concernant les slopes :
72 Les champs FCCMAX et F0MAX servent à calculer les capacités équivalentes par
73 effet Miller. Les champs slope des structures MIN et MAX sont les fronts à
74 appliquer à l'entrée du réseau RC. Le MAX.slope n'est pas forcement égale au
75 FCCMAX, car FCCMAX est le front le plus mous sur tout le réseau RC et
76 MAX.slope est le front en entrée du réseau RC.
95 RCXFLOAT F0MAX
; // Front max sans crosstalk
96 RCXFLOAT FCCMAX
; // Front max avec crosstalk
97 char SENS
; // Sens de transition
98 RCXFLOAT CCA
; // Somme des ctc sur le signal victime
100 rcx_slope_param MAX
;
110 locon_list
*DRIVERSUP
;
111 locon_list
*DRIVERSDW
;
112 chain_list
*RCXEXTERNAL
;
113 chain_list
*RCXINTERNAL
;
118 // Définition du sens d'une transition
120 #define TRC_SLOPE_UP 'U'
121 #define TRC_SLOPE_DOWN 'D'
127 // Sens relatifs des transitions
129 #define RCX_OPPOSITE 'o'
131 // Champ USER des locon
132 #define RCXNAME ((long)1665)
133 #define RCX_LOCONCAPA_HEAP 0x5243580A
134 #define RCX_LOCONCAPA_SPACE 0x5243580D
135 #define RCX_LOCON_UP 0x5243580B
136 #define RCX_LOCON_DN 0x5243580C
137 #define RCX_FAKE 0x524358FA
139 // Champ USER des losig
140 #define PTYPERCX ((long)1664)
141 #define RCX_FAKE 0x524358FA
143 // Arguments pour la fonction setrcxmodel()
144 #define RCX_BEST ((int)1)
145 #define RCX_NOR ((int)2)
146 #define RCX_NOCTC ((int)3)
147 #define RCX_NORCTC ((int)4)
148 #define RCX_ALL ((int)0)
150 // Arguments pour la fonction rcx_crosstalkactive()
151 #define RCX_NOCROSSTALK 0
155 // Arguments pour la fonction rcx_rcnload()
156 #define RCX_CAPALOAD 0x1
157 #define RCX_PILOAD 0x2
158 #define RCX_BESTLOAD 0x3
159 #define RCX_LOADERROR 0x4
161 // Interface de la fonction rcx_getsigcapa()
163 #define RCX_SIGCAPA_GROUND ((char)0x01)
164 #define RCX_SIGCAPA_CTK ((char)0x02)
166 #define RCX_SIGCAPA_LOCAL ((char)0x01)
167 #define RCX_SIGCAPA_GLOBAL ((char)0x02)
169 #define RCX_SIGCAPA_NORM ((char)1)
170 #define RCX_SIGCAPA_MILLER ((char)2)
171 #define RCX_SIGCAPA_DELTA ((char)3)
173 extern RCXFLOAT RCX_MINRCSIGNAL
;
174 extern RCXFLOAT RCX_MINRELCTKSIGNAL
;
175 extern RCXFLOAT RCX_MINRELCTKFILTER
;
176 extern RCXFLOAT RCX_CAPALOAD_MAXRC
;
177 extern RCXFLOAT RCX_MAXDELTALOAD
;
179 typedef struct rcx_signal_noise
{
184 RCXFLOAT NOISE_UNDER
;
193 typedef struct awelist
{
194 struct awelist
*NEXT
;
202 typedef struct rcxfile
{
208 /* Configuration du modèle de crosstalk */
210 #define RCX_MILLER_NONE '-'
211 #define RCX_MILLER_0C2C 'm'
212 #define RCX_MILLER_NOMINAL 'n'
213 #define RCX_MILLER_NC3C '3'
214 extern char RCX_CTK_MODEL
;
216 #define RCX_NOISE_NONE '-'
217 #define RCX_NOISE_NEVER 'n'
218 #define RCX_NOISE_ALWAYS 'a'
219 #define RCX_NOISE_IFSTRONG 's'
220 #define RCX_NOISE_CUSTOM 'c'
221 #define RCX_NOISE_FINE 'f'
222 extern char RCX_CTK_NOISE
;
224 #define RCX_SLOPE_NONE '-'
225 #define RCX_SLOPE_CTK 'c'
226 #define RCX_SLOPE_NOMINAL 'n'
227 #define RCX_SLOPE_REAL 'e'
228 extern char RCX_CTK_SLOPE_NOISE
;
229 extern char RCX_CTK_SLOPE_MILLER
;
231 #define RCX_SLOPE_DELAY_NONE '-'
232 #define RCX_SLOPE_DELAY_CTK 'c'
233 #define RCX_SLOPE_DELAY_ENHANCED 'e'
234 extern char RCX_CTK_SLOPE_DELAY
;
236 /* Fonctions de haut niveau rcx */
237 #define RCXI_GND ((int)0x00000001)
238 #define RCXI_CTK ((int)0x00000002)
239 #define RCXI_MAX ((int)0x00000004)
240 #define RCXI_MIN ((int)0x00000008)
241 #define RCXI_FORCED ((int)0x00000010)
242 #define RCXI_ALLWIRE ((int)0x00000080)
244 #define RCXI_UP ((char)'u')
245 #define RCXI_DW ((char)'d')
247 // Modèle Miller : 0c-2c ou -1c-3c
249 #define RCX_MILLER2C ((char)2)
250 #define RCX_MILLER4C ((char)4)
252 typedef struct rcx_build_tr_bip
{
253 struct rcx_build_tr_bip
*NEXT
;
258 typedef struct rcx_build_tr
{
259 struct rcx_build_tr
*NEXT
;
260 rcx_build_tr_bip
*LIST
;
264 typedef struct rcx_triangle
{
265 struct rcx_triangle
*NEXT
;
272 chain_list
*REPORTED_IN
;
273 chain_list
*REPORTED_N1
;
274 chain_list
*REPORTED_N2
;
275 rcx_build_tr
*BUILD
;
280 #define RCX_ORIGIN_GROUP_PTYPE 0x04030400
281 #define RCX_DESTINATION_GROUP_PTYPE 0x04030401
282 #define RCX_RC_TIMINGS_PTYPE 0x04030402
284 typedef struct rcx_timings
286 struct rcx_timings
*NEXT
;
288 float computed_delay
;
289 float computed_slope
;
294 int nb_origins
, nb_destinations
;
295 rcx_timings
**origin_destination_array_UU
;
296 rcx_timings
**origin_destination_array_DD
;
299 /* Argument 'slope' pour rcx_getloconcapa */
300 // #define TRC_SLOPE_UP 'U'
301 // #define TRC_SLOPE_DOWN 'D'
302 #define TRC_SLOPE_UNK 'n'
304 /* Argument 'type' pour rcx_getloconcapa */
305 #define TRC_CAPA_MIN 'm'
306 #define TRC_CAPA_MAX 'M'
307 #define TRC_CAPA_NOM 'n'
308 #define TRC_CAPA_NOM_MIN 'i'
309 #define TRC_CAPA_NOM_MAX 'a'
311 /* Valeur 'status' renvoyée par rcx_getloconcapa */
312 #define RCX_CAPA_OK 'y'
313 #define RCX_CAPA_EQUIV 'e'
315 extern int RCX_NB_CAPA_L0
,
319 extern int RCX_CAPA_UP_MIN
,
324 extern int RCX_CAPA_NOM_MIN
,
329 RCX_CAPA_DW_NOM_MAX
;
331 extern int RCX_CAPA_NOMF_MIN
,
333 RCX_CAPA_UP_NOMF_MIN
,
334 RCX_CAPA_UP_NOMF_MAX
,
335 RCX_CAPA_DW_NOMF_MIN
,
336 RCX_CAPA_DW_NOMF_MAX
;
338 extern double RCX_SLOPE_UNSHRINK
;