📄 vpi_user.h
字号:
/******************************************************************************* * vpi_user.h * * IEEE 1364-2005 Verilog HDL Programming Language Interface (PLI) * * This file contains the constant definitions, structure definitions, and * routine declarations used by the Verilog PLI procedural interface VPI * access routines. * ******************************************************************************//******************************************************************************* * NOTE: the constant values 1 through 299 are reserved for use in this * vpi_user.h file. ******************************************************************************/#ifndef VPI_USER_H#define VPI_USER_H#include <stdarg.h>#ifdef __cplusplusextern "C" {#endif/*----------------------------------------------------------------------------*//*----------------------------- Portability Help -----------------------------*//*----------------------------------------------------------------------------*//* Sized variables */#ifndef PLI_TYPES#define PLI_TYPEStypedef int PLI_INT32;typedef unsigned int PLI_UINT32;typedef short PLI_INT16;typedef unsigned short PLI_UINT16;typedef char PLI_BYTE8;typedef unsigned char PLI_UBYTE8;#endif/* Use to export a symbol */#if defined (_MSC_VER)#ifndef PLI_DLLISPEC#define PLI_DLLISPEC __declspec(dllimport)#define VPI_USER_DEFINED_DLLISPEC 1#endif#else#ifndef PLI_DLLISPEC#define PLI_DLLISPEC#endif#endif/* Use to import a symbol */#if defined (_MSC_VER)#ifndef PLI_DLLESPEC#define PLI_DLLESPEC __declspec(dllexport)#define VPI_USER_DEFINED_DLLESPEC 1#endif#else#ifndef PLI_DLLESPEC#define PLI_DLLESPEC#endif#endif/* Use to mark a function as external */#ifndef PLI_EXTERN#define PLI_EXTERN#endif/* Use to mark a variable as external */#ifndef PLI_VEXTERN#define PLI_VEXTERN extern#endif#ifndef PLI_PROTOTYPES#define PLI_PROTOTYPES#define PROTO_PARAMS(params) params/* object is defined imported by the application */#define XXTERN PLI_EXTERN PLI_DLLISPEC/* object is exported by the application */#define EETERN PLI_EXTERN PLI_DLLESPEC#endif/********************************** TYPEDEFS **********************************//*typedef PLI_UINT32 *vpiHandle; */typedef void *vpiHandle;/******************************** OBJECT TYPES ********************************/#define vpiAlways 1 /* always construct */#define vpiAssignStmt 2 /* quasi-continuous assignment */#define vpiAssignment 3 /* procedural assignment */#define vpiBegin 4 /* block statement */#define vpiCase 5 /* case statement */#define vpiCaseItem 6 /* case statement item */#define vpiConstant 7 /* numerical constant or literal string */#define vpiContAssign 8 /* continuous assignment */#define vpiDeassign 9 /* deassignment statement */#define vpiDefParam 10 /* defparam */#define vpiDelayControl 11 /* delay statement (e.g. #10) */#define vpiDisable 12 /* named block disable statement */#define vpiEventControl 13 /* wait on event, e.g. @e */#define vpiEventStmt 14 /* event trigger, e.g. ->e */#define vpiFor 15 /* for statement */#define vpiForce 16 /* force statement */#define vpiForever 17 /* forever statement */#define vpiFork 18 /* fork-join block */#define vpiFuncCall 19 /* HDL function call */#define vpiFunction 20 /* HDL function */#define vpiGate 21 /* primitive gate */#define vpiIf 22 /* if statement */#define vpiIfElse 23 /* if-else statement */#define vpiInitial 24 /* initial construct */#define vpiIntegerVar 25 /* integer variable */#define vpiInterModPath 26 /* intermodule wire delay */#define vpiIterator 27 /* iterator */#define vpiIODecl 28 /* input/output declaration */#define vpiMemory 29 /* behavioral memory */#define vpiMemoryWord 30 /* single word of memory */#define vpiModPath 31 /* module path for path delays */#define vpiModule 32 /* module instance */#define vpiNamedBegin 33 /* named block statement */#define vpiNamedEvent 34 /* event variable */#define vpiNamedFork 35 /* named fork-join block */#define vpiNet 36 /* scalar or vector net */#define vpiNetBit 37 /* bit of vector net */#define vpiNullStmt 38 /* a semicolon. Ie. #10 ; */#define vpiOperation 39 /* behavioral operation */#define vpiParamAssign 40 /* module parameter assignment */#define vpiParameter 41 /* module parameter */#define vpiPartSelect 42 /* part-select */#define vpiPathTerm 43 /* terminal of module path */#define vpiPort 44 /* module port */#define vpiPortBit 45 /* bit of vector module port */#define vpiPrimTerm 46 /* primitive terminal */#define vpiRealVar 47 /* real variable */#define vpiReg 48 /* scalar or vector reg */#define vpiRegBit 49 /* bit of vector reg */#define vpiRelease 50 /* release statement */#define vpiRepeat 51 /* repeat statement */#define vpiRepeatControl 52 /* repeat control in an assign stmt */#define vpiSchedEvent 53 /* vpi_put_value() event */#define vpiSpecParam 54 /* specparam */#define vpiSwitch 55 /* transistor switch */#define vpiSysFuncCall 56 /* system function call */#define vpiSysTaskCall 57 /* system task call */#define vpiTableEntry 58 /* UDP state table entry */#define vpiTask 59 /* HDL task */#define vpiTaskCall 60 /* HDL task call */#define vpiTchk 61 /* timing check */#define vpiTchkTerm 62 /* terminal of timing check */#define vpiTimeVar 63 /* time variable */#define vpiTimeQueue 64 /* simulation event queue */#define vpiUdp 65 /* user-defined primitive */#define vpiUdpDefn 66 /* UDP definition */#define vpiUserSystf 67 /* user defined system task or function */#define vpiVarSelect 68 /* variable array selection */#define vpiWait 69 /* wait statement */#define vpiWhile 70 /* while statement *//********************** object types added with 1364-2001 *********************/#define vpiAttribute 105 /* attribute of an object */#define vpiBitSelect 106 /* Bit-select of parameter, var select */#define vpiCallback 107 /* callback object */#define vpiDelayTerm 108 /* Delay term which is a load or driver */#define vpiDelayDevice 109 /* Delay object within a net */#define vpiFrame 110 /* reentrant task/func frame */#define vpiGateArray 111 /* gate instance array */#define vpiModuleArray 112 /* module instance array */#define vpiPrimitiveArray 113 /* vpiprimitiveArray type */#define vpiNetArray 114 /* multidimensional net */#define vpiRange 115 /* range declaration */#define vpiRegArray 116 /* multidimensional reg */#define vpiSwitchArray 117 /* switch instance array */#define vpiUdpArray 118 /* UDP instance array */#define vpiContAssignBit 128 /* Bit of a vector continuous assignment */#define vpiNamedEventArray 129 /* multidimensional named event *//********************** object types added with 1364-2005 *********************/#define vpiIndexedPartSelect 130 /* Indexed part-select object */#define vpiGenScopeArray 133 /* array of generated scopes */#define vpiGenScope 134 /* A generated scope */#define vpiGenVar 135 /* Object used to instantiate gen scopes *//*********************************** METHODS **********************************//**************** methods used to traverse 1 to 1 relationships ***************/#define vpiCondition 71 /* condition expression */#define vpiDelay 72 /* net or gate delay */#define vpiElseStmt 73 /* else statement */#define vpiForIncStmt 74 /* increment statement in for loop */#define vpiForInitStmt 75 /* initialization statement in for loop */#define vpiHighConn 76 /* higher connection to port */#define vpiLhs 77 /* left-hand side of assignment */#define vpiIndex 78 /* index of var select, bit-select, etc. */#define vpiLeftRange 79 /* left range of vector or part-select */#define vpiLowConn 80 /* lower connection to port */#define vpiParent 81 /* parent object */#define vpiRhs 82 /* right-hand side of assignment */#define vpiRightRange 83 /* right range of vector or part-select */#define vpiScope 84 /* containing scope object */#define vpiSysTfCall 85 /* task function call */#define vpiTchkDataTerm 86 /* timing check data term */#define vpiTchkNotifier 87 /* timing check notifier */#define vpiTchkRefTerm 88 /* timing check reference term *//************* methods used to traverse 1 to many relationships ***************/#define vpiArgument 89 /* argument to (system) task/function */#define vpiBit 90 /* bit of vector net or port */#define vpiDriver 91 /* driver for a net */#define vpiInternalScope 92 /* internal scope in module */#define vpiLoad 93 /* load on net or reg */#define vpiModDataPathIn 94 /* data terminal of a module path */#define vpiModPathIn 95 /* Input terminal of a module path */#define vpiModPathOut 96 /* output terminal of a module path */#define vpiOperand 97 /* operand of expression */#define vpiPortInst 98 /* connected port instance */#define vpiProcess 99 /* process in module */#define vpiVariables 100 /* variables in module */#define vpiUse 101 /* usage *//******** methods which can traverse 1 to 1, or 1 to many relationships *******/#define vpiExpr 102 /* connected expression */#define vpiPrimitive 103 /* primitive (gate, switch, UDP) */#define vpiStmt 104 /* statement in process or task *//************************ methods added with 1364-2001 ************************/#define vpiActiveTimeFormat 119 /* active $timeformat() system task */#define vpiInTerm 120 /* To get to a delay device's drivers. */#define vpiInstanceArray 121 /* vpiInstance arrays */#define vpiLocalDriver 122 /* local drivers (within a module */#define vpiLocalLoad 123 /* local loads (within a module */#define vpiOutTerm 124 /* To get to a delay device's loads. */#define vpiPorts 125 /* Module port */#define vpiSimNet 126 /* simulated net after collapsing */#define vpiTaskFunc 127 /* HDL task or function *//************************ methods added with 1364-2005 ************************/#define vpiBaseExpr 131 /* Indexed part-select's base expression */#define vpiWidthExpr 132 /* Indexed part-select's width expression *//********************************* PROPERTIES *********************************//************************** generic object properties *************************/#define vpiUndefined -1 /* undefined property */#define vpiType 1 /* type of object */#define vpiName 2 /* local name of object */#define vpiFullName 3 /* full hierarchical name */#define vpiSize 4 /* size of gate, net, port, etc. */#define vpiFile 5 /* File name in which the object is used*/#define vpiLineNo 6 /* line number where the object is used *//***************************** module properties ******************************/#define vpiTopModule 7 /* top-level module (boolean) */#define vpiCellInstance 8 /* cell (boolean) */#define vpiDefName 9 /* module definition name */#define vpiProtected 10 /* source protected module (boolean) */#define vpiTimeUnit 11 /* module time unit */#define vpiTimePrecision 12 /* module time precision */#define vpiDefNetType 13 /* default net type */#define vpiUnconnDrive 14 /* unconnected port drive strength */#define vpiHighZ 1 /* No default drive given */#define vpiPull1 2 /* default pull1 drive */#define vpiPull0 3 /* default pull0 drive */#define vpiDefFile 15 /* File name where the module is defined*/#define vpiDefLineNo 16 /* line number for module definition */#define vpiDefDelayMode 47 /* Default delay mode for a module */#define vpiDelayModeNone 1 /* no delay mode specified */#define vpiDelayModePath 2 /* path delay mode */#define vpiDelayModeDistrib 3 /* distributed delay mode */#define vpiDelayModeUnit 4 /* unit delay mode */#define vpiDelayModeZero 5 /* zero delay mode */#define vpiDelayModeMTM 6 /* min:typ:max delay mode */#define vpiDefDecayTime 48 /* Default decay time for a module *//*************************** port and net properties **************************/#define vpiScalar 17 /* scalar (boolean) */#define vpiVector 18 /* vector (boolean) */#define vpiExplicitName 19 /* port is explicitly named */#define vpiDirection 20 /* direction of port: */#define vpiInput 1 /* input */#define vpiOutput 2 /* output */#define vpiInout 3 /* inout */#define vpiMixedIO 4 /* mixed input-output */#define vpiNoDirection 5 /* no direction */#define vpiConnByName 21 /* connected by name (boolean) */#define vpiNetType 22 /* net subtypes: */#define vpiWire 1 /* wire net */#define vpiWand 2 /* wire-and net */#define vpiWor 3 /* wire-or net */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -