aboutsummaryrefslogtreecommitdiffstats
path: root/src/grt/vhpi_user.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/grt/vhpi_user.h')
-rw-r--r--src/grt/vhpi_user.h1212
1 files changed, 1212 insertions, 0 deletions
diff --git a/src/grt/vhpi_user.h b/src/grt/vhpi_user.h
new file mode 100644
index 000000000..c20e21f05
--- /dev/null
+++ b/src/grt/vhpi_user.h
@@ -0,0 +1,1212 @@
+/* --------------------------------------------------------------------
+/*
+/* Copyright 2019 IEEE P1076 WG Authors
+/*
+/* See the LICENSE file distributed with this work for copyright and
+/* licensing information and the AUTHORS file.
+/*
+/* This file to you under the Apache License, Version 2.0 (the "License").
+/* You may obtain a copy of the License at
+/*
+/* http://www.apache.org/licenses/LICENSE-2.0
+/*
+/* Unless required by applicable law or agreed to in writing, software
+/* distributed under the License is distributed on an "AS IS" BASIS,
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+/* implied. See the License for the specific language governing
+/* permissions and limitations under the License.
+/*
+/*
+/* Title : vhpi_user.h
+/* :
+/* Developers: IEEE P1076 Working Group, VHPI Task Force
+/* :
+/* Purpose : This header file describes the procedural interface
+/* : to access VHDL compiled, instantiated and run-time
+/* : data.It is derived from the UML model. For conformance
+/* : with the VHPI standard, a VHPI application or program
+/* : shall reference this header file.
+/* :
+/* Note : The contents of this file may be modified in an
+/* : implementation to provide implementation-defined
+/* : functionality, as described in B.3.
+/* :
+/* --------------------------------------------------------------------
+/* modification history :
+/* --------------------------------------------------------------------
+/* $Revision: 1315 $
+/* $Date: 2008-07-13 10:11:53 +0930 (Sun, 13 Jul 2008) $
+/* --------------------------------------------------------------------
+ */
+
+
+#ifndef VHPI_USER_H
+#define VHPI_USER_H
+#include <stddef.h>
+#include <stdarg.h>
+/* Ensure that size-critical types are defined on all OS platforms. */
+#if defined (_MSC_VER)
+typedef unsigned __int64 uint64_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int8 uint8_t;
+typedef signed __int64 int64_t;
+typedef signed __int32 int32_t;
+typedef signed __int8 int8_t;
+#elif defined(__MINGW32__)
+#include <stdint.h>
+#elif defined(__linux) || (defined(__APPLE__) && defined(__MACH__))
+#include <inttypes.h>
+#else
+#include <sys/types.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--------------------------------------------------------------------*/
+/*--------------------------- Portability Help -----------------------*/
+/*--------------------------------------------------------------------*/
+/* Use to export a symbol */
+#if defined (_MSC_VER)
+#ifndef PLI_DLLISPEC
+#define PLI_DLLISPEC __declspec(dllimport)
+#define VHPI_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 VHPI_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
+/* 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
+
+/* basic typedefs */
+#ifndef VHPI_TYPES
+#define VHPI_TYPES
+typedef uint32_t *vhpiHandleT;
+typedef uint32_t vhpiEnumT;
+typedef uint8_t vhpiSmallEnumT;
+typedef int32_t vhpiIntT;
+typedef int64_t vhpiLongIntT;
+typedef unsigned char vhpiCharT;
+typedef double vhpiRealT;
+typedef int32_t vhpiSmallPhysT;
+typedef struct vhpiPhysS
+{
+ int32_t high;
+ uint32_t low;
+} vhpiPhysT;
+
+/********************** time structure ****************************/
+typedef struct vhpiTimeS
+{
+ int32_t high;
+ uint32_t low;
+} vhpiTimeT;
+
+/********************** value structure **************************/
+
+/* value formats */
+typedef enum {
+ vhpiBinStrVal = 1, /* do not move */
+ vhpiOctStrVal = 2, /* do not move */
+ vhpiDecStrVal = 3, /* do not move */
+ vhpiHexStrVal = 4, /* do not move */
+ vhpiEnumVal = 5,
+ vhpiIntVal = 6,
+ vhpiLogicVal = 7,
+ vhpiRealVal = 8,
+ vhpiStrVal = 9,
+ vhpiCharVal = 10,
+ vhpiTimeVal = 11,
+ vhpiPhysVal = 12,
+ vhpiObjTypeVal = 13,
+ vhpiPtrVal = 14,
+ vhpiEnumVecVal = 15,
+ vhpiIntVecVal = 16,
+ vhpiLogicVecVal = 17,
+ vhpiRealVecVal = 18,
+ vhpiTimeVecVal = 19,
+ vhpiPhysVecVal = 20,
+ vhpiPtrVecVal = 21,
+ vhpiRawDataVal = 22,
+ vhpiSmallEnumVal = 23,
+ vhpiSmallEnumVecVal = 24,
+ vhpiLongIntVal = 25,
+ vhpiLongIntVecVal = 26,
+ vhpiSmallPhysVal = 27,
+ vhpiSmallPhysVecVal = 28
+
+#ifdef VHPIEXTEND_VAL_FORMATS
+ VHPIEXTEND_VAL_FORMATS
+#endif
+
+} vhpiFormatT;
+
+/* value structure */
+typedef struct vhpiValueS
+{
+ vhpiFormatT format; /* vhpi[Char,[Bin,Oct,Dec,Hex]Str,
+ [Small]Enum,Logic,Int,Real,
+ [Small]Phys,Time,Ptr,
+ [Small]EnumVec,LogicVec,IntVect,RealVec,
+ [Small]PhysVec,TimeVec,
+ PtrVec,ObjType,RawData]Val */
+ size_t bufSize; /* the size in bytes of the value buffer;
+ this is set by the user */
+ int32_t numElems;
+ /* different meanings depending on the format:
+ vhpiStrVal, vhpi{Bin...}StrVal: size of string
+ array type values: number of array elements
+ scalar type values: undefined
+ */
+
+ vhpiPhysT unit;
+ union
+ {
+ vhpiEnumT enumv, *enumvs;
+ vhpiSmallEnumT smallenumv, *smallenumvs;
+ vhpiIntT intg, *intgs;
+ vhpiLongIntT longintg, *longintgs;
+ vhpiRealT real, *reals;
+ vhpiSmallPhysT smallphys, *smallphyss;
+ vhpiPhysT phys, *physs;
+ vhpiTimeT time, *times;
+ vhpiCharT ch, *str;
+ void *ptr, **ptrs;
+ } value;
+} vhpiValueT;
+
+#endif
+
+/* Following are the constant definitions. They are divided into
+ three major areas:
+
+ 1) object types
+
+ 2) access methods
+
+ 3) properties
+
+*/
+#define vhpiUndefined -1
+
+/*************** OBJECT KINDS *******************/
+typedef enum {
+ vhpiAccessTypeDeclK = 1001,
+ vhpiAggregateK = 1002,
+ vhpiAliasDeclK = 1003,
+ vhpiAllK = 1004,
+ vhpiAllocatorK = 1005,
+ vhpiAnyCollectionK = 1006,
+ vhpiArchBodyK = 1007,
+ vhpiArgvK = 1008,
+ vhpiArrayTypeDeclK = 1009,
+ DEPRECATED_vhpiAssertStmtK = 1010,
+ vhpiAssocElemK = 1011,
+ vhpiAttrDeclK = 1012,
+ vhpiAttrSpecK = 1013,
+ DEPRECATED_vhpiBinaryExprK = 1014,
+ vhpiBitStringLiteralK = 1015,
+ vhpiBlockConfigK = 1016,
+ vhpiBlockStmtK = 1017,
+ vhpiBranchK = 1018,
+ vhpiCallbackK = 1019,
+ vhpiCaseStmtK = 1020,
+ vhpiCharLiteralK = 1021,
+ vhpiCompConfigK = 1022,
+ vhpiCompDeclK = 1023,
+ vhpiCompInstStmtK = 1024,
+ vhpiCondSigAssignStmtK = 1025,
+ vhpiCondWaveformK = 1026,
+ vhpiConfigDeclK = 1027,
+ vhpiConstDeclK = 1028,
+ vhpiConstParamDeclK = 1029,
+ vhpiConvFuncK = 1030,
+ vhpiDerefObjK = 1031,
+ vhpiDisconnectSpecK = 1032,
+ vhpiDriverK = 1033,
+ vhpiDriverCollectionK = 1034,
+ vhpiElemAssocK = 1035,
+ vhpiElemDeclK = 1036,
+ vhpiEntityClassEntryK = 1037,
+ vhpiEntityDeclK = 1038,
+ vhpiEnumLiteralK = 1039,
+ vhpiEnumRangeK = 1040,
+ vhpiEnumTypeDeclK = 1041,
+ vhpiExitStmtK = 1042,
+ vhpiFileDeclK = 1043,
+ vhpiFileParamDeclK = 1044,
+ vhpiFileTypeDeclK = 1045,
+ vhpiFloatRangeK = 1046,
+ vhpiFloatTypeDeclK = 1047,
+ vhpiForGenerateK = 1048,
+ vhpiForLoopK = 1049,
+ vhpiForeignfK = 1050,
+ vhpiFuncCallK = 1051,
+ vhpiFuncDeclK = 1052,
+ vhpiGenericDeclK = 1053,
+ vhpiGroupDeclK = 1054,
+ vhpiGroupTempDeclK = 1055,
+ vhpiIfGenerateK = 1056,
+ vhpiIfStmtK = 1057,
+ vhpiInPortK = 1058,
+ vhpiIndexedNameK = 1059,
+ vhpiIntLiteralK = 1060,
+ vhpiIntRangeK = 1061,
+ vhpiIntTypeDeclK = 1062,
+ vhpiIteratorK = 1063,
+ vhpiLibraryDeclK = 1064,
+ DEPRECATED_vhpiLoopStmtK = 1065,
+ vhpiNextStmtK = 1066,
+ vhpiNullLiteralK = 1067,
+ vhpiNullStmtK = 1068,
+ DEPRECATED_vhpiOperatorK = 1069,
+ vhpiOthersK = 1070,
+ vhpiOutPortK = 1071,
+ vhpiPackBodyK = 1072,
+ vhpiPackDeclK = 1073,
+ vhpiPackInstK = 1074,
+ vhpiParamAttrNameK = 1075,
+ vhpiPhysLiteralK = 1076,
+ vhpiPhysRangeK = 1077,
+ vhpiPhysTypeDeclK = 1078,
+ vhpiPortDeclK = 1079,
+ DEPRECATED_vhpiProcCallStmtK = 1080,
+ vhpiProcDeclK = 1081,
+ vhpiProcessStmtK = 1082,
+ DEPRECATED_vhpiProtectedTypeK = 1083,
+ vhpiProtectedTypeBodyK = 1084,
+ vhpiProtectedTypeDeclK = 1085,
+ vhpiRealLiteralK = 1086,
+ vhpiRecordTypeDeclK = 1087,
+ vhpiReportStmtK = 1088,
+ vhpiReturnStmtK = 1089,
+ vhpiRootInstK = 1090,
+ vhpiSelectSigAssignStmtK = 1091,
+ vhpiSelectWaveformK = 1092,
+ vhpiSelectedNameK = 1093,
+ vhpiSigDeclK = 1094,
+ vhpiSigParamDeclK = 1095,
+ vhpiSimpAttrNameK = 1096,
+ vhpiSimpleSigAssignStmtK = 1097,
+ vhpiSliceNameK = 1098,
+ vhpiStringLiteralK = 1099,
+ vhpiSubpBodyK = 1100,
+ vhpiSubtypeDeclK = 1101,
+ DEPRECATED_vhpiSubtypeIndicK = 1102,
+ vhpiToolK = 1103,
+ vhpiTransactionK = 1104,
+ vhpiTypeConvK = 1105,
+ DEPRECATED_vhpiUnaryExprK = 1106,
+ vhpiUnitDeclK = 1107,
+ vhpiUserAttrNameK = 1108,
+ vhpiVarAssignStmtK = 1109,
+ vhpiVarDeclK = 1110,
+ vhpiVarParamDeclK = 1111,
+ vhpiWaitStmtK = 1112,
+ vhpiWaveformElemK = 1113,
+ vhpiWhileLoopK = 1114,
+ vhpiQualifiedExprK = 1115,
+ vhpiUseClauseK = 1116,
+ vhpiConcAssertStmtK = 1117,
+ vhpiConcProcCallStmtK = 1118,
+ vhpiForeverLoopK = 1119,
+ vhpiSeqAssertStmtK = 1120,
+ vhpiSeqProcCallStmtK = 1121,
+ vhpiSeqSigAssignStmtK = 1122,
+ vhpiProtectedTypeInstK = 1123
+#ifdef VHPIEXTEND_CLASSES
+ VHPIEXTEND_CLASSES
+#endif
+ } vhpiClassKindT;
+
+/********* methods used to traverse 1 to 1 relationships **************/
+typedef enum {
+ vhpiAbstractLiteral = 1301,
+ vhpiActual = 1302,
+ vhpiAll = 1303,
+ vhpiAttrDecl = 1304,
+ vhpiAttrSpec = 1305,
+ vhpiBaseType = 1306,
+ vhpiBaseUnit = 1307,
+ DEPRECATED_vhpiBasicSignal = 1308,
+ vhpiBlockConfig = 1309,
+ vhpiCaseExpr = 1310,
+ vhpiCondExpr = 1311,
+ vhpiConfigDecl = 1312,
+ vhpiConfigSpec = 1313,
+ vhpiConstraint = 1314,
+ vhpiContributor = 1315,
+ vhpiCurCallback = 1316,
+ DEPRECATED_vhpiCurEqProcess = 1317,
+ vhpiCurStackFrame = 1318,
+ vhpiDerefObj = 1319,
+ DEPRECATED_vhpiDecl = 1320,
+ vhpiDesignUnit = 1321,
+ vhpiDownStack = 1322,
+ DEPRECATED_vhpiElemSubtype = 1323,
+ vhpiEntityAspect = 1324,
+ vhpiEntityDecl = 1325,
+ vhpiEqProcessStmt = 1326,
+ vhpiExpr = 1327,
+ vhpiFormal = 1328,
+ vhpiFuncDecl = 1329,
+ vhpiGroupTempDecl = 1330,
+ vhpiGuardExpr = 1331,
+ vhpiGuardSig = 1332,
+ vhpiImmRegion = 1333,
+ vhpiInPort = 1334,
+ vhpiInitExpr = 1335,
+ DEPRECATED_vhpiIterScheme = 1336,
+ vhpiLeftExpr = 1337,
+ vhpiLexicalScope = 1338,
+ vhpiLhsExpr = 1339,
+ vhpiLocal = 1340,
+ vhpiLogicalExpr = 1341,
+ DEPRECATED_vhpiName = 1342,
+ DEPRECATED_vhpiOperator = 1343,
+ vhpiOthers = 1344,
+ vhpiOutPort = 1345,
+ vhpiParamDecl = 1346,
+ DEPRECATED_vhpiParamExpr = 1347,
+ vhpiParent = 1348,
+ vhpiPhysLiteral = 1349,
+ vhpiPrefix = 1350,
+ vhpiPrimaryUnit = 1351,
+ vhpiProtectedTypeBody = 1352,
+ vhpiProtectedTypeDecl = 1353,
+ vhpiRejectTime = 1354,
+ vhpiReportExpr = 1355,
+ vhpiResolFunc = 1356,
+ vhpiReturnExpr = 1357,
+ DEPRECATED_vhpiReturnTypeMark = 1358,
+ vhpiRhsExpr = 1359,
+ vhpiRightExpr = 1360,
+ vhpiRootInst = 1361,
+ vhpiSelectExpr = 1362,
+ vhpiSeverityExpr = 1363,
+ vhpiSimpleName = 1364,
+ vhpiSubpBody = 1365,
+ vhpiSubpDecl = 1366,
+ DEPRECATED_vhpiSubtype = 1367,
+ vhpiSuffix = 1368,
+ vhpiTimeExpr = 1369,
+ vhpiTimeOutExpr = 1370,
+ vhpiTool = 1371,
+ vhpiType = 1372,
+ DEPRECATED_vhpiTypeMark = 1373,
+ vhpiUnitDecl = 1374,
+ vhpiUpStack = 1375,
+ vhpiUpperRegion = 1376,
+ vhpiUse = 1377,
+ vhpiValExpr = 1378,
+ DEPRECATED_vhpiValSubtype = 1379,
+ vhpiElemType = 1380,
+ vhpiFirstNamedType = 1381,
+ vhpiReturnType = 1382,
+ vhpiValType = 1383,
+ vhpiCurRegion = 1384,
+ vhpiSignal = 1385,
+ vhpiLibraryDecl = 1386,
+ vhpiSimNet = 1387,
+ vhpiAliasedName = 1388,
+ vhpiCompDecl = 1389,
+ vhpiProtectedTypeInst = 1390,
+ vhpiGenIndex = 1391
+
+#ifdef VHPIEXTEND_ONE_METHODS
+ VHPIEXTEND_ONE_METHODS
+
+#endif
+
+} vhpiOneToOneT;
+
+/******* methods used to traverse 1 to many relationships ************/
+typedef enum {
+ vhpiAliasDecls = 1501,
+ vhpiArgvs = 1502,
+ vhpiAttrDecls = 1503,
+ vhpiAttrSpecs = 1504,
+ vhpiBasicSignals = 1505,
+ vhpiBlockStmts = 1506,
+ vhpiBranchs = 1507,
+ /* 1508 */
+ vhpiChoices = 1509,
+ vhpiCompInstStmts = 1510,
+ DEPRECATED_vhpiCondExprs = 1511,
+ vhpiCondWaveforms = 1512,
+ vhpiConfigItems = 1513,
+ vhpiConfigSpecs = 1514,
+ vhpiConstDecls = 1515,
+ vhpiConstraints = 1516,
+ DEPRECATED_vhpiContributors = 1517,
+ /* 1518 */
+ vhpiDecls = 1519,
+ vhpiDepUnits = 1520,
+ vhpiDesignUnits = 1521,
+ vhpiDrivenSigs = 1522,
+ vhpiDrivers = 1523,
+ vhpiElemAssocs = 1524,
+ DEPRECATED_vhpiEntityClassEntrys = 1525,
+ vhpiEntityDesignators = 1526,
+ vhpiEnumLiterals = 1527,
+ vhpiForeignfs = 1528,
+ vhpiGenericAssocs = 1529,
+ vhpiGenericDecls = 1530,
+ vhpiIndexExprs = 1531,
+ vhpiIndexedNames = 1532,
+ vhpiInternalRegions = 1533,
+ vhpiMembers = 1534,
+ vhpiPackInsts = 1535,
+ vhpiParamAssocs = 1536,
+ vhpiParamDecls = 1537,
+ vhpiPortAssocs = 1538,
+ vhpiPortDecls = 1539,
+ vhpiRecordElems = 1540,
+ vhpiSelectWaveforms = 1541,
+ vhpiSelectedNames = 1542,
+ DEPRECATED_vhpiSensitivitys = 1543,
+ vhpiSeqStmts = 1544,
+ vhpiSigAttrs = 1545,
+ vhpiSigDecls = 1546,
+ vhpiSigNames = 1547,
+ vhpiSignals = 1548,
+ DEPRECATED_vhpiSpecNames = 1549,
+ vhpiSpecs = 1550,
+ vhpiStmts = 1551,
+ vhpiTransactions = 1552,
+ DEPRECATED_vhpiTypeMarks = 1553,
+ vhpiUnitDecls = 1554,
+ vhpiUses = 1555,
+ vhpiVarDecls = 1556,
+ vhpiWaveformElems = 1557,
+ vhpiLibraryDecls = 1558,
+ vhpiLocalLoads = 1559,
+ vhpiOptimizedLoads = 1560,
+ vhpiTypes = 1561,
+ vhpiUseClauses = 1562,
+ vhpiGenerateStmts = 1563,
+ vhpiLocalContributors = 1564,
+ vhpiOptimizedContributors = 1565,
+ vhpiParamExprs = 1566,
+ vhpiEqProcessStmts = 1567,
+ vhpiEntityClassEntries = 1568,
+ vhpiSensitivities = 1569
+
+#ifdef VHPIEXTEND_MANY_METHODS
+ VHPIEXTEND_MANY_METHODS
+#endif
+
+} vhpiOneToManyT;
+
+/* Note: The following macro is defined for compatibility with
+ prototype implementations that use the incorrectly spelled
+ enumeration value. The macro is deprecated and will be removed
+ in a future revision of the standard.
+*/
+#define vhpiSensitivitys DEPRECATED_vhpiSensitivitys
+
+
+/****************** PROPERTIES *******************/
+/******* INTEGER or BOOLEAN PROPERTIES **********/
+typedef enum {
+ vhpiAccessP = 1001,
+ vhpiArgcP = 1002,
+ vhpiAttrKindP = 1003,
+ vhpiBaseIndexP = 1004,
+ vhpiBeginLineNoP = 1005,
+ vhpiEndLineNoP = 1006,
+ vhpiEntityClassP = 1007,
+ vhpiForeignKindP = 1008,
+ vhpiFrameLevelP = 1009,
+ vhpiGenerateIndexP = 1010,
+ vhpiIntValP = 1011,
+ vhpiIsAnonymousP = 1012,
+ vhpiIsBasicP = 1013,
+ vhpiIsCompositeP = 1014,
+ vhpiIsDefaultP = 1015,
+ vhpiIsDeferredP = 1016,
+ vhpiIsDiscreteP = 1017,
+ vhpiIsForcedP = 1018,
+ vhpiIsForeignP = 1019,
+ vhpiIsGuardedP = 1020,
+ vhpiIsImplicitDeclP = 1021,
+ DEPRECATED_vhpiIsInvalidP = 1022,
+ vhpiIsLocalP = 1023,
+ vhpiIsNamedP = 1024,
+ vhpiIsNullP = 1025,
+ vhpiIsOpenP = 1026,
+ vhpiIsPLIP = 1027,
+ vhpiIsPassiveP = 1028,
+ vhpiIsPostponedP = 1029,
+ vhpiIsProtectedTypeP = 1030,
+ vhpiIsPureP = 1031,
+ vhpiIsResolvedP = 1032,
+ vhpiIsScalarP = 1033,
+ vhpiIsSeqStmtP = 1034,
+ vhpiIsSharedP = 1035,
+ vhpiIsTransportP = 1036,
+ vhpiIsUnaffectedP = 1037,
+ vhpiIsUnconstrainedP = 1038,
+ vhpiIsUninstantiatedP = 1039,
+ vhpiIsUpP = 1040,
+ vhpiIsVitalP = 1041,
+ vhpiIteratorTypeP = 1042,
+ vhpiKindP = 1043,
+ vhpiLeftBoundP = 1044,
+ DEPRECATED_vhpiLevelP = 1045,
+ vhpiLineNoP = 1046,
+ vhpiLineOffsetP = 1047,
+ vhpiLoopIndexP = 1048,
+ vhpiModeP = 1049,
+ vhpiNumDimensionsP = 1050,
+ DEPRECATED_vhpiNumFieldsP = 1051,
+ vhpiNumGensP = 1052,
+ vhpiNumLiteralsP = 1053,
+ vhpiNumMembersP = 1054,
+ vhpiNumParamsP = 1055,
+ vhpiNumPortsP = 1056,
+ vhpiOpenModeP = 1057,
+ vhpiPhaseP = 1058,
+ vhpiPositionP = 1059,
+ vhpiPredefAttrP = 1060,
+ /* 1061 */
+ vhpiReasonP = 1062,
+ vhpiRightBoundP = 1063,
+ vhpiSigKindP = 1064,
+ vhpiSizeP = 1065,
+ vhpiStartLineNoP = 1066,
+ vhpiStateP = 1067,
+ vhpiStaticnessP = 1068,
+ vhpiVHDLversionP = 1069,
+ vhpiIdP = 1070,
+ vhpiCapabilitiesP = 1071,
+ vhpiAutomaticRestoreP = 1072,
+ vhpiCompInstKindP = 1073,
+ vhpiIsBuiltInP = 1074,
+ vhpiIsDynamicP = 1075,
+ vhpiIsOperatorP = 1076,
+ vhpiNumFieldsP = 1077
+
+#ifdef VHPIEXTEND_INT_PROPERTIES
+ VHPIEXTEND_INT_PROPERTIES
+
+#endif
+
+} vhpiIntPropertyT;
+
+/******* STRING PROPERTIES **********/
+typedef enum {
+ vhpiCaseNameP = 1301,
+ vhpiCompNameP = 1302,
+ vhpiDefNameP = 1303,
+ vhpiFileNameP = 1304,
+ vhpiFullCaseNameP = 1305,
+ vhpiFullNameP = 1306,
+ vhpiKindStrP = 1307,
+ vhpiLabelNameP = 1308,
+ vhpiLibLogicalNameP = 1309,
+ vhpiLibPhysicalNameP = 1310,
+ vhpiLogicalNameP = 1311,
+ vhpiLoopLabelNameP = 1312,
+ vhpiNameP = 1313,
+ DEPRECATED_vhpiOpNameP = 1314,
+ vhpiStrValP = 1315,
+ vhpiToolVersionP = 1316,
+ vhpiUnitNameP = 1317,
+ vhpiSaveRestartLocationP = 1318,
+ vhpiCompInstNameP = 1319,
+ vhpiInstNamesP = 1320,
+ vhpiSignatureNameP = 1321,
+ vhpiSpecNameP = 1322
+
+#ifdef VHPIEXTEND_STR_PROPERTIES
+ VHPIEXTEND_STR_PROPERTIES
+
+#endif
+} vhpiStrPropertyT;
+
+/******* REAL PROPERTIES **********/
+typedef enum {
+ vhpiFloatLeftBoundP = 1601,
+ vhpiFloatRightBoundP = 1602,
+ vhpiRealValP = 1603
+
+#ifdef VHPIEXTEND_REAL_PROPERTIES
+ VHPIEXTEND_REAL_PROPERTIES
+#endif
+
+} vhpiRealPropertyT;
+
+/******* PHYSICAL PROPERTIES **********/
+typedef enum {
+ vhpiPhysLeftBoundP = 1651,
+ vhpiPhysPositionP = 1652,
+ vhpiPhysRightBoundP = 1653,
+ vhpiPhysValP = 1654,
+ DEPRECATED_vhpiPrecisionP = 1655,
+ DEPRECATED_vhpiSimTimeUnitP = 1656,
+ vhpiResolutionLimitP = 1657,
+ vhpiTimeP = 1658
+
+#ifdef VHPIEXTEND_PHYS_PROPERTIES
+ VHPIEXTEND_PHYS_PROPERTIES
+#endif
+
+} vhpiPhysPropertyT;
+
+/******************* PROPERTY VALUES ************************/
+
+/* vhpiCapabilitiesP */
+typedef enum {
+ vhpiProvidesHierarchy = 1,
+ vhpiProvidesStaticAccess = 2,
+ vhpiProvidesConnectivity = 4,
+ vhpiProvidesPostAnalysis = 8,
+ vhpiProvidesForeignModel = 16,
+ vhpiProvidesAdvancedForeignModel = 32,
+ vhpiProvidesSaveRestart = 64,
+ vhpiProvidesReset = 128,
+ vhpiProvidesDebugRuntime = 256,
+ vhpiProvidesAdvancedDebugRuntime = 512,
+ vhpiProvidesDynamicElab = 1024
+
+} vhpiCapabibilityT;
+
+
+/* vhpiOpenModeP */
+typedef enum {
+ vhpiInOpen = 1001,
+ vhpiOutOpen = 1002,
+ vhpiReadOpen = 1003,
+ vhpiWriteOpen = 1004,
+ vhpiAppendOpen = 1005
+} vhpiOpenModeT;
+
+/* vhpiModeP */
+typedef enum {
+ vhpiInMode = 1001,
+ vhpiOutMode = 1002,
+ vhpiInoutMode = 1003,
+ vhpiBufferMode = 1004,
+ vhpiLinkageMode = 1005
+} vhpiModeT;
+
+/* vhpiSigKindP */
+typedef enum {
+ vhpiRegister = 1001,
+ vhpiBus = 1002,
+ vhpiNormal = 1003
+} vhpiSigKindT;
+
+/* vhpiStaticnessP */
+typedef enum {
+ vhpiLocallyStatic = 1001,
+ vhpiGloballyStatic = 1002,
+ vhpiDynamic = 1003
+} vhpiStaticnessT;
+
+/* vhpiPredefAttrP */
+typedef enum {
+ vhpiActivePA = 1001,
+ vhpiAscendingPA = 1002,
+ vhpiBasePA = 1003,
+ vhpiDelayedPA = 1004,
+ vhpiDrivingPA = 1005,
+ vhpiDriving_valuePA= 1006,
+ vhpiEventPA = 1007,
+ vhpiHighPA = 1008,
+ vhpiImagePA = 1009,
+ vhpiInstance_namePA= 1010,
+ vhpiLast_activePA = 1011,
+ vhpiLast_eventPA = 1012,
+ vhpiLast_valuePA = 1013,
+ vhpiLeftPA = 1014,
+ vhpiLeftofPA = 1015,
+ vhpiLengthPA = 1016,
+ vhpiLowPA = 1017,
+ vhpiPath_namePA = 1018,
+ vhpiPosPA = 1019,
+ vhpiPredPA = 1020,
+ vhpiQuietPA = 1021,
+ vhpiRangePA = 1022,
+ vhpiReverse_rangePA= 1023,
+ vhpiRightPA = 1024,
+ vhpiRightofPA = 1025,
+ vhpiSimple_namePA = 1026,
+ vhpiStablePA = 1027,
+ vhpiSuccPA = 1028,
+ vhpiTransactionPA = 1029,
+ vhpiValPA = 1030,
+ vhpiValuePA = 1031
+} vhpiPredefAttrT;
+
+/* vhpiAttrKindP */
+typedef enum {
+ vhpiFunctionAK = 1,
+ vhpiRangeAK = 2,
+ vhpiSignalAK = 3,
+ vhpiTypeAK = 4,
+ vhpiValueAK = 5
+#ifdef VHPIEXTEND_ATTR
+ VHPIEXTEND_ATTR
+#endif
+} vhpiAttrKindT;
+
+/* vhpiEntityClassP */
+typedef enum {
+ vhpiEntityEC = 1001,
+ vhpiArchitectureEC = 1002,
+ vhpiConfigurationEC = 1003,
+ vhpiProcedureEC = 1004,
+ vhpiFunctionEC = 1005,
+ vhpiPackageEC = 1006,
+ vhpiTypeEC = 1007,
+ vhpiSubtypeEC = 1008,
+ vhpiConstantEC = 1009,
+ vhpiSignalEC = 1010,
+ vhpiVariableEC = 1011,
+ vhpiComponentEC = 1012,
+ vhpiLabelEC = 1013,
+ vhpiLiteralEC = 1014,
+ vhpiUnitsEC = 1015,
+ vhpiFileEC = 1016,
+ vhpiGroupEC = 1017
+} vhpiEntityClassT;
+
+/* vhpiAccessP */
+typedef enum {
+ vhpiRead = 1,
+ vhpiWrite = 2,
+ vhpiConnectivity = 4,
+ vhpiNoAccess = 8
+} vhpiAccessT;
+
+/* value for vhpiStateP property for callbacks */
+typedef enum {
+ vhpiEnable,
+ vhpiDisable,
+ vhpiMature /* callback has occurred */
+} vhpiStateT;
+/* enumeration type for vhpiCompInstKindP property */
+typedef enum {
+ vhpiDirect,
+ vhpiComp,
+ vhpiConfig
+} vhpiCompInstKindT;
+
+
+/* the following values are used only for the
+ vhpiResolutionLimitP property and for setting the unit field
+ of the value structure; they represent the physical position
+ of a given VHDL time unit */
+/* time unit physical position values {high, low} */
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiFS;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiPS;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiNS;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiUS;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiMS;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiS;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiMN;
+PLI_VEXTERN PLI_DLLISPEC const vhpiPhysT vhpiHR;
+
+/* IEEE std_logic values */
+#define vhpiU 0 /* uninitialized */
+#define vhpiX 1 /* unknown */
+#define vhpi0 2 /* forcing 0 */
+#define vhpi1 3 /* forcing 1 */
+#define vhpiZ 4 /* high impedance */
+#define vhpiW 5 /* weak unknown */
+#define vhpiL 6 /* weak 0 */
+#define vhpiH 7 /* weak 1 */
+#define vhpiDontCare 8 /* don't care */
+
+/* IEEE std bit values */
+#define vhpibit0 0 /* bit 0 */
+#define vhpibit1 1 /* bit 1 */
+
+/* IEEE std boolean values */
+#define vhpiFalse 0 /* false */
+#define vhpiTrue 1 /* true */
+
+/************** vhpiPhaseP property values *************/
+typedef enum {
+ vhpiRegistrationPhase = 1,
+ vhpiAnalysisPhase = 2,
+ vhpiElaborationPhase = 3,
+ vhpiInitializationPhase = 4,
+ vhpiSimulationPhase = 5,
+ vhpiTerminationPhase = 6,
+ vhpiSavePhase = 7,
+ vhpiRestartPhase = 8,
+ vhpiResetPhase = 9
+} vhpiPhaseT ;
+
+/**************** PLI error information structure ****************/
+
+typedef enum {
+ vhpiNote = 1,
+ vhpiWarning = 2,
+ vhpiError = 3,
+ vhpiFailure = 6,
+ vhpiSystem = 4,
+ vhpiInternal = 5
+} vhpiSeverityT;
+
+typedef struct vhpiErrorInfoS
+{
+ vhpiSeverityT severity;
+ char *message;
+ char *str;
+ char *file; /* Name of the VHDL file where the VHPI error
+ originated */
+ int32_t line; /* Line number in the VHDL file */
+} vhpiErrorInfoT;
+
+/********************* callback structures ************************/
+/* callback user data structure */
+
+typedef struct vhpiCbDataS
+{
+ int32_t reason; /* callback reason */
+ void (*cb_rtn) (const struct vhpiCbDataS *); /* call routine */
+ vhpiHandleT obj; /* trigger object */
+ vhpiTimeT *time; /* callback time */
+ vhpiValueT *value; /* trigger object value */
+ void *user_data; /* pointer to user data to be passed
+ to the callback function */
+} vhpiCbDataT;
+
+/************************* CALLBACK REASONS *************************/
+/*********************** Simulation object related ******************/
+/* These are repetitive callbacks */
+#define vhpiCbValueChange 1001
+#define vhpiCbForce 1002
+#define vhpiCbRelease 1003
+#define vhpiCbTransaction 1004 /* optional callback reason */
+
+/************************** Statement related ***********************/
+/* These are repetitive callbacks */
+#define vhpiCbStmt 1005
+#define vhpiCbResume 1006
+#define vhpiCbSuspend 1007
+#define vhpiCbStartOfSubpCall 1008
+#define vhpiCbEndOfSubpCall 1009
+
+/************************** Time related ****************************/
+/* the Rep callback reasons are the repeated versions
+ of the callbacks */
+
+#define vhpiCbAfterDelay 1010
+#define vhpiCbRepAfterDelay 1011
+
+/*********************** Simulation cycle phase related *************/
+#define vhpiCbNextTimeStep 1012
+#define vhpiCbRepNextTimeStep 1013
+#define vhpiCbStartOfNextCycle 1014
+#define vhpiCbRepStartOfNextCycle 1015
+#define vhpiCbStartOfProcesses 1016
+#define vhpiCbRepStartOfProcesses 1017
+#define vhpiCbEndOfProcesses 1018
+#define vhpiCbRepEndOfProcesses 1019
+#define vhpiCbLastKnownDeltaCycle 1020
+#define vhpiCbRepLastKnownDeltaCycle 1021
+#define vhpiCbStartOfPostponed 1022
+#define vhpiCbRepStartOfPostponed 1023
+#define vhpiCbEndOfTimeStep 1024
+#define vhpiCbRepEndOfTimeStep 1025
+
+/************************** Action related **************************/
+/* these are one time callback unless otherwise noted */
+#define vhpiCbStartOfTool 1026
+#define vhpiCbEndOfTool 1027
+#define vhpiCbStartOfAnalysis 1028
+#define vhpiCbEndOfAnalysis 1029
+#define vhpiCbStartOfElaboration 1030
+#define vhpiCbEndOfElaboration 1031
+#define vhpiCbStartOfInitialization 1032
+#define vhpiCbEndOfInitialization 1033
+#define vhpiCbStartOfSimulation 1034
+#define vhpiCbEndOfSimulation 1035
+#define vhpiCbQuiescense 1036 /* repetitive */
+#define vhpiCbPLIError 1037 /* repetitive */
+#define vhpiCbStartOfSave 1038
+#define vhpiCbEndOfSave 1039
+#define vhpiCbStartOfRestart 1040
+#define vhpiCbEndOfRestart 1041
+#define vhpiCbStartOfReset 1042
+#define vhpiCbEndOfReset 1043
+#define vhpiCbEnterInteractive 1044 /* repetitive */
+#define vhpiCbExitInteractive 1045 /* repetitive */
+#define vhpiCbSigInterrupt 1046 /* repetitive */
+
+/* Foreign model callbacks */
+#define vhpiCbTimeOut 1047 /* non repetitive */
+#define vhpiCbRepTimeOut 1048 /* repetitive */
+#define vhpiCbSensitivity 1049 /* repetitive */
+
+/************************* CALLBACK FLAGS ***************************/
+#define vhpiReturnCb 0x00000001
+#define vhpiDisableCb 0x00000010
+
+/************** vhpiAutomaticRestoreP property values *************/
+typedef enum {
+ vhpiRestoreAll = 1,
+ vhpiRestoreUserData = 2,
+ vhpiRestoreHandles = 4,
+ vhpiRestoreCallbacks = 8
+} vhpiAutomaticRestoreT ;
+
+
+/******************** FUNCTION DECLARATIONS *********************/
+
+XXTERN int vhpi_assert (vhpiSeverityT severity,
+ char *formatmsg,
+ ...);
+
+/* callback related */
+
+XXTERN vhpiHandleT vhpi_register_cb (vhpiCbDataT *cb_data_p,
+ int32_t flags);
+
+XXTERN int vhpi_remove_cb (vhpiHandleT cb_obj);
+
+XXTERN int vhpi_disable_cb (vhpiHandleT cb_obj);
+
+XXTERN int vhpi_enable_cb (vhpiHandleT cb_obj);
+
+XXTERN int vhpi_get_cb_info (vhpiHandleT object,
+ vhpiCbDataT *cb_data_p);
+
+/* utilities for sensitivity-set bitmaps */
+/* The replacement text for these macros is implementation defined */
+/* The behavior is specified in G.1 */
+#define VHPI_SENS_ZERO(sens) vhpi_sens_zero(sens)
+#define VHPI_SENS_SET(obj, sens) vhpi_sens_set(obj, sens)
+#define VHPI_SENS_CLR(obj, sens) vhpi_sens_clr(obj, sens)
+#define VHPI_SENS_ISSET(obj, sens) vhpi_sens_isset(obj, sens)
+#define VHPI_SENS_FIRST(sens) vhpi_sens_first(sens)
+
+/* for obtaining handles */
+
+XXTERN vhpiHandleT vhpi_handle_by_name (const char *name,
+ vhpiHandleT scope);
+
+XXTERN vhpiHandleT vhpi_handle_by_index (vhpiOneToManyT itRel,
+ vhpiHandleT parent,
+ int32_t indx);
+
+/* for traversing relationships */
+
+XXTERN vhpiHandleT vhpi_handle (vhpiOneToOneT type,
+ vhpiHandleT referenceHandle);
+
+XXTERN vhpiHandleT vhpi_iterator (vhpiOneToManyT type,
+ vhpiHandleT referenceHandle);
+
+XXTERN vhpiHandleT vhpi_scan (vhpiHandleT iterator);
+
+/* for processsing properties */
+
+XXTERN vhpiIntT vhpi_get (vhpiIntPropertyT property,
+ vhpiHandleT object);
+
+XXTERN const vhpiCharT * vhpi_get_str (vhpiStrPropertyT property,
+ vhpiHandleT object);
+
+XXTERN vhpiRealT vhpi_get_real (vhpiRealPropertyT property,
+ vhpiHandleT object);
+
+XXTERN vhpiPhysT vhpi_get_phys (vhpiPhysPropertyT property,
+ vhpiHandleT object);
+
+/* for access to protected types */
+
+typedef int (*vhpiUserFctT)();
+
+XXTERN int vhpi_protected_call (vhpiHandleT varHdl,
+ vhpiUserFctT userFct,
+ void *userData);
+
+/* value processing */
+
+/* vhpi_put_value modes */
+typedef enum {
+ vhpiDeposit,
+ vhpiDepositPropagate,
+ vhpiForce,
+ vhpiForcePropagate,
+ vhpiRelease,
+ vhpiSizeConstraint
+} vhpiPutValueModeT;
+
+typedef enum {
+ vhpiInertial,
+ vhpiTransport
+} vhpiDelayModeT;
+
+XXTERN int vhpi_get_value (vhpiHandleT expr,
+ vhpiValueT *value_p);
+
+XXTERN int vhpi_put_value (vhpiHandleT object,
+ vhpiValueT *value_p,
+ vhpiPutValueModeT mode);
+
+XXTERN int vhpi_schedule_transaction (vhpiHandleT drivHdl,
+ vhpiValueT *value_p,
+ uint32_t numValues,
+ vhpiTimeT *delayp,
+ vhpiDelayModeT delayMode,
+ vhpiTimeT *pulseRejp);
+
+XXTERN int vhpi_format_value (const vhpiValueT *in_value_p,
+ vhpiValueT *out_value_p);
+
+/* time processing */
+
+XXTERN void vhpi_get_time (vhpiTimeT *time_p,
+ long *cycles);
+
+#define vhpiNoActivity -1
+
+XXTERN int vhpi_get_next_time (vhpiTimeT *time_p);
+
+/* simulation control */
+
+typedef enum {
+ vhpiStop = 0,
+ vhpiFinish = 1,
+ vhpiReset = 2
+#ifdef VHPIEXTEND_CONTROL
+ VHPIEXTEND_CONTROL
+#endif
+} vhpiSimControlT;
+
+XXTERN int vhpi_control (vhpiSimControlT command,
+ ...);
+
+/* I/O routine */
+
+XXTERN int vhpi_printf (const char *format,
+ ...);
+XXTERN int vhpi_vprintf (const char *format, va_list args);
+
+/* utilities to print VHDL strings */
+
+XXTERN int vhpi_is_printable( char ch );
+
+
+/* utility routines */
+
+XXTERN int vhpi_compare_handles (vhpiHandleT handle1,
+ vhpiHandleT handle2);
+
+XXTERN int vhpi_check_error (vhpiErrorInfoT *error_info_p);
+
+XXTERN int vhpi_release_handle (vhpiHandleT object);
+
+/* creation functions */
+
+XXTERN vhpiHandleT vhpi_create (vhpiClassKindT kind,
+ vhpiHandleT handle1,
+ vhpiHandleT handle2);
+
+/* Foreign model data structures and functions */
+
+typedef enum {
+ vhpiArchF = 1,
+ vhpiFuncF = 2,
+ vhpiProcF = 3,
+ vhpiLibF = 4,
+ vhpiAppF = 5
+} vhpiForeignKindT;
+
+typedef struct vhpiForeignDataS {
+ vhpiForeignKindT kind;
+ char * libraryName;
+ char * modelName;
+ void (*elabf)(const struct vhpiCbDataS *cb_data_p);
+ void (*execf)(const struct vhpiCbDataS *cb_data_p);
+} vhpiForeignDataT;
+
+XXTERN vhpiHandleT vhpi_register_foreignf
+ (vhpiForeignDataT *foreignDatap);
+
+/* vhpi_get_foreign_info is DEPRECATED and is replaced
+ by the function vhpi_get_foreignf_info */
+XXTERN int vhpi_get_foreignf_info (vhpiHandleT hdl,
+ vhpiForeignDataT *foreignDatap);
+
+/* for saving and restoring foreign models data */
+
+XXTERN size_t vhpi_get_data (int32_t id,
+ void *dataLoc,
+ size_t numBytes);
+
+XXTERN size_t vhpi_put_data (int32_t id,
+ void *dataLoc,
+ size_t numBytes);
+
+#ifdef VHPIEXTEND_FUNCTIONS
+ VHPIEXTEND_FUNCTIONS
+#endif
+
+/**************************** Typedef for VHPI registration functions
+ ****************************/
+
+typedef void (*vhpiRegistrationFctT)();
+
+
+#undef PLI_EXTERN
+#undef PLI_VEXTERN
+
+#ifdef VHPI_USER_DEFINED_DLLISPEC
+#undef VHPI_USER_DEFINED_DLLISPEC
+#undef PLI_DLLISPEC
+#endif
+#ifdef VHPI_USER_DEFINED_DLLESPEC
+#undef VHPI_USER_DEFINED_DLLESPEC
+#undef PLI_DLLESPEC
+#endif
+
+#ifdef PLI_PROTOTYPES
+#undef PLI_PROTOTYPES
+#undef XXTERN
+#undef EETERN
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* VHPI_USER_H */