1 /******************************************/
3 /******************************************/
4 /******************************************************************************/
6 /******************************************************************************/
10 char TLF_TRACE_MODE
= 'N' ;
11 char *LIBRARY_TLF_NAME
;
15 char *tlf_chainlistToStr(chain_list
*pchain
)
21 strcpy(s
,(char *)pchain
->DATA
);
23 for(p
=pchain
->NEXT
; p
!= NULL
; p
=p
->NEXT
)
24 strcat(s
,(char *)p
->DATA
);
26 str
= (char*)mbkalloc((sizeof(char)*strlen(s
))+1);
32 void tlf_aff_cbhcomb(cbhcomb
*p
)
34 avt_log(LOGTLF
,2,"Structure CBHCOMB:\n");
35 avt_log(LOGTLF
,2,"\tNAME: %s\n", p
->NAME
);
36 if(p
->FUNCTION
!= NULL
)
38 avt_log(LOGTLF
,2,"\tFUNCTION: ");
39 displayExprLog(LOGTLF
,2,p
->FUNCTION
);
43 avt_log(LOGTLF
,2,"\tHZFUNCTION: ");
44 displayExprLog(LOGTLF
,2,p
->HZFUNC
);
46 if(p
->CONFLICT
!= NULL
)
48 avt_log(LOGTLF
,2,"\tCONFLICT: ");
49 displayExprLog(LOGTLF
,2,p
->CONFLICT
);
53 void tlf_aff_cbhseq(cbhseq
*p
)
55 avt_log(LOGTLF
,2,"Structure CBHSEQ:\n");
56 avt_log(LOGTLF
,2,"SEQTYPE: %d\n", p
->SEQTYPE
);
58 avt_log(LOGTLF
,2,"NAME: %s\n", p
->NAME
);
59 if(p
->NEGNAME
!= NULL
)
60 avt_log(LOGTLF
,2,"NEGNAME: %s\n", p
->NEGNAME
);
62 avt_log(LOGTLF
,2,"PIN: %s\n", p
->PIN
);
64 avt_log(LOGTLF
,2,"NEGPIN: %s\n", p
->NEGPIN
);
67 avt_log(LOGTLF
,2,"CLOCK:");
68 displayExprLog(LOGTLF
,2,p
->CLOCK
);
70 if(p
->SLAVECLOCK
!= NULL
)
72 avt_log(LOGTLF
,2,"SLAVECLOCK:");
73 displayExprLog(LOGTLF
,2,p
->SLAVECLOCK
);
77 avt_log(LOGTLF
,2,"DATA:");
78 displayExprLog(LOGTLF
,2,p
->DATA
);
82 avt_log(LOGTLF
,2,"RESET:");
83 displayExprLog(LOGTLF
,2,p
->RESET
);
87 avt_log(LOGTLF
,2,"SET:");
88 displayExprLog(LOGTLF
,2,p
->SET
);
92 avt_log(LOGTLF
,2,"RSCONF:");
93 displayExprLog(LOGTLF
,2,p
->RSCONF
);
95 if(p
->RSCONFNEG
!= NULL
)
97 avt_log(LOGTLF
,2,"RSCONFNEG:");
98 displayExprLog(LOGTLF
,2,p
->RSCONFNEG
);
103 /*****************************************************************************
104 * fonction tlf_setenv() *
105 *****************************************************************************/
110 str
= getenv("TLF_TRACE_MODE") ;
112 TLF_TRACE_MODE
= (strcmp(str
,"yes") == 0 ) ? 'Y' : 'N' ;
116 /*****************************************************************************
117 * fonction tlf_treatname() *
118 *****************************************************************************/
119 char *tlf_treatname(char *str
)
126 /* enlevement de '"' */
129 while (name
[i
] != '\0') {
137 return namealloc (ss
);
140 /*****************************************************************************
141 * fonction tlf_getlibname() *
142 *****************************************************************************/
143 char *tlf_getlibname(void)
145 return LIBRARY_TLF_NAME
;
148 /****************************************************************************
149 * fonction tlf_multout() *
150 *****************************************************************************/
151 /* appelee quand on a detecte plusieurs sorties de latch/registre */
152 short tlf_multout(lofig_list
**lofig
, cbhcomb
**comb
, cbhseq
**seq
,
158 if (TLF_TRACE_MODE
== 'Y')
159 fprintf(stderr
,"WARNING: multiple output for latch/register in cell %s\n", cname
);
170 for ( lc
= (*lofig
)->LOCON
; lc
; lc
= lc
->NEXT
)
171 if ((c
= cbh_getcombfromlocon(lc
)))
172 cbh_delcombtolocon(lc
);
173 *lofig
= (*lofig
)->NEXT
;
179 /*----------------------------------------------------------------------------*/
181 /* Affiche tous les champs DATA de la liste chainee passee en argument */
182 /*----------------------------------------------------------------------------*/
183 void tlf_affchain(chain_list
*p
, char *format
, char type
)
187 for(d
=p
; d
!= NULL
; d
=d
->NEXT
) {
188 if(type
== TYPE_STRING
)
189 printf(format
, (char *)(d
->DATA
));
190 else if(type
== TYPE_FLOAT
)
191 printf(format
, *((float *)(d
->DATA
)));
196 /*----------------------------------------------------------------------------*/
197 /* LOOKINGFORLOOP: */
199 /*----------------------------------------------------------------------------*/
200 short tlf_lookingForExpr(chain_list
*ch
, char *expr
)
205 p
= supportChain_listExpr(ch
);
207 for(c
=p
; c
!= NULL
; c
=c
->NEXT
) {
208 if(!strcasecmp(c
->DATA
,expr
))
216 /*----------------------------------------------------------------------------*/
219 /*----------------------------------------------------------------------------*/
220 chain_list
*tlf_replaceInAbl(chain_list
*abl
, char *oldExpr
, char *newExpr
)
222 chain_list
*newabl
, *expr
;
224 expr
= createAtom(newExpr
);
226 newabl
= substExpr(abl
,oldExpr
,expr
);