1 /*------------------------------------------------------\
3 | Title : Structures and fonctions for CGV |
8 | Authors : Picault Stephane |
12 \------------------------------------------------------*/
20 #define CGV_FROM_CNS 0x0001
21 #define CGV_FROM_LOFIG 0x0010
22 #define CGV_FROM_CONE 0x0020
23 #define CGV_SEL_PREC_LOGIC 0x0002
24 #define CGV_SEL_SUCC_LOGIC 0x0004
25 #define CGV_SEL_REC_LOGIC 0x0008
26 #define CGV_FROM_CHAIN_CONE 0x1000
27 #define CGV_FROM_CHAIN_NAME 0x2000
29 #define CGV_NET_TYPE 0x90000020
30 #define CGV_BOX_TYPE 0x90000200
31 #define CGV_CON_TYPE 0x90002000
32 #define CGV_MARK_TYPE 0x90020000
34 #define CGV_BOX_TAGED 0x0001
35 #define CGV_BOX_RETAGED 0x0100
36 #define CGV_BOX_CLUSTERISED 0x0002
37 #define CGV_BOX_CLUSTER 0x0004
38 #define CGV_BOX_TRANSPARENCE 0x0008
39 #define CGV_BOX_PLACED 0x1000
40 #define CGV_BOX_HIT_FON_OUT_CON 0x2000
42 #define CGV_CON_IN 0x01
43 #define CGV_CON_OUT 0x02
44 #define CGV_CON_EXTERNAL 0x10
45 #define CGV_CON_INTERNAL 0x20
47 #define CGV_CON_TAGED 0x0100
48 #define CGV_CON_PLACED 0x0200
49 #define CGV_CON_FAKE 0x0400
51 #define CGV_NET_CANAL 0x0F
53 #define CGV_NET_MAXDIR 0x20
54 #define CGV_NET_MINDIR 0x10
56 #define CGV_ROOT_CON_BOX 0x0001
57 #define CGV_ROOT_CON_FIG 0x0002
59 #define CGV_SOURCE_LOSIG 0x01
60 #define CGV_SOURCE_LOINS 0x02
61 #define CGV_SOURCE_LOCON 0x03
62 #define CGV_SOURCE_LOFIG 0x04
63 #define CGV_SOURCE_CNSFIG 0x05
64 #define CGV_SOURCE_CNSCONE 0x06
65 #define CGV_SOURCE_CNSEDGE 0x07
66 #define CGV_SOURCE_CNSCELL 0x08
67 #define CGV_SOURCE_LOTRS 0x09
68 #define XYAG_DEFAULT_HEIGHT 0x0004
69 #define XYAG_DEFAULT_FACTOR 0x0003
71 #define CGV_CEL_BOX 0x0001
72 #define CGV_CEL_CON 0x0002
74 #define CGV_FILE_TYPE 0x22334455
76 /*------------------------------------------------------\
78 \------------------------------------------------------*/
80 #define IsCgvBoxClusterised(X) ((X)->FLAGS & CGV_BOX_CLUSTERISED)
81 #define IsCgvBoxTaged(X) ((X)->FLAGS & CGV_BOX_TAGED)
82 #define IsCgvBoxReTaged(X) ((X)->FLAGS & CGV_BOX_RETAGED)
83 #define IsCgvBoxCluster(X) ((X)->FLAGS & CGV_BOX_CLUSTER)
84 #define IsCgvBoxTransparence(X) ((X)->FLAGS & CGV_BOX_TRANSPARENCE)
85 #define IsCgvBoxPlaced(X) ((X)->FLAGS & CGV_BOX_PLACED)
87 #define IsCgvConIn(X) ((X)->TYPE & CGV_CON_IN)
88 #define IsCgvConOut(X) ((X)->TYPE & CGV_CON_OUT)
89 #define IsCgvConExternal(X) ((X)->TYPE & CGV_CON_EXTERNAL)
90 #define IsCgvConInternal(X) ((X)->TYPE & CGV_CON_INTERNAL)
91 #define IsCgvConTaged(X) ((X)->FLAGS & CGV_CON_TAGED)
92 #define IsCgvConPlaced(X) ((X)->FLAGS & CGV_CON_PLACED)
93 #define IsCgvConFake(X) ((X)->FLAGS & CGV_CON_FAKE)
95 #define IsCgvNetCanal(X) ((X)->FLAGS & CGV_NET_CANAL)
97 #define GetCgvNetDirType(X) ((X)->FLAGS & (CGV_NET_MAXDIR|CGV_NET_MINDIR))
99 #define SetCgvNetMaxOutput(X) ((X)->FLAGS |= CGV_NET_MAXDIR)
100 #define SetCgvNetMinOutput(X) ((X)->FLAGS |= CGV_NET_MINDIR)
102 #define SetCgvBoxClusterised(X) ((X)->FLAGS |= CGV_BOX_CLUSTERISED)
103 #define SetCgvBoxTaged(X) ((X)->FLAGS |= CGV_BOX_TAGED)
104 #define SetCgvBoxUnTaged(X) ((X)->FLAGS &= ~CGV_BOX_TAGED)
105 #define SetCgvBoxReTaged(X) ((X)->FLAGS |= CGV_BOX_RETAGED)
106 #define SetCgvBoxCluster(X) ((X)->FLAGS |= CGV_BOX_CLUSTER)
107 #define SetCgvBoxTransparence(X) ((X)->FLAGS |= CGV_BOX_TRANSPARENCE)
108 #define SetCgvBoxPlaced(X) ((X)->FLAGS |= CGV_BOX_PLACED)
109 #define SetCgvBoxHit(X) ((X)->FLAGS |= CGV_BOX_HIT_FON_OUT_CON)
110 #define IsCgvBoxHit(X) ((X)->FLAGS & CGV_BOX_HIT_FON_OUT_CON)
112 #define SetCgvConExternal(X) ((X)->TYPE |= CGV_CON_EXTERNAL)
113 #define SetCgvConInternal(X) ((X)->TYPE |= CGV_CON_INTERNAL)
114 #define SetCgvConTaged(X) ((X)->FLAGS |= CGV_CON_TAGED)
115 #define SetCgvConUnTaged(X) ((X)->FLAGS &= ~CGV_CON_TAGED)
116 #define SetCgvConPlaced(X) ((X)->FLAGS |= CGV_CON_PLACED)
117 #define SetCgvConFake(X) ((X)->FLAGS |= CGV_CON_FAKE)
119 #define SetCgvNetCanal(X) ((X)->FLAGS |= CGV_NET_CANAL)
121 #define ClearCgvNetCanal(X) ((X)->FLAGS &= ~CGV_NET_CANAL)
122 #define ClearCgvNetDir(X) ((X)->FLAGS &= ~(CGV_NET_MINDIR|CGV_NET_MAXDIR))
124 #define addcgvfigconin(F, N) (addcgvfigcon((F), (N), CGV_CON_IN))
125 #define addcgvfigconout(F, N) (addcgvfigcon((F), (N), CGV_CON_OUT))
127 #define addcgvboxconin(F, B, N) (addcgvboxcon((F), (B), (N), CGV_CON_IN))
128 #define addcgvboxconout(F, B, N) (addcgvboxcon((F), (B), (N), CGV_CON_OUT))
130 extern int CGV_SCALE
;
131 #define MARGE (3*CGV_SCALE)
132 /*------------------------------------------------------\
134 \------------------------------------------------------*/
136 /*------------------------------------------------------\
138 \------------------------------------------------------*/
140 typedef struct cgvwir
{
151 /*------------------------------------------------------\
153 \------------------------------------------------------*/
155 typedef struct cgvnet
{
160 unsigned char SOURCE_TYPE
;
164 long CANAL
; /* pour routage ... */
165 long YMIN
; /* pour routage ... */
166 long YMAX
; /* pour routage ... */
169 struct cgvnet
*UNDER
;
172 /*------------------------------------------------------\
174 \------------------------------------------------------*/
176 typedef struct cgvcon
{
182 unsigned char ROOT_TYPE
;
186 unsigned char SOURCE_TYPE
;
193 /*------------------------------------------------------\
195 \------------------------------------------------------*/
197 typedef struct cgvbox
{
200 struct cgvcon
*CON_IN
;
202 struct cgvcon
*CON_OUT
;
205 unsigned char SOURCE_TYPE
;
215 struct cgvbox
*UNDER
;
221 /*------------------------------------------------------\
223 \------------------------------------------------------*/
225 typedef struct cgvfig
{
228 struct cgvcon
*CON_IN
;
230 struct cgvcon
*CON_OUT
;
235 unsigned char SOURCE_TYPE
;
242 void *data0
, *data1
, *data2
;
246 /*------------------------------------------------------\
248 \------------------------------------------------------*/
250 typedef struct cgvcol
{
253 struct cgvcel
*LAST_CELL
;
259 /*------------------------------------------------------\
261 \------------------------------------------------------*/
263 typedef struct cgvcel
{
271 typedef struct cgv_actions
276 typedef struct cgv_interaction
278 struct cgv_interaction
*NEXT
;
279 unsigned int object_type
;
283 typedef void (*markobject
)(void *data
);
285 /*------------------------------------------------------\
287 \------------------------------------------------------*/
289 extern cgvfig_list
*HEAD_CGVFIG
;
290 extern cgvcol_list
*HEAD_CGVCOL
;
291 extern int CGV_MAKE_CELLS
;
292 extern int CGV_WAS_PRESENT
;
293 extern library
*CGV_LIB
;
295 /*------------------------------------------------------\
297 \------------------------------------------------------*/
299 void cgv_hilite (cgvfig_list
*Figure
,
304 void cgv_hilite_net (cgvfig_list
*Figure
,
310 /*------------------------------------------------------\
312 \------------------------------------------------------*/
314 void freecgvfig (cgvfig_list
*Figure
);
315 void freecgvcon (cgvcon_list
*Connector
);
316 void freecgvbox (cgvbox_list
*Box
);
317 void freecgvwir (cgvwir_list
*Wire
);
318 void freecgvnet (cgvnet_list
*Net
);
319 void freecgvcol (cgvcol_list
*Colum
);
320 void freecgvcel (cgvcel_list
*Cell
);
322 /*------------------------------------------------------\
324 \------------------------------------------------------*/
326 cgvnet_list
*addcgvnetcon (cgvnet_list
*Net
,
328 cgvfig_list
*addcgvfig (char *Name
,
330 cgvcon_list
*addcgvfigcon (cgvfig_list
*Figure
,
333 cgvbox_list
*addcgvbox (cgvfig_list
*Figure
,
335 cgvcon_list
*addcgvboxcon (cgvfig_list
*Figure
,
339 cgvwir_list
*addcgvwir (cgvfig_list
*Figure
,
341 cgvnet_list
*addcgvnet (cgvfig_list
*Figure
);
343 cgvcel_list
*addcgvcel (cgvcol_list
*Column
);
344 cgvcol_list
*addcgvcol (void);
346 cgvcel_list
*addcgvboxtocgvcel (cgvbox_list
*CgvBox
,
347 cgvcel_list
*CgvCel
);
348 cgvcel_list
*addcgvcontocgvcel (cgvcon_list
*CgvCon
,
349 cgvcel_list
*CgvCel
);
351 /*------------------------------------------------------\
353 \------------------------------------------------------*/
355 void cgvdeltransparence (cgvcel_list
*Cell
,
356 cgvfig_list
*Figure
);
357 int delcgvfig (char *Name
);
358 cgvfig_list
*rmvcgvfig (cgvfig_list
*CgvFig
);
359 void delcgvcol (void);
361 /*------------------------------------------------------\
363 \------------------------------------------------------*/
365 void viewcgvwir (cgvwir_list
*Wire
);
366 void viewcgvnet (cgvnet_list
*Net
);
367 void viewcgvcon (cgvcon_list
*Con
,
369 void viewcgvbox (cgvbox_list
*Box
);
370 void viewcgvfig (cgvfig_list
*Figure
);
372 void cgv_error (char Error
,
376 void cgv_setscale (int scale
);
378 chain_list
*cgvlistcone (cnsfig_list
*CnsFigure
,
379 chain_list
*NameList
,
382 cgvfig_list
*CgvFigure
);
383 void buildcgvfig (cgvfig_list
*Figure
);
385 cgvfig_list
*getcgvfig (char *FileName
,
388 cgvfig_list
*getcgvfig_from_lofig (char *Name
,
390 cgvfig_list
*getcgvfig_from_cnsfig (char *FileName
,
392 cgvfig_list
*getcgvfig_from_cone (cone_list
*cn
);
394 void freecgvfigure (cgvfig_list
*Figure
);
396 cgvfig_list
*getcgvfile (char *name
,
400 void removecgvfiles (char *name
,
401 void (*did
)(cgvfig_list
*removed
));
402 void removeallcgvfiles (void (*did
)(cgvfig_list
*removed
));
403 void addcgvfile (char *name
,
407 cgvfig_list
*cgvstruct
,
411 char *getcgvfileext (cgvfig_list
*cgvstruct
);
413 void cgv_HiLight (cgvfig_list
*cgvf
,
414 cgv_interaction
*itr
,
417 cgvfig_list
*cgv_Extract (cgvfig_list
*cgvf
,
418 cgv_interaction
*itr
,
420 void cgv_extract (cgvfig_list
*Figure
,
424 void complete_extract_list (cgvfig_list
*cgvf
,
425 cgv_interaction
*itr
,
428 void cgv_extract_net (cgvfig_list
*Figure
,
432 cgvfig_list
*finish_extract (cgvfig_list
*parent
);
435 // CGV INTERACTION OBJECTS / FUNCTIONS
436 cgv_interaction
*cgv_NetObject (cgv_interaction
*head
,
438 cgv_interaction
*cgv_GateObject (cgv_interaction
*head
,
440 cgv_interaction
*cgv_ConnectorObject (cgv_interaction
*head
,
442 void cgv_FreeObjects (cgv_interaction
*head
);
444 void cgv_SetDefaultLibrary (library
*l
);
445 symbol_list
*cgv_getlofigcellsymbol (library
*ptlib
,
447 symbol_list
*cgv_getselfcellsymbol (library
*ptlib
,
449 void parsecorresp (char *name
);
450 char *getcorrespgate (char *name
);
451 char *getcorrespgatepin (char *name
,