1 /****************************************************************************/
3 /* Chaine de CAO & VLSI AVERTEC */
5 /* Produit : SPF Version 1.00 */
6 /* Fichier : spf_annot.c */
8 /* (c) copyright 2000 AVERTEC */
9 /* Tous droits reserves */
11 /* Auteur(s) : Gilles Augustins */
13 /****************************************************************************/
15 /****************************************************************************/
17 /****************************************************************************/
20 #include "spf_annot.h"
21 #include "spf_actions.h"
24 /****************************************************************************/
26 /****************************************************************************/
28 lofig_list
*spf_Lofig
;
32 /****************************************************************************/
34 /****************************************************************************/
36 extern int spfparse() ;
38 extern int spf_missing_signals
;
39 int /*SPF_KEEPM, SPF_KEEPX,*/ SPF_PREVERSE_RC
, SPF_CARDS
;
41 /****************************************************************************/
43 /****************************************************************************/
45 static void spf_checkenv()
48 int SPF_KEEPM
, SPF_KEEPX
;
49 mbk_options_pack_struct spf_device_opack
[] = {
50 {"Transistor", KEEP__TRANSISTOR
},
51 {"Resistance", KEEP__RESISTANCE
},
52 {"Instance", KEEP__INSTANCE
},
53 {"Capacitance", KEEP__CAPA
},
54 {"Diode", KEEP__DIODE
},
65 SPF_KEEPM
=V_BOOL_TAB
[__ANNOT_KEEP_M
].VALUE
;
66 SPF_KEEPX
=V_BOOL_TAB
[__ANNOT_KEEP_X
].VALUE
;
67 SPF_PREVERSE_RC
=V_BOOL_TAB
[__DSPF_PRESERVE_RC
].VALUE
;
70 mbk_ReadFlags (__ANNOT_KEEP_CARDS
, spf_device_opack
,
71 sizeof (spf_device_opack
) / sizeof (*spf_device_opack
), 1, 0);
75 if (SPF_CARDS
& KEEP__NONE
)
78 if (SPF_CARDS
& KEEP__TRANSISTOR
) SPF_KEEPM
=1; else SPF_KEEPM
=0;
79 if (SPF_CARDS
& KEEP__INSTANCE
) SPF_KEEPX
=1; else SPF_KEEPX
=0;
83 if (SPF_KEEPM
) SPF_CARDS
|=KEEP__TRANSISTOR
;
84 if (SPF_KEEPX
) SPF_CARDS
|=KEEP__INSTANCE
;
89 void spf_Annotate(lofig_list
*ptlofig
)
96 if ((spfin
= mbkfopen(ptlofig
->NAME
, IN_PARASITICS
, READ_TEXT
))!=NULL
)
100 sprintf(buf
,"%s.%s",ptlofig
->NAME
, IN_PARASITICS
);
103 // spf_destroyexistingRC(spf_Lofig);
104 spf_initBUSDelimiters("", ""); // no delimiter
105 spf_setDelimiter('.');
107 spf_missing_signals
=0;
111 spf_destroy_lotrs_htable();
112 spf_destroy_loins_htable();
113 spf_destroy_losig_htable();
114 spf_finish_pending_capacitances();
116 if (spf_missing_signals
>0)
118 avt_errmsg(SPF_ERRMSG
, "021", AVT_WARNING
, spf_missing_signals
);
120 spf_checklofigsignal(spf_Lofig
);
122 mbk_commit_errors(spf_ParsedFile
);
126 void parsespf(char *filename
)
133 if ((spfin
= mbkfopen(filename
, NULL
, READ_TEXT
))!=NULL
)
137 if ((fp
=filepath(filename
, NULL
))!=NULL
)
138 strcpy(buf
,filepath(filename
, NULL
));
140 strcpy(buf
,filename
);
143 // spf_destroyexistingRC(spf_Lofig);
144 spf_initBUSDelimiters("", ""); // no delimiter
145 spf_setDelimiter('.');
147 spf_missing_signals
=0;
151 spf_destroy_lotrs_htable();
152 spf_destroy_loins_htable();
153 spf_destroy_losig_htable();
154 spf_finish_pending_capacitances();
156 if (spf_missing_signals
>0)
158 avt_errmsg(SPF_ERRMSG
, "021", AVT_WARNING
, spf_missing_signals
);
160 spf_checklofigsignal(spf_Lofig
);
162 mbk_commit_errors(spf_ParsedFile
);
165 avt_errmsg(SPF_ERRMSG
, "024", AVT_FATAL
, filename
);