1 /****************************************************************************/
3 /* Chaine de CAO & VLSI AVERTEC */
5 /* Produit : AVERTEC global tools */
6 /* Fichier : beh_gnsConflictingName.c */
8 /* © copyright 2000 AVERTEC */
9 /* Tous droits reserves */
11 /* Auteur(s) : Antony PINTO */
13 /****************************************************************************/
15 #include "beh_gnsConflictingName.h"
17 //#define BEH_AVT_SUPPORT(num) (stderr,"[BEH_ERR] %d please contact Avertec support\n",(num))
18 #define BEH_UNDO_NAME (long)(-9)
22 /****************************************************************************/
24 /****************************************************************************/
28 /****************************************************************************/
29 static void addInHt(ht
*signalht
, char *ref
, char *name
)
33 c
= (chain_list
*)gethtitem(signalht
,ref
);
34 if (c
== (chain_list
*)EMPTYHT
|| c
== (chain_list
*)DELETEHT
)
37 addhtitem(signalht
,ref
,(long)addchain(c
,name
));
40 /*}}}************************************************************************/
44 /****************************************************************************/
45 static char *renameSig(char *name
)
49 res
= (char*)gethtitem(HTSIGREF
,name
);
50 if (res
== (char*)EMPTYHT
|| res
== (char*)DELETEHT
)
56 /*}}}************************************************************************/
58 /****************************************************************************/
59 /*{{{ beh_createName() */
62 /****************************************************************************/
63 void beh_createName(ht
*signalht
, char *(*func
)(char *,chain_list
*))
71 for (i
= 0; i
< signalht
->length
; i
++)
73 hi
=& signalht
->pElem
[i
];
74 listname
= (chain_list
*)hi
->value
;
75 if (listname
!= (chain_list
*)EMPTYHT
)
77 oldname
= (char*)hi
->key
;
79 hi
->value
= (long)func(oldname
,listname
);
81 hi
->value
= (long)(listname
->DATA
);
88 /*}}}************************************************************************/
92 /****************************************************************************/
93 void beh_dumpHTName(ht
*nameht
, int mode
)
96 chain_list
*listname
, *chainx
;
101 for (i
= 0; i
< nameht
->length
; i
++)
103 hi
=& nameht
->pElem
[i
];
104 listname
= (chain_list
*)hi
->value
;
105 if (listname
!= (chain_list
*)EMPTYHT
)
107 oldname
= (char*)hi
->key
;
111 beh_warning(312,oldname
,(char*)listname
->DATA
);
112 //(stderr,"%20s -> %s\n",oldname,(char*)listname->DATA);
113 for (chainx
= listname
->NEXT
; chainx
; chainx
= chainx
->NEXT
)
114 beh_warning(313," ",(char*)chainx
->DATA
);
115 //(stderr,"%23s %s\n"," ",(char*)chainx->DATA);
118 beh_warning(312,oldname
,(char*)listname
);
119 //(stderr,"%20s -> %s\n",oldname,(char*)listname);
124 /*}}}************************************************************************/
125 /*{{{ beh_changeNameInCnsBefigFromSignalHt() */
128 /****************************************************************************/
129 void beh_changeNameInside(ht
*signalht
, befig_list
*fig
)
139 sprintf(buf
,"%d",__LINE__
);
140 beh_toolbug(199,buf
,NULL
,0);
141 //BEH_AVT_SUPPORT(__LINE__);
144 // discard top level interface renaming
145 for (por
= fig
->BEPOR
; por
; por
= por
->NEXT
)
146 addhtitem(signalht
,por
->NAME
,(long)por
->NAME
);
149 beh_namewrap(fig
,renameSig
);
153 /*}}}************************************************************************/
154 /*{{{ beh_changeNameInterface() */
157 /****************************************************************************/
158 void beh_changeNameInterface(ht
*signalht
, befig_list
*fig
)
160 ptype_list
*hlcor
, *ptx
, *lcor
, *nlcor
;
163 bevectpor_list
*vpor
;
164 char *oldname
, *newname
, buf1
[1024], buf2
[1024];
174 for (rin
= fig
->BERIN
; rin
; rin
= rin
->NEXT
)
175 addhtitem(rinht
,rin
->NAME
,(long)rin
);
178 if ((hlcor
= getptype(fig
->USER
,BEG_RENAME_LIST
)))
181 for (ptx
= lcor
; ptx
; ptx
= ptx
->NEXT
)
183 newname
= (char*)gethtitem(signalht
,ptx
->DATA
);
184 oldname
= (char*)ptx
->TYPE
;
185 n
= sscanf(newname
,"%[^ ] %d",buf1
,&i
);
186 o
= sscanf(oldname
,"%[^ ] %d",buf2
,&i
);
188 addhtitem(porht
,oldname
,(long)newname
);
190 addhtitem(porht
,namealloc(buf2
),(long)namealloc(buf1
));
192 addptype(nlcor
,(long)oldname
,newname
);
199 for (por
= fig
->BEPOR
; por
; por
= por
->NEXT
)
200 if ((newname
= (char*)gethtitem(porht
,por
->NAME
)) != (char*)EMPTYHT
)
202 rin
= (berin_list
*)gethtitem(rinht
,por
->NAME
);
203 if (rin
== (berin_list
*)EMPTYHT
)
205 beh_renameport(fig
,por
,rin
,newname
);
208 for (vpor
= fig
->BEVECTPOR
; vpor
; vpor
= vpor
->NEXT
)
209 if ((newname
= (char*)gethtitem(porht
,vpor
->NAME
)) != (char*)EMPTYHT
)
211 rin
= (berin_list
*)gethtitem(rinht
,vpor
->NAME
);
212 if (rin
== (berin_list
*)EMPTYHT
)
214 beh_renamevectport(fig
,vpor
,rin
,newname
,0);
218 if (vpor
->DIRECTION
!= 'I')
219 for (ptx
= nlcor
; ptx
; ptx
= ptx
->NEXT
)
221 sscanf((char*)ptx
->TYPE
,"%[^ ] %d",buf2
,&i
);
222 if (namealloc(buf2
) == vpor
->NAME
)
225 ptx
->DATA
= (void*)ptx
->TYPE
;
226 ptx
->TYPE
= (long)tmp
;
236 /*}}}************************************************************************/
237 /*{{{ beh_addRefName() */
240 /****************************************************************************/
241 void beh_addRefName(ht
**signalht
, befig_list
*fig
)
245 if ((pt
= getptype(fig
->USER
,BEG_RENAME_LIST
)))
248 *signalht
= addht(40);
249 for (pt
= pt
->DATA
; pt
; pt
= pt
->NEXT
)
250 addInHt(*signalht
,(char*)pt
->DATA
,(char*)pt
->TYPE
);
254 /*}}}************************************************************************/
255 /*}}}************************************************************************/