[18] | 1 | /* |
---|
| 2 | |
---|
| 3 | Copyright (c) 1992, 1993 |
---|
| 4 | Regents of the University of California |
---|
| 5 | All rights reserved. |
---|
| 6 | |
---|
| 7 | Use and copying of this software and preparation of derivative works |
---|
| 8 | based upon this software are permitted. However, any distribution of |
---|
| 9 | this software or derivative works must include the above copyright |
---|
| 10 | notice. |
---|
| 11 | |
---|
| 12 | This software is made available AS IS, and neither the Electronics |
---|
| 13 | Research Laboratory or the Universify of California make any |
---|
| 14 | warranty about the software, its performance or its conformity to |
---|
| 15 | any specification. |
---|
| 16 | |
---|
| 17 | Author: Szu-Tsung Cheng, stcheng@ic.Berkeley.EDU |
---|
| 18 | 10/92 |
---|
| 19 | 10/93 |
---|
| 20 | |
---|
| 21 | $Id: vlr_int.h,v 1.6 2009/03/09 20:25:58 fabio Exp $ |
---|
| 22 | |
---|
| 23 | */ |
---|
| 24 | |
---|
| 25 | |
---|
| 26 | #define VL2MV_VERSION "2.1" |
---|
| 27 | |
---|
| 28 | #define MAXSTRLEN 16384 |
---|
| 29 | #define MAXBITNUM 32 |
---|
| 30 | #define ERR_CHK 1 |
---|
| 31 | #define ERR_COMPILE 2 |
---|
| 32 | #define ERR_INTERNAL 3 |
---|
| 33 | #define ERR_ASSERT 4 |
---|
| 34 | #define ERR_SEMANTIC 5 |
---|
| 35 | |
---|
| 36 | #define NODE "_n" |
---|
| 37 | #define PC "_pc" |
---|
| 38 | #define LABEL "_label" |
---|
| 39 | |
---|
| 40 | |
---|
| 41 | #define VL_NOND "$ND" |
---|
| 42 | |
---|
| 43 | #define SEP_LBITSELECT "<" |
---|
| 44 | #define SEP_RBITSELECT ">" |
---|
| 45 | #define SEP_LARRAY "<*" |
---|
| 46 | #define SEP_RARRAY "*>" |
---|
| 47 | #define SEP_LTRANGE "<<" |
---|
| 48 | #define SEP_RTRANGE ">>" |
---|
| 49 | #define SEP_GATEPIN "$" |
---|
| 50 | #define SEP_DIR "___" |
---|
| 51 | #define SEP_LATCH "_V_" |
---|
| 52 | #define SEP_QUASI "_Q_" |
---|
| 53 | #define SEP_SEL_VAR "+" |
---|
| 54 | #define PIN_INITIAL "initial" |
---|
| 55 | #define PIN_DELAYED "*" |
---|
| 56 | #define PIN_LATCH "lat" |
---|
| 57 | #define PIN_RAWOUT "raw" |
---|
| 58 | #define PIN_TRUE "true" |
---|
| 59 | #define PIN_FALSE "false" |
---|
| 60 | #define PIN_IN "in" |
---|
| 61 | #define PIN_PS "ps" |
---|
| 62 | #define PIN_NS "ns" |
---|
| 63 | #define PIN_FEEDBACK "@" |
---|
| 64 | #define PIN_DELAY "prev" |
---|
| 65 | #define PIN_EVENT "e" |
---|
| 66 | #define PIN_HIDDEN "*||*" |
---|
| 67 | #define PIN_INOUT "_IO_" |
---|
| 68 | |
---|
| 69 | |
---|
| 70 | #define HSIS_EQUAL "=" |
---|
| 71 | #define HSIS_ARROW "->" |
---|
| 72 | #define HSIS_DEFAULT ".def" |
---|
| 73 | #define HSIS_SET_BEGIN "(" |
---|
| 74 | #define HSIS_SET_END ")" |
---|
| 75 | #define HSIS_SET_SEP "," |
---|
| 76 | #define HSIS_BLIF_MVT_TIMER "T" |
---|
| 77 | #define HSIS_DELTA_TIMER "dD" |
---|
| 78 | #define HSIS_TIMER_SEP "&&" |
---|
| 79 | #define HSIS_COMMENT "#" |
---|
| 80 | #define HSIS_MODEL ".model" |
---|
| 81 | #define HSIS_TYPE "type" |
---|
| 82 | #define HSIS_MEMREAD "HSIS_READ_MEM" |
---|
| 83 | #define HSIS_MEMWRITE "HSIS_WRITE_MEM" |
---|
| 84 | #define HSIS_REGFILE "regfile" |
---|
| 85 | #define HSIS_ADDRESS "address" |
---|
| 86 | #define HSIS_VALUE "value" |
---|
| 87 | |
---|
| 88 | |
---|
| 89 | #define SMV_COMMENT "--" |
---|
| 90 | #define SMV_DEFINE "DEFINE" |
---|
| 91 | #define SMV_ASSIGN "ASSIGN" |
---|
| 92 | #define SMV_VAR "VAR" |
---|
| 93 | #define SMV_WIRE "WIRE" |
---|
| 94 | #define SMV_MODULE "MODULE" |
---|
| 95 | #define SMV_PROLOGUE "" |
---|
| 96 | #define SMV_EPILOGUE "" |
---|
| 97 | #define SMV_INPUT "INPUT" |
---|
| 98 | #define SMV_OUTPUT "OUTPUT" |
---|
| 99 | #define SMV_CLOCK "CLOCK" |
---|
| 100 | #define SMV_MEMORY "MEMORY" |
---|
| 101 | #define SMV_IF "if" |
---|
| 102 | #define SMV_COL_ASSIGN ":=" |
---|
| 103 | #define SMV_COLON ":" |
---|
| 104 | #define SMV_CMPL "~" |
---|
| 105 | #define SMV_NOT "!" |
---|
| 106 | #define SMV_AND "&" |
---|
| 107 | #define SMV_OR "|" |
---|
| 108 | #define SMV_XOR "^" |
---|
| 109 | #define SMV_MOD "mod" |
---|
| 110 | #define SMV_EQUIV "<->" |
---|
| 111 | #define SMV_IMP "->" |
---|
| 112 | #define SMV_EQUAL "=" |
---|
| 113 | #define SMV_NEQUAL "~=" |
---|
| 114 | #define SMV_LBRACE "{" |
---|
| 115 | #define SMV_RBRACE "}" |
---|
| 116 | #define SMV_LBRACKET "(" |
---|
| 117 | #define SMV_RBRACKET ")" |
---|
| 118 | #define SMV_COMMA "," |
---|
| 119 | #define SMV_RANGE ".." |
---|
| 120 | #define SMV_PLUS "+" |
---|
| 121 | #define SMV_MINUS "-" |
---|
| 122 | #define SMV_LE "<=" |
---|
| 123 | #define SMV_GE ">=" |
---|
| 124 | #define SMV_OF "of" |
---|
| 125 | #define SMV_ARRAY "array" |
---|
| 126 | #define SMV_BOOLEAN "boolean" |
---|
| 127 | #define SMV_FOR "for" |
---|
| 128 | #define SMV_PROCESS "process" |
---|
| 129 | #define SMV_INIT "init" |
---|
| 130 | #define SMV_TRANS "next" |
---|
| 131 | |
---|
| 132 | #define SMV_CASE "case {" |
---|
| 133 | #define SMV_ESAC "}" |
---|
| 134 | #define SMV_CTL_OP "AEFGUX" |
---|
| 135 | |
---|
| 136 | |
---|
| 137 | #define SMV_BIN_DC "{0,1}" |
---|
| 138 | #define SMV_INDEX "__SMV_index__" |
---|
| 139 | |
---|
| 140 | |
---|
| 141 | #define SCRATCH_FILE "gate.blif" |
---|
| 142 | #define OUT_SCRATCH "gate.o" |
---|
| 143 | #define SCRIPT_NAME "script.complement" |
---|
| 144 | #define SIS_LOG "sis.log" |
---|
| 145 | |
---|
| 146 | |
---|
| 147 | #define CLOCK "clk" |
---|
| 148 | |
---|
| 149 | |
---|
| 150 | #define NO_MUX 0x0 |
---|
| 151 | #define MUX_T 0x3 |
---|
| 152 | #define MUX_F 0x2 |
---|
| 153 | |
---|
| 154 | |
---|
| 155 | #define DEFAULT_MAX_TABLE_SIZE 1 |
---|
| 156 | |
---|
| 157 | |
---|
| 158 | #define MACRO_DEFINE "define" |
---|
| 159 | #define MACRO_IFDEF "ifdef" |
---|
| 160 | #define MACRO_IFNDEF "ifndef" |
---|
| 161 | #define MACRO_ELSE "else" |
---|
| 162 | #define MACRO_ENDIF "endif" |
---|
| 163 | |
---|
| 164 | |
---|
| 165 | |
---|
| 166 | |
---|
| 167 | |
---|
| 168 | #define BLIF_GND "_BLIF_GND" |
---|
| 169 | #define BLIF_SUP "_BLIF_SUP" |
---|
| 170 | #define BLIF_LIB_AND "_BLIF_AND" |
---|
| 171 | #define BLIF_LIB_OR "_BLIF_OR" |
---|
| 172 | #define BLIF_LIB_XOR "_BLIF_XOR" |
---|
| 173 | #define BLIF_LIB_XNOR "_BLIF_XNOR" |
---|
| 174 | #define BLIF_LIB_ADD "_BLIF_ADD" |
---|
| 175 | #define BLIF_LIB_SUB "_BLIF_SUB" |
---|
| 176 | |
---|
| 177 | |
---|
| 178 | #define LIB_MUX 0 |
---|
| 179 | |
---|
| 180 | #define SIG_ST(crt_module) (((crt_module)->type==ModDecl)? \ |
---|
| 181 | (((vl_module*)(crt_module))->sig_st): \ |
---|
| 182 | (((vl_function*)(crt_module))->sig_st)) |
---|
| 183 | #define YYTRACE(str) if (YYTrace) fprintf(stderr, "%s\n", str); |
---|
| 184 | #define CpyTRACE(str) if (CpyTrace) fprintf(stderr, " <Y>%s", str); |
---|
| 185 | #define CreTRACE(str) if (CreTrace) fprintf(stderr, " <C>%s", str); |
---|
| 186 | #define PrtTRACE(str) if (PrtTrace) fprintf(stderr, " <P>%s", str); |
---|
| 187 | #define StpTRACE(str) if (StpTrace) fprintf(stderr, " <S>%s", str); |
---|
| 188 | #define WrtTRACE(str) if (WrtTrace) fprintf(stderr, " <W>%s", str); |
---|
| 189 | #define TODO(str) \ |
---|
| 190 | {fprintf(stderr, "%d:not implemented (translation not precise)\n%s\n", yylineno, str); } |
---|
| 191 | #define ASSERT(cond,msg) if (!(cond)) {fprintf(stderr,"ASSERT Fail:%s\n",msg);} |
---|
| 192 | #define Assert(cond) if (!cond) {fprintf(stderr,"Assert fail: file \"%s\", line %d\n",__FILE__,__LINE__);exit(ERR_ASSERT);} |
---|
| 193 | |
---|
| 194 | #define ISVLCONST(type) ((type)==BitExpr||(type)==IntExpr||(type)==RealExpr) |
---|
| 195 | #define IS_VLR_REL_OP(type) ((type)==BgtExpr||(type)==BltExpr||(type)==BgeExpr||(type)==BleExpr) |
---|
| 196 | #define IS_VLR_LOG_OP(type) ((type)==BlandExpr||(type)==BlorExpr) |
---|
| 197 | #define ISREDUCTION(type) ((type)==UnandExpr||(type)==UnorExpr|| \ |
---|
| 198 | (type)==UxnorExpr||(type)==UandExpr|| \ |
---|
| 199 | (type)==UorExpr||(type)==UxorExpr) |
---|
| 200 | #define RIPPLE_INTERFERE(type) ((type)==UandExpr||(type)==UnandExpr|| \ |
---|
| 201 | (type)==UorExpr||(type)==UnorExpr|| \ |
---|
| 202 | (type)==UxorExpr||(type)==UxnorExpr|| \ |
---|
| 203 | (type)==BplusExpr||(type)==BminusExpr|| \ |
---|
| 204 | (type)==BltExpr||(type)==BleExpr|| \ |
---|
| 205 | (type)==BgtExpr||(type)==BgeExpr) |
---|
| 206 | #define IS_TRANSITION(sym) ((sym)==PrimR || (sym)==PrimF || (sym)==PrimS || \ |
---|
| 207 | (sym)==PrimBB|| (sym)==PrimQ0|| (sym)==PrimQ1|| \ |
---|
| 208 | (sym)==PrimQB|| (sym)==Prim0X|| (sym)==Prim1X|| \ |
---|
| 209 | (sym)==PrimX0|| (sym)==PrimX1|| (sym)==PrimXB|| \ |
---|
| 210 | (sym)==PrimBX) |
---|
| 211 | |
---|
| 212 | |
---|
| 213 | #if defined(_IBMR2) || defined(_snake) |
---|
| 214 | extern unsigned char yytext[]; |
---|
| 215 | #else |
---|
| 216 | extern char *yytext; |
---|
| 217 | #endif |
---|
| 218 | extern int yylineno; |
---|
| 219 | extern FILE *yyin; |
---|
| 220 | extern struct vl_desc *vl_description; |
---|
| 221 | extern struct vl_module *vl_currentModule; |
---|
| 222 | extern struct vl_primitive *vl_currentPrimitive; |
---|
| 223 | extern struct vl_function *vl_currentFunction; |
---|
| 224 | |
---|
| 225 | void yyerror ARGS((char *str)); |
---|
| 226 | |
---|
| 227 | int yywrap ARGS(()); |
---|
| 228 | void skipcommentblock ARGS(()); |
---|
| 229 | void skipcommentline ARGS(()); |
---|
| 230 | void binbin ARGS((char *, char *)); |
---|
| 231 | void octbin ARGS((char *, char *)); |
---|
| 232 | void decbin ARGS((char *, char *)); |
---|
| 233 | void hexbin ARGS((char *, char *)); |
---|
| 234 | char *utol ARGS((char *)); |
---|
| 235 | void memorize_macro ARGS((char *, st_table *)); |
---|
| 236 | void expand_macro ARGS((char *, st_table *)); |
---|
| 237 | |
---|
| 238 | |
---|
| 239 | void chk_error ARGS((char *)); |
---|
| 240 | char *chk_malloc ARGS((unsigned)); |
---|
| 241 | void vl_chk_free ARGS((lsGeneric)); |
---|
| 242 | char *vlStrdup ARGS((char *)); |
---|
| 243 | char *strappend ARGS((char*, char*)); |
---|
| 244 | char *strappendS ARGS((char*, char*)); |
---|
| 245 | char *WRT_BLIF_DC ARGS((FILE *)); |
---|
| 246 | char *WRT_BLIF_MV_DC ARGS((FILE *, lsList)); |
---|
| 247 | char *WRT_BLIF_GND ARGS((FILE *)); |
---|
| 248 | char *WRT_BLIF_SUP ARGS((FILE *)); |
---|
| 249 | vl_term *true_term ARGS((FILE *)); |
---|
| 250 | vl_term *false_term ARGS((FILE *)); |
---|
| 251 | int ptrcmp ARGS((const char *, const char *)); |
---|
| 252 | int ptrhash ARGS((char *, int)); |
---|
| 253 | int declcmp ARGS((char *, char *)); |
---|
| 254 | int declhash ARGS((char *, int)); |
---|
| 255 | char *strip_char ARGS((char *, char *)); |
---|
| 256 | FILE *open_file ARGS((char *, char *)); |
---|
| 257 | void close_file ARGS((FILE *)); |
---|
| 258 | char *num_to_binstr ARGS((int, int)); |
---|
| 259 | int min_bit_width ARGS((int)); |
---|
| 260 | char *sys_lib_encode ARGS((int, int, int)); |
---|
| 261 | char *lib_encode ARGS((int, int)); |
---|
| 262 | char *gen_lib_encode ARGS((int, lsList)); |
---|
| 263 | EXTERN int ipower ARGS((int, int)); |
---|
| 264 | char *basename ARGS((char *)); |
---|
| 265 | char *extname ARGS((char *)); |
---|