⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpi_user.h

📁 本電子檔為 verilog cookbook,包含了通訊,影像,DSP等重要常用之verilog編碼,可作為工程師與初學者的參考手冊
💻 H
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************* * 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 + -