📄 vpi_user.h
字号:
struct t_vpi_time *time; /* time value */ struct t_vpi_vecval *vector; /* vector value */ struct t_vpi_strengthval *strength; /* strength value */ PLI_BYTE8 *misc; /* ...other */ } value;} s_vpi_value, *p_vpi_value;/* value formats */#define vpiBinStrVal 1#define vpiOctStrVal 2#define vpiDecStrVal 3#define vpiHexStrVal 4#define vpiScalarVal 5#define vpiIntVal 6#define vpiRealVal 7#define vpiStringVal 8#define vpiVectorVal 9#define vpiStrengthVal 10#define vpiTimeVal 11#define vpiObjTypeVal 12#define vpiSuppressVal 13/* delay modes */#define vpiNoDelay 1#define vpiInertialDelay 2#define vpiTransportDelay 3#define vpiPureTransportDelay 4/* force and release flags */#define vpiForceFlag 5#define vpiReleaseFlag 6/* scheduled event cancel flag */#define vpiCancelEvent 7/* bit mask for the flags argument to vpi_put_value() */#define vpiReturnEvent 0x1000/* scalar values */#define vpi0 0#define vpi1 1#define vpiZ 2#define vpiX 3#define vpiH 4#define vpiL 5#define vpiDontCare 6/*#define vpiNoChange 7 Defined under vpiTchkType, but can be used here.*//*********************** system task/function structure ***********************/typedef struct t_vpi_systf_data{ PLI_INT32 type; /* vpiSysTask, vpiSysFunc */ PLI_INT32 sysfunctype; /* vpiSysTask, vpi[Int,Real,Time,Sized, SizedSigned]Func */ PLI_BYTE8 *tfname; /* first character must be '$' */ PLI_INT32 (*calltf)(PLI_BYTE8 *); PLI_INT32 (*compiletf)(PLI_BYTE8 *); PLI_INT32 (*sizetf)(PLI_BYTE8 *); /* for sized function callbacks only */ PLI_BYTE8 *user_data;} s_vpi_systf_data, *p_vpi_systf_data;#define vpiSysTask 1#define vpiSysFunc 2/* the subtypes are defined under the vpiFuncType property *//****************** Verilog execution information structure *******************/typedef struct t_vpi_vlog_info{ PLI_INT32 argc; PLI_BYTE8 **argv; PLI_BYTE8 *product; PLI_BYTE8 *version;} s_vpi_vlog_info, *p_vpi_vlog_info;/*********************** PLI error information structure **********************/typedef struct t_vpi_error_info{ PLI_INT32 state; /* vpi[Compile,PLI,Run] */ PLI_INT32 level; /* vpi[Notice,Warning,Error,System,Internal] */ PLI_BYTE8 *message; PLI_BYTE8 *product; PLI_BYTE8 *code; PLI_BYTE8 *file; PLI_INT32 line;} s_vpi_error_info, *p_vpi_error_info;/* state when error occurred */#define vpiCompile 1#define vpiPLI 2#define vpiRun 3/* error severity levels */#define vpiNotice 1#define vpiWarning 2#define vpiError 3#define vpiSystem 4#define vpiInternal 5/**************************** callback structures *****************************//* normal callback structure */typedef struct t_cb_data{ PLI_INT32 reason; /* callback reason */ PLI_INT32 (*cb_rtn)(struct t_cb_data *); /* call routine */ vpiHandle obj; /* trigger object */ p_vpi_time time; /* callback time */ p_vpi_value value; /* trigger object value */ PLI_INT32 index; /* index of the memory word or var select that changed */ PLI_BYTE8 *user_data;} s_cb_data, *p_cb_data;/****************************** CALLBACK REASONS ******************************//***************************** Simulation related *****************************/#define cbValueChange 1#define cbStmt 2#define cbForce 3#define cbRelease 4/******************************** Time related ********************************/#define cbAtStartOfSimTime 5#define cbReadWriteSynch 6#define cbReadOnlySynch 7#define cbNextSimTime 8#define cbAfterDelay 9/******************************* Action related *******************************/#define cbEndOfCompile 10#define cbStartOfSimulation 11#define cbEndOfSimulation 12#define cbError 13#define cbTchkViolation 14#define cbStartOfSave 15#define cbEndOfSave 16#define cbStartOfRestart 17#define cbEndOfRestart 18#define cbStartOfReset 19#define cbEndOfReset 20#define cbEnterInteractive 21#define cbExitInteractive 22#define cbInteractiveScopeChange 23#define cbUnresolvedSystf 24/**************************** Added with 1364-2001 ****************************/#define cbAssign 25#define cbDeassign 26#define cbDisable 27#define cbPLIError 28#define cbSignal 29/**************************** FUNCTION DECLARATIONS ***************************//* callback related */XXTERN vpiHandle vpi_register_cb PROTO_PARAMS((p_cb_data cb_data_p));XXTERN PLI_INT32 vpi_remove_cb PROTO_PARAMS((vpiHandle cb_obj));XXTERN void vpi_get_cb_info PROTO_PARAMS((vpiHandle object, p_cb_data cb_data_p));XXTERN vpiHandle vpi_register_systf PROTO_PARAMS((p_vpi_systf_data systf_data_p));XXTERN void vpi_get_systf_info PROTO_PARAMS((vpiHandle object, p_vpi_systf_data systf_data_p));/* for obtaining handles */XXTERN vpiHandle vpi_handle_by_name PROTO_PARAMS((PLI_BYTE8 *name, vpiHandle scope));XXTERN vpiHandle vpi_handle_by_index PROTO_PARAMS((vpiHandle object, PLI_INT32 indx));/* for traversing relationships */XXTERN vpiHandle vpi_handle PROTO_PARAMS((PLI_INT32 type, vpiHandle refHandle));XXTERN vpiHandle vpi_handle_multi PROTO_PARAMS((PLI_INT32 type, vpiHandle refHandle1, vpiHandle refHandle2, ... ));XXTERN vpiHandle vpi_iterate PROTO_PARAMS((PLI_INT32 type, vpiHandle refHandle));XXTERN vpiHandle vpi_scan PROTO_PARAMS((vpiHandle iterator));/* for processing properties */XXTERN PLI_INT32 vpi_get PROTO_PARAMS((PLI_INT32 property, vpiHandle object));XXTERN PLI_BYTE8 *vpi_get_str PROTO_PARAMS((PLI_INT32 property, vpiHandle object));/* delay processing */XXTERN void vpi_get_delays PROTO_PARAMS((vpiHandle object, p_vpi_delay delay_p));XXTERN void vpi_put_delays PROTO_PARAMS((vpiHandle object, p_vpi_delay delay_p));/* value processing */XXTERN void vpi_get_value PROTO_PARAMS((vpiHandle expr, p_vpi_value value_p));XXTERN vpiHandle vpi_put_value PROTO_PARAMS((vpiHandle object, p_vpi_value value_p, p_vpi_time time_p, PLI_INT32 flags));/* time processing */XXTERN void vpi_get_time PROTO_PARAMS((vpiHandle object, p_vpi_time time_p));/* I/O routines */XXTERN PLI_UINT32 vpi_mcd_open PROTO_PARAMS((PLI_BYTE8 *fileName));XXTERN PLI_UINT32 vpi_mcd_close PROTO_PARAMS((PLI_UINT32 mcd));XXTERN PLI_BYTE8 *vpi_mcd_name PROTO_PARAMS((PLI_UINT32 cd));XXTERN PLI_INT32 vpi_mcd_printf PROTO_PARAMS((PLI_UINT32 mcd, PLI_BYTE8 *format, ...));XXTERN PLI_INT32 vpi_printf PROTO_PARAMS((PLI_BYTE8 *format, ...));/* utility routines */XXTERN PLI_INT32 vpi_compare_objects PROTO_PARAMS((vpiHandle object1, vpiHandle object2));XXTERN PLI_INT32 vpi_chk_error PROTO_PARAMS((p_vpi_error_info error_info_p));XXTERN PLI_INT32 vpi_free_object PROTO_PARAMS((vpiHandle object));XXTERN PLI_INT32 vpi_get_vlog_info PROTO_PARAMS((p_vpi_vlog_info vlog_info_p));/* routines added with 1364-2001 */XXTERN PLI_INT32 vpi_get_data PROTO_PARAMS((PLI_INT32 id, PLI_BYTE8 *dataLoc, PLI_INT32 numOfBytes));XXTERN PLI_INT32 vpi_put_data PROTO_PARAMS((PLI_INT32 id, PLI_BYTE8 *dataLoc, PLI_INT32 numOfBytes));XXTERN void *vpi_get_userdata PROTO_PARAMS((vpiHandle obj));XXTERN PLI_INT32 vpi_put_userdata PROTO_PARAMS((vpiHandle obj, void *userdata));XXTERN PLI_INT32 vpi_vprintf PROTO_PARAMS((PLI_BYTE8 *format, va_list ap));XXTERN PLI_INT32 vpi_mcd_vprintf PROTO_PARAMS((PLI_UINT32 mcd, PLI_BYTE8 *format, va_list ap));XXTERN PLI_INT32 vpi_flush PROTO_PARAMS((void));XXTERN PLI_INT32 vpi_mcd_flush PROTO_PARAMS((PLI_UINT32 mcd));XXTERN PLI_INT32 vpi_control PROTO_PARAMS((PLI_INT32 operation, ...));XXTERN vpiHandle vpi_handle_by_multi_index PROTO_PARAMS((vpiHandle obj, PLI_INT32 num_index, PLI_INT32 *index_array));/****************************** GLOBAL VARIABLES ******************************/PLI_VEXTERN PLI_DLLESPEC void (*vlog_startup_routines[])(); /* array of function pointers, last pointer should be null */#undef PLI_EXTERN#undef PLI_VEXTERN#ifdef VPI_USER_DEFINED_DLLISPEC#undef VPI_USER_DEFINED_DLLISPEC#undef PLI_DLLISPEC#endif#ifdef VPI_USER_DEFINED_DLLESPEC#undef VPI_USER_DEFINED_DLLESPEC#undef PLI_DLLESPEC#endif#ifdef PLI_PROTOTYPES#undef PLI_PROTOTYPES#undef PROTO_PARAMS#undef XXTERN#undef EETERN#endif#ifdef __cplusplus}#endif#endif /* VPI_USER_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -