diff options
Diffstat (limited to 'src/grt/grt-fst_api.ads')
-rw-r--r-- | src/grt/grt-fst_api.ads | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/src/grt/grt-fst_api.ads b/src/grt/grt-fst_api.ads new file mode 100644 index 000000000..ba0ec0c5d --- /dev/null +++ b/src/grt/grt-fst_api.ads @@ -0,0 +1,353 @@ +with Interfaces; use Interfaces; +with Interfaces.C; use Interfaces.C; +with System; +with Grt.Types; use Grt.Types; + +package Grt.Fst_Api is + + subtype fstHandle is unsigned; + Null_fstHandle : constant fstHandle := 0; + + type fstWriterPackType is + (FST_WR_PT_ZLIB, + FST_WR_PT_FASTLZ, + FST_WR_PT_LZ4); + pragma Convention (C, fstWriterPackType); + + subtype fstFileType is unsigned; + FST_FT_MIN : constant fstFileType := 0; + FST_FT_VERILOG : constant fstFileType := 0; + FST_FT_VHDL : constant fstFileType := 1; + FST_FT_VERILOG_VHDL : constant fstFileType := 2; + FST_FT_MAX : constant fstFileType := 2; + + subtype fstBlockType is unsigned; + FST_BL_HDR : constant fstBlockType := 0; + FST_BL_VCDATA : constant fstBlockType := 1; + FST_BL_BLACKOUT : constant fstBlockType := 2; + FST_BL_GEOM : constant fstBlockType := 3; + FST_BL_HIER : constant fstBlockType := 4; + FST_BL_VCDATA_DYN_ALIAS : constant fstBlockType := 5; + FST_BL_HIER_LZ4 : constant fstBlockType := 6; + FST_BL_HIER_LZ4DUO : constant fstBlockType := 7; + FST_BL_VCDATA_DYN_ALIAS2 : constant fstBlockType := 8; + FST_BL_ZWRAPPER : constant fstBlockType := 254; + FST_BL_SKIP : constant fstBlockType := 255; + + subtype fstScopeType is unsigned; + FST_ST_MIN : constant fstScopeType := 0; + FST_ST_VCD_MODULE : constant fstScopeType := 0; + FST_ST_VCD_TASK : constant fstScopeType := 1; + FST_ST_VCD_FUNCTION : constant fstScopeType := 2; + FST_ST_VCD_BEGIN : constant fstScopeType := 3; + FST_ST_VCD_FORK : constant fstScopeType := 4; + FST_ST_VCD_GENERATE : constant fstScopeType := 5; + FST_ST_VCD_STRUCT : constant fstScopeType := 6; + FST_ST_VCD_UNION : constant fstScopeType := 7; + FST_ST_VCD_CLASS : constant fstScopeType := 8; + FST_ST_VCD_INTERFACE : constant fstScopeType := 9; + FST_ST_VCD_PACKAGE : constant fstScopeType := 10; + FST_ST_VCD_PROGRAM : constant fstScopeType := 11; + FST_ST_VHDL_ARCHITECTURE : constant fstScopeType := 12; + FST_ST_VHDL_PROCEDURE : constant fstScopeType := 13; + FST_ST_VHDL_FUNCTION : constant fstScopeType := 14; + FST_ST_VHDL_RECORD : constant fstScopeType := 15; + FST_ST_VHDL_PROCESS : constant fstScopeType := 16; + FST_ST_VHDL_BLOCK : constant fstScopeType := 17; + FST_ST_VHDL_FOR_GENERATE : constant fstScopeType := 18; + FST_ST_VHDL_IF_GENERATE : constant fstScopeType := 19; + FST_ST_VHDL_GENERATE : constant fstScopeType := 20; + FST_ST_VHDL_PACKAGE : constant fstScopeType := 21; + FST_ST_MAX : constant fstScopeType := 21; + FST_ST_GEN_ATTRBEGIN : constant fstScopeType := 252; + FST_ST_GEN_ATTREND : constant fstScopeType := 253; + FST_ST_VCD_SCOPE : constant fstScopeType := 254; + FST_ST_VCD_UPSCOPE : constant fstScopeType := 255; + + subtype fstVarType is unsigned; + FST_VT_MIN : constant fstVarType := 0; + FST_VT_VCD_EVENT : constant fstVarType := 0; + FST_VT_VCD_INTEGER : constant fstVarType := 1; + FST_VT_VCD_PARAMETER : constant fstVarType := 2; + FST_VT_VCD_REAL : constant fstVarType := 3; + FST_VT_VCD_REAL_PARAMETER : constant fstVarType := 4; + FST_VT_VCD_REG : constant fstVarType := 5; + FST_VT_VCD_SUPPLY0 : constant fstVarType := 6; + FST_VT_VCD_SUPPLY1 : constant fstVarType := 7; + FST_VT_VCD_TIME : constant fstVarType := 8; + FST_VT_VCD_TRI : constant fstVarType := 9; + FST_VT_VCD_TRIAND : constant fstVarType := 10; + FST_VT_VCD_TRIOR : constant fstVarType := 11; + FST_VT_VCD_TRIREG : constant fstVarType := 12; + FST_VT_VCD_TRI0 : constant fstVarType := 13; + FST_VT_VCD_TRI1 : constant fstVarType := 14; + FST_VT_VCD_WAND : constant fstVarType := 15; + FST_VT_VCD_WIRE : constant fstVarType := 16; + FST_VT_VCD_WOR : constant fstVarType := 17; + FST_VT_VCD_PORT : constant fstVarType := 18; + FST_VT_VCD_SPARRAY : constant fstVarType := 19; + FST_VT_VCD_REALTIME : constant fstVarType := 20; + FST_VT_GEN_STRING : constant fstVarType := 21; + FST_VT_SV_BIT : constant fstVarType := 22; + FST_VT_SV_LOGIC : constant fstVarType := 23; + FST_VT_SV_INT : constant fstVarType := 24; + FST_VT_SV_SHORTINT : constant fstVarType := 25; + FST_VT_SV_LONGINT : constant fstVarType := 26; + FST_VT_SV_BYTE : constant fstVarType := 27; + FST_VT_SV_ENUM : constant fstVarType := 28; + FST_VT_SV_SHORTREAL : constant fstVarType := 29; + FST_VT_MAX : constant fstVarType := 29; + + subtype fstVarDir is unsigned; + FST_VD_MIN : constant fstVarDir := 0; + FST_VD_IMPLICIT : constant fstVarDir := 0; + FST_VD_INPUT : constant fstVarDir := 1; + FST_VD_OUTPUT : constant fstVarDir := 2; + FST_VD_INOUT : constant fstVarDir := 3; + FST_VD_BUFFER : constant fstVarDir := 4; + FST_VD_LINKAGE : constant fstVarDir := 5; + FST_VD_MAX : constant fstVarDir := 5; + + subtype fstHierType is unsigned; + FST_HT_MIN : constant fstHierType := 0; + FST_HT_SCOPE : constant fstHierType := 0; + FST_HT_UPSCOPE : constant fstHierType := 1; + FST_HT_VAR : constant fstHierType := 2; + FST_HT_ATTRBEGIN : constant fstHierType := 3; + FST_HT_ATTREND : constant fstHierType := 4; + FST_HT_MAX : constant fstHierType := 4; + + subtype fstAttrType is unsigned; + FST_AT_MIN : constant fstAttrType := 0; + FST_AT_MISC : constant fstAttrType := 0; + FST_AT_ARRAY : constant fstAttrType := 1; + FST_AT_ENUM : constant fstAttrType := 2; + FST_AT_PACK : constant fstAttrType := 3; + FST_AT_MAX : constant fstAttrType := 3; + + subtype fstMiscType is unsigned; + FST_MT_MIN : constant fstMiscType := 0; + FST_MT_COMMENT : constant fstMiscType := 0; + FST_MT_ENVVAR : constant fstMiscType := 1; + FST_MT_SUPVAR : constant fstMiscType := 2; + FST_MT_PATHNAME : constant fstMiscType := 3; + FST_MT_SOURCESTEM : constant fstMiscType := 4; + FST_MT_SOURCEISTEM : constant fstMiscType := 5; + FST_MT_UNKNOWN : constant fstMiscType := 6; + FST_MT_MAX : constant fstMiscType := 6; + + subtype fstArrayType is unsigned; + FST_AR_MIN : constant fstArrayType := 0; + FST_AR_NONE : constant fstArrayType := 0; + FST_AR_UNPACKED : constant fstArrayType := 1; + FST_AR_PACKED : constant fstArrayType := 2; + FST_AR_SPARSE : constant fstArrayType := 3; + FST_AR_MAX : constant fstArrayType := 3; + + subtype fstEnumValueType is unsigned; + FST_EV_SV_INTEGER : constant fstEnumValueType := 0; + FST_EV_SV_BIT : constant fstEnumValueType := 1; + FST_EV_SV_LOGIC : constant fstEnumValueType := 2; + FST_EV_SV_INT : constant fstEnumValueType := 3; + FST_EV_SV_SHORTINT : constant fstEnumValueType := 4; + FST_EV_SV_LONGINT : constant fstEnumValueType := 5; + FST_EV_SV_BYTE : constant fstEnumValueType := 6; + FST_EV_SV_UNSIGNED_INTEGER : constant fstEnumValueType := 7; + FST_EV_SV_UNSIGNED_BIT : constant fstEnumValueType := 8; + FST_EV_SV_UNSIGNED_LOGIC : constant fstEnumValueType := 9; + FST_EV_SV_UNSIGNED_INT : constant fstEnumValueType := 10; + FST_EV_SV_UNSIGNED_SHORTINT : constant fstEnumValueType := 11; + FST_EV_SV_UNSIGNED_LONGINT : constant fstEnumValueType := 12; + FST_EV_SV_UNSIGNED_BYTE : constant fstEnumValueType := 13; + FST_EV_MAX : constant fstEnumValueType := 13; + + subtype fstPackType is unsigned; + FST_PT_NONE : constant fstPackType := 0; + FST_PT_UNPACKED : constant fstPackType := 1; + FST_PT_PACKED : constant fstPackType := 2; + FST_PT_TAGGED_PACKED : constant fstPackType := 3; + FST_PT_MAX : constant fstPackType := 3; + + subtype fstSupplementalVarType is unsigned; + FST_SVT_MIN : constant fstSupplementalVarType := 0; + FST_SVT_NONE : constant fstSupplementalVarType := 0; + FST_SVT_VHDL_SIGNAL : constant fstSupplementalVarType := 1; + FST_SVT_VHDL_VARIABLE : constant fstSupplementalVarType := 2; + FST_SVT_VHDL_CONSTANT : constant fstSupplementalVarType := 3; + FST_SVT_VHDL_FILE : constant fstSupplementalVarType := 4; + FST_SVT_VHDL_MEMORY : constant fstSupplementalVarType := 5; + FST_SVT_MAX : constant fstSupplementalVarType := 5; + + subtype fstSupplementalDataType is unsigned; + FST_SDT_MIN : constant fstSupplementalDataType := 0; + FST_SDT_NONE : constant fstSupplementalDataType := 0; + FST_SDT_VHDL_BOOLEAN : constant fstSupplementalDataType := 1; + FST_SDT_VHDL_BIT : constant fstSupplementalDataType := 2; + FST_SDT_VHDL_BIT_VECTOR : constant fstSupplementalDataType := 3; + FST_SDT_VHDL_STD_ULOGIC : constant fstSupplementalDataType := 4; + FST_SDT_VHDL_STD_ULOGIC_VECTOR : constant fstSupplementalDataType := 5; + FST_SDT_VHDL_STD_LOGIC : constant fstSupplementalDataType := 6; + FST_SDT_VHDL_STD_LOGIC_VECTOR : constant fstSupplementalDataType := 7; + FST_SDT_VHDL_UNSIGNED : constant fstSupplementalDataType := 8; + FST_SDT_VHDL_SIGNED : constant fstSupplementalDataType := 9; + FST_SDT_VHDL_INTEGER : constant fstSupplementalDataType := 10; + FST_SDT_VHDL_REAL : constant fstSupplementalDataType := 11; + FST_SDT_VHDL_NATURAL : constant fstSupplementalDataType := 12; + FST_SDT_VHDL_POSITIVE : constant fstSupplementalDataType := 13; + FST_SDT_VHDL_TIME : constant fstSupplementalDataType := 14; + FST_SDT_VHDL_CHARACTER : constant fstSupplementalDataType := 15; + FST_SDT_VHDL_STRING : constant fstSupplementalDataType := 16; + FST_SDT_MAX : constant fstSupplementalDataType := 16; + FST_SDT_SVT_SHIFT_COUNT : constant fstSupplementalDataType := 10; + FST_SDT_ABS_MAX : constant fstSupplementalDataType := 1023; + + type fstContext is new System.Address; + Null_fstContext : constant fstContext := fstContext (System.Null_Address); + + procedure fstWriterClose (ctx : fstContext); + pragma Import (C, fstWriterClose, "fstWriterClose"); + + function fstWriterCreate (nam : Ghdl_C_String; use_compressed_hier : int) + return fstContext; + pragma Import (C, fstWriterCreate, "fstWriterCreate"); + + function fstWriterCreateVar + (ctx : fstContext; + vt : fstVarType; + vd : fstVarDir; + len : unsigned; + nam : Ghdl_C_String; + aliasHandle : fstHandle) return fstHandle; + pragma Import (C, fstWriterCreateVar, "fstWriterCreateVar"); + + function fstWriterCreateVar2 + (ctx : fstContext; + vt : fstVarType; + vd : fstVarDir; + len : unsigned; + nam : Ghdl_C_String; + aliasHandle : fstHandle; + c_type : Ghdl_C_String; + svt : fstSupplementalVarType; + sdt : fstSupplementalDataType) return fstHandle; + pragma Import (C, fstWriterCreateVar2, "fstWriterCreateVar2"); + + procedure fstWriterEmitValueChange + (ctx : fstContext; + handle : fstHandle; + val : System.Address); + pragma Import (C, fstWriterEmitValueChange, "fstWriterEmitValueChange"); + + procedure fstWriterEmitVariableLengthValueChange + (ctx : fstContext; + handle : fstHandle; + val : System.Address; + len : unsigned); + pragma Import (C, fstWriterEmitVariableLengthValueChange, + "fstWriterEmitVariableLengthValueChange"); + + procedure fstWriterEmitDumpActive (ctx : fstContext; enable : int); + pragma Import (C, fstWriterEmitDumpActive, "fstWriterEmitDumpActive"); + + procedure fstWriterEmitTimeChange + (ctx : fstContext; tim : Unsigned_64); + pragma Import (C, fstWriterEmitTimeChange, "fstWriterEmitTimeChange"); + + procedure fstWriterFlushContext (ctx : fstContext); + pragma Import (C, fstWriterFlushContext, "fstWriterFlushContext"); + + function fstWriterGetDumpSizeLimitReached (ctx : fstContext) return int; + pragma Import (C, fstWriterGetDumpSizeLimitReached, + "fstWriterGetDumpSizeLimitReached"); + + function fstWriterGetFseekFailed (ctx : fstContext) return int; + pragma Import (C, fstWriterGetFseekFailed, "fstWriterGetFseekFailed"); + + procedure fstWriterSetAttrBegin + (ctx : fstContext; + attrtype : fstAttrType; + c_subtype : int; + attrname : Ghdl_C_String; + arg : Unsigned_64); + pragma Import (C, fstWriterSetAttrBegin, "fstWriterSetAttrBegin"); + + procedure fstWriterSetAttrEnd (ctx : fstContext); + pragma Import (C, fstWriterSetAttrEnd, "fstWriterSetAttrEnd"); + + procedure fstWriterSetComment (ctx : fstContext; comm : Ghdl_C_String); + pragma Import (C, fstWriterSetComment, "fstWriterSetComment"); + + procedure fstWriterSetDate (ctx : fstContext; dat : Ghdl_C_String); + pragma Import (C, fstWriterSetDate, "fstWriterSetDate"); + + procedure fstWriterSetDumpSizeLimit + (ctx : Ghdl_C_String; numbytes : Unsigned_64); + pragma Import (C, fstWriterSetDumpSizeLimit, "fstWriterSetDumpSizeLimit"); + + procedure fstWriterSetEnvVar (ctx : fstContext; envvar : Ghdl_C_String); + pragma Import (C, fstWriterSetEnvVar, "fstWriterSetEnvVar"); + + procedure fstWriterSetFileType (ctx : fstContext; filetype : fstFileType); + pragma Import (C, fstWriterSetFileType, "fstWriterSetFileType"); + + procedure fstWriterSetPackType (ctx : fstContext; typ : fstWriterPackType); + pragma Import (C, fstWriterSetPackType, "fstWriterSetPackType"); + + procedure fstWriterSetParallelMode (ctx : fstContext; enable : int); + pragma Import (C, fstWriterSetParallelMode, "fstWriterSetParallelMode"); + + procedure fstWriterSetRepackOnClose (ctx : fstContext; enable : int); + pragma Import (C, fstWriterSetRepackOnClose, "fstWriterSetRepackOnClose"); + + procedure fstWriterSetScope + (ctx : fstContext; + scopetype : fstScopeType; + scopename : Ghdl_C_String; + scopecomp : Ghdl_C_String); + pragma Import (C, fstWriterSetScope, "fstWriterSetScope"); + + procedure fstWriterSetSourceInstantiationStem + (ctx : fstContext; + path : Ghdl_C_String; + line : unsigned; + use_realpath : unsigned); + pragma Import (C, fstWriterSetSourceInstantiationStem, + "fstWriterSetSourceInstantiationStem"); + + procedure fstWriterSetSourceStem + (ctx : fstContext; + path : Ghdl_C_String; + line : unsigned; + use_realpath : unsigned); + pragma Import (C, fstWriterSetSourceStem, "fstWriterSetSourceStem"); + + procedure fstWriterSetTimescale (ctx : fstContext; ts : Integer); + pragma Import (C, fstWriterSetTimescale, "fstWriterSetTimescale"); + + procedure fstWriterSetTimescaleFromString + (ctx : fstContext; s : Ghdl_C_String); + pragma Import (C, fstWriterSetTimescaleFromString, + "fstWriterSetTimescaleFromString"); + + procedure fstWriterSetTimezero (ctx : fstContext; tim : Unsigned_64); + pragma Import (C, fstWriterSetTimezero, "fstWriterSetTimezero"); + + procedure fstWriterSetUpscope (ctx : fstContext); + pragma Import (C, fstWriterSetUpscope, "fstWriterSetUpscope"); + + procedure fstWriterSetVersion (ctx : fstContext; vers : Ghdl_C_String); + pragma Import (C, fstWriterSetVersion, "fstWriterSetVersion"); + + function fstUtilityBinToEsc + (d : access unsigned_char; + s : access unsigned_char; + len : int) return int; + pragma Import (C, fstUtilityBinToEsc, "fstUtilityBinToEsc"); + + function fstUtilityEscToBin + (d : access unsigned_char; + s : access unsigned_char; + len : int) return int; + pragma Import (C, fstUtilityEscToBin, "fstUtilityEscToBin"); + +end Grt.Fst_Api; |