1 /****************************************************************************** 2 * veriuser.h 3 * 4 * IEEE 1364 1995 Verilog HDL Programming Language Interface (PLI). 5 * 6 * This file contains the constant definitions, structure definitions, and 7 * routine declarations used by the Verilog PLI procedural interface TF 8 * task/function routines. 9 * 10 * The file should be included with all C routines that use the PLI 11 * task/function routines. 12 ******************************************************************************/ 13 #ifndef VERIUSER_H 14 #define VERIUSER_H 15 16 /*---------------------------------------------------------------------------*/ 17 /*------------------------------- definitions -------------------------------*/ 18 /*---------------------------------------------------------------------------*/ 19 20 /*----------------------------- general defines -----------------------------*/ 21 #define bool int 22 #define true 1 23 #define TRUE 1 24 #define false 0 25 #define FALSE 0 26 #define null 0L 27 28 /*---------------------- defines for error interception ---------------------*/ 29 #define ERR_MESSAGE 1 30 #define ERR_WARNING 2 31 #define ERR_ERROR 3 32 #define ERR_INTERNAL 4 33 #define ERR_SYSTEM 5 34 35 /*-------------- values for reason parameter to misctf routines -------------*/ 36 37 #define reason_checktf 1 38 #define REASON_CHECKTF reason_checktf 39 #define reason_sizetf 2 40 #define REASON_SIZETF reason_sizetf 41 #define reason_calltf 3 42 #define REASON_CALLTF reason_calltf 43 #define reason_save 4 44 #define REASON_SAVE reason_save 45 #define reason_restart 5 46 #define REASON_RESTART reason_restart 47 #define reason_disable 6 48 #define REASON_DISABLE reason_disable 49 #define reason_paramvc 7 50 #define REASON_PARAMVC reason_paramvc 51 #define reason_synch 8 52 #define REASON_SYNCH reason_synch 53 #define reason_finish 9 54 #define REASON_FINISH reason_finish 55 #define reason_reactivate 10 56 #define REASON_REACTIVATE reason_reactivate 57 #define reason_rosynch 11 58 #define REASON_ROSYNCH reason_rosynch 59 #define reason_paramdrc 15 60 #define REASON_PARAMDRC reason_paramdrc 61 #define reason_endofcompile 16 62 #define REASON_ENDOFCOMPILE reason_endofcompile 63 #define reason_scope 17 64 #define REASON_SCOPE reason_scope 65 #define reason_interactive 18 66 #define REASON_INTERACTIVE reason_interactive 67 #define reason_reset 19 68 #define REASON_RESET reason_reset 69 #define reason_endofreset 20 70 #define REASON_ENDOFRESET reason_endofreset 71 #define reason_force 21 72 #define REASON_FORCE reason_force 73 #define reason_release 22 74 #define REASON_RELEASE reason_release 75 #define reason_startofsave 27 76 #define REASON_STARTOFSAVE reason_startofsave 77 #define reason_startofrestart 28 78 #define REASON_STARTOFRESTART reason_startofrestart 79 #define REASON_MAX 28 80 81 /*-- types used by tf_typep() and expr_type field in tf_exprinfo structure --*/ 82 #define tf_nullparam 0 83 #define TF_NULLPARAM tf_nullparam 84 #define tf_string 1 85 #define TF_STRING tf_string 86 #define tf_readonly 10 87 #define TF_READONLY tf_readonly 88 #define tf_readwrite 11 89 #define TF_READWRITE tf_readwrite 90 #define tf_rwbitselect 12 91 #define TF_RWBITSELECT tf_rwbitselect 92 #define tf_rwpartselect 13 93 #define TF_RWPARTSELECT tf_rwpartselect 94 #define tf_rwmemselect 14 95 #define TF_RWMEMSELECT tf_rwmemselect 96 #define tf_readonlyreal 15 97 #define TF_READONLYREAL tf_readonlyreal 98 #define tf_readwritereal 16 99 #define TF_READWRITEREAL tf_readwritereal 100 101 /*---------- types used by node_type field in tf_nodeinfo structure ---------*/ 102 #define tf_null_node 100 103 #define TF_NULL_NODE tf_null_node 104 #define tf_reg_node 101 105 #define TF_REG_NODE tf_reg_node 106 #define tf_integer_node 102 107 #define TF_INTEGER_NODE tf_integer_node 108 #define tf_time_node 103 109 #define TF_TIME_NODE tf_time_node 110 #define tf_netvector_node 104 111 #define TF_NETVECTOR_NODE tf_netvector_node 112 #define tf_netscalar_node 105 113 #define TF_NETSCALAR_NODE tf_netscalar_node 114 #define tf_memory_node 106 115 #define TF_MEMORY_NODE tf_memory_node 116 #define tf_real_node 107 117 #define TF_REAL_NODE tf_real_node 118 119 /*---------------------------------------------------------------------------*/ 120 /*-------------------------- structure definitions --------------------------*/ 121 /*---------------------------------------------------------------------------*/ 122 123 /*----- structure used with tf_exprinfo() to get expression information -----*/ 124 typedef struct t_tfexprinfo 125 { 126 short expr_type; 127 short padding; 128 struct t_vecval *expr_value_p; 129 double real_value; 130 char *expr_string; 131 int expr_ngroups; 132 int expr_vec_size; 133 int expr_sign; 134 int expr_lhs_select; 135 int expr_rhs_select; 136 } s_tfexprinfo, *p_tfexprinfo; 137 138 /*------- structure for use with tf_nodeinfo() to get node information ------*/ 139 typedef struct t_tfnodeinfo 140 { 141 short node_type; 142 short padding; 143 union 144 { 145 struct t_vecval *vecval_p; 146 struct t_strengthval *strengthval_p; 147 char *memoryval_p; 148 double *real_val_p; 149 } node_value; 150 char *node_symbol; 151 int node_ngroups; 152 int node_vec_size; 153 int node_sign; 154 int node_ms_index; 155 int node_ls_index; 156 int node_mem_size; 157 int node_lhs_element; 158 int node_rhs_element; 159 int *node_handle; 160 } s_tfnodeinfo, *p_tfnodeinfo; 161 162 /*--------------------- data structure of vector values ---------------------*/ 163 typedef struct t_vecval 164 { 165 int avalbits; 166 int bvalbits; 167 } s_vecval, *p_vecval; 168 169 /*--------------- data structure of scalar net strength values --------------*/ 170 typedef struct t_strengthval 171 { 172 int strength0; 173 int strength1; 174 } s_strengthval, *p_strengthval; 175 176 /*---------------------------------------------------------------------------*/ 177 /*--------------------------- routine definitions ---------------------------*/ 178 /*---------------------------------------------------------------------------*/ 179 #if defined(__STDC__) || defined(__cplusplus) 180 181 #ifndef PROTO_PARAMS 182 #define PROTO_PARAMS(params) params 183 #define DEFINED_PROTO_PARAMS 184 #endif 185 #ifndef EXTERN 186 #define EXTERN 187 #define DEFINED_EXTERN 188 #endif 189 190 #else 191 192 #ifndef PROTO_PARAMS 193 #define PROTO_PARAMS(params) (/* nothing */) 194 #define DEFINED_PROTO_PARAMS 195 #endif 196 #ifndef EXTERN 197 #define EXTERN extern 198 #define DEFINED_EXTERN 199 #endif 200 201 #endif /* __STDC__ */ 202 203 EXTERN void io_mcdprintf PROTO_PARAMS((int mcd, char *format, ...)); 204 EXTERN void io_printf PROTO_PARAMS((char *format, ...)); 205 EXTERN char *mc_scan_plusargs PROTO_PARAMS((char *plusarg)); 206 EXTERN void tf_add_long PROTO_PARAMS((int *aof_lowtime1, int *aof_hightime1, int lowtime2, int hightime2)); 207 EXTERN int tf_asynchoff PROTO_PARAMS((void)); 208 EXTERN int tf_asynchon PROTO_PARAMS((void)); 209 EXTERN int tf_clearalldelays PROTO_PARAMS((void)); 210 EXTERN int tf_compare_long PROTO_PARAMS((unsigned int low1, unsigned int high1, unsigned int low2, unsigned int high2)); 211 EXTERN int tf_copypvc_flag PROTO_PARAMS((int nparam)); 212 EXTERN void tf_divide_long PROTO_PARAMS((int *aof_low1, int *aof_high1, int low2, int high2)); 213 EXTERN int tf_dofinish PROTO_PARAMS((void)); 214 EXTERN int tf_dostop PROTO_PARAMS((void)); 215 EXTERN int tf_error PROTO_PARAMS((char *fmt, ...)); 216 EXTERN int tf_evaluatep PROTO_PARAMS((int pnum)); 217 EXTERN p_tfexprinfo tf_exprinfo PROTO_PARAMS((int pnum, p_tfexprinfo pinfo)); 218 EXTERN char *tf_getcstringp PROTO_PARAMS((int nparam)); 219 EXTERN char *tf_getinstance PROTO_PARAMS((void)); 220 EXTERN int tf_getlongp PROTO_PARAMS((int *aof_highvalue, int pnum)); 221 EXTERN int tf_getlongtime PROTO_PARAMS((int *aof_hightime)); 222 EXTERN int tf_getnextlongtime PROTO_PARAMS((int *aof_lowtime, int *aof_hightime)); 223 EXTERN int tf_getp PROTO_PARAMS((int pnum)); 224 EXTERN int tf_getpchange PROTO_PARAMS((int nparam)); 225 EXTERN double tf_getrealp PROTO_PARAMS((int pnum)); 226 EXTERN double tf_getrealtime PROTO_PARAMS((void)); 227 EXTERN int tf_gettime PROTO_PARAMS((void)); 228 EXTERN int tf_gettimeprecision PROTO_PARAMS((void)); 229 EXTERN int tf_gettimeunit PROTO_PARAMS((void)); 230 EXTERN char *tf_getworkarea PROTO_PARAMS((void)); 231 EXTERN int tf_iasynchoff PROTO_PARAMS((char *inst)); 232 EXTERN int tf_iasynchon PROTO_PARAMS((char *inst)); 233 EXTERN int tf_iclearalldelays PROTO_PARAMS((char *inst)); 234 EXTERN int tf_icopypvc_flag PROTO_PARAMS((int nparam, char *inst)); 235 EXTERN int tf_ievaluatep PROTO_PARAMS((int pnum, char *inst)); 236 EXTERN p_tfexprinfo tf_iexprinfo PROTO_PARAMS((int pnum, p_tfexprinfo pinfo, char *inst)); 237 EXTERN char *tf_igetcstringp PROTO_PARAMS((int nparam, char *inst)); 238 EXTERN int tf_igetlongp PROTO_PARAMS((int *aof_highvalue, int pnum, char *inst)); 239 EXTERN int tf_igetlongtime PROTO_PARAMS((int *aof_hightime, char *inst)); 240 EXTERN int tf_igetp PROTO_PARAMS((int pnum, char *inst)); 241 EXTERN int tf_igetpchange PROTO_PARAMS((int nparam, char *inst)); 242 EXTERN double tf_igetrealp PROTO_PARAMS((int pnum, char *inst)); 243 EXTERN double tf_igetrealtime PROTO_PARAMS((char *inst)); 244 EXTERN int tf_igettime PROTO_PARAMS((char *inst)); 245 EXTERN int tf_igettimeprecision PROTO_PARAMS((char *inst)); 246 EXTERN int tf_igettimeunit PROTO_PARAMS((char *inst)); 247 EXTERN char *tf_igetworkarea PROTO_PARAMS((char *inst)); 248 EXTERN char *tf_imipname PROTO_PARAMS((char *cell)); 249 EXTERN int tf_imovepvc_flag PROTO_PARAMS((int nparam, char *inst)); 250 EXTERN p_tfnodeinfo tf_inodeinfo PROTO_PARAMS((int pnum, p_tfnodeinfo pinfo, char *inst)); 251 EXTERN int tf_inump PROTO_PARAMS((char *inst)); 252 EXTERN int tf_ipropagatep PROTO_PARAMS((int pnum, char *inst)); 253 EXTERN int tf_iputlongp PROTO_PARAMS((int pnum, int lowvalue, int highvalue, char *inst)); 254 EXTERN int tf_iputp PROTO_PARAMS((int pnum, int value, char *inst)); 255 EXTERN int tf_iputrealp PROTO_PARAMS((int pnum, double value, char *inst)); 256 EXTERN int tf_irosynchronize PROTO_PARAMS((char *inst)); 257 EXTERN int tf_isetdelay PROTO_PARAMS((int delay, char *inst)); 258 EXTERN int tf_isetlongdelay PROTO_PARAMS((int lowdelay, int highdelay, char *inst)); 259 EXTERN int tf_isetrealdelay PROTO_PARAMS((double realdelay, char *inst)); 260 EXTERN int tf_isizep PROTO_PARAMS((int pnum, char *inst)); 261 EXTERN char *tf_ispname PROTO_PARAMS((char *cell)); 262 EXTERN int tf_istrdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int delay, int delaytype, char *inst)); 263 EXTERN char *tf_istrgetp PROTO_PARAMS((int pnum, int format_char, char *inst)); 264 EXTERN int tf_istrlongdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int lowdelay, int highdelay, int delaytype, char *inst)); 265 EXTERN int tf_istrrealdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, double realdelay, int delaytype, char *inst)); 266 EXTERN int tf_isynchronize PROTO_PARAMS((char *inst)); 267 EXTERN int tf_itestpvc_flag PROTO_PARAMS((int nparam, char *inst)); 268 EXTERN int tf_itypep PROTO_PARAMS((int pnum, char *inst)); 269 EXTERN void tf_long_to_real PROTO_PARAMS((int int_lo, int int_hi, double *aof_real)); 270 EXTERN char *tf_longtime_tostr PROTO_PARAMS((int lowtime, int hightime)); 271 EXTERN int tf_message PROTO_PARAMS((int level, char *facility, char *messno, char *message, ...)); 272 EXTERN char *tf_mipname PROTO_PARAMS((void)); 273 EXTERN int tf_movepvc_flag PROTO_PARAMS((int nparam)); 274 EXTERN void tf_multiply_long PROTO_PARAMS((int *aof_low1, int *aof_high1, int low2, int high2)); 275 EXTERN p_tfnodeinfo tf_nodeinfo PROTO_PARAMS((int pnum, p_tfnodeinfo pinfo)); 276 EXTERN int tf_nump PROTO_PARAMS((void)); 277 EXTERN int tf_propagatep PROTO_PARAMS((int pnum)); 278 EXTERN int tf_putlongp PROTO_PARAMS((int pnum, int lowvalue, int highvalue)); 279 EXTERN int tf_putp PROTO_PARAMS((int pnum, int value)); 280 EXTERN int tf_putrealp PROTO_PARAMS((int pnum, double value)); 281 EXTERN int tf_read_restart PROTO_PARAMS((char *blockptr, int blocklen)); 282 EXTERN void tf_real_to_long PROTO_PARAMS((double real, int *aof_int_lo, int *aof_int_hi)); 283 EXTERN int tf_rosynchronize PROTO_PARAMS((void)); 284 EXTERN void tf_scale_longdelay PROTO_PARAMS((char *cell, int delay_lo, int delay_hi, int *aof_delay_lo, int *aof_delay_hi)); 285 EXTERN void tf_scale_realdelay PROTO_PARAMS((char *cell, double realdelay, double *aof_realdelay)); 286 EXTERN int tf_setdelay PROTO_PARAMS((int delay)); 287 EXTERN int tf_setlongdelay PROTO_PARAMS((int lowdelay, int highdelay)); 288 EXTERN int tf_setrealdelay PROTO_PARAMS((double realdelay)); 289 EXTERN int tf_setworkarea PROTO_PARAMS((char *workarea)); 290 EXTERN int tf_sizep PROTO_PARAMS((int pnum)); 291 EXTERN char *tf_spname PROTO_PARAMS((void)); 292 EXTERN int tf_strdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int delay, int delaytype)); 293 EXTERN char *tf_strgetp PROTO_PARAMS((int pnum, int format_char)); 294 EXTERN char *tf_strgettime PROTO_PARAMS((void)); 295 EXTERN int tf_strlongdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, int lowdelay, int highdelay, int delaytype)); 296 EXTERN int tf_strrealdelputp PROTO_PARAMS((int nparam, int bitlength, int format_char, char *value_p, double realdelay, int delaytype)); 297 EXTERN void tf_subtract_long PROTO_PARAMS((int *aof_lowtime1, int *aof_hightime1, int lowtime2, int hightime2)); 298 EXTERN int tf_synchronize PROTO_PARAMS((void)); 299 EXTERN int tf_testpvc_flag PROTO_PARAMS((int nparam)); 300 EXTERN int tf_text PROTO_PARAMS((char *fmt, ...)); 301 EXTERN int tf_typep PROTO_PARAMS((int pnum)); 302 EXTERN void tf_unscale_longdelay PROTO_PARAMS((char *cell, int delay_lo, int delay_hi, int *aof_delay_lo, int *aof_delay_hi)); 303 EXTERN void tf_unscale_realdelay PROTO_PARAMS((char *cell, double realdelay, double *aof_realdelay)); 304 EXTERN int tf_warning PROTO_PARAMS((char *fmt, ...)); 305 EXTERN int tf_write_save PROTO_PARAMS((char *blockptr, int blocklen)); 306 307 #ifdef DEFINED_PROTO_PARAMS 308 #undef DEFINED_PROTO_PARAMS 309 #undef PROTO_PARAMS 310 #endif 311 312 #ifdef DEFINED_EXTERN 313 #undef DEFINED_EXTERN 314 #undef EXTERN 315 #endif 316 317 #endif /* VERIUSER_H */ 318