diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_float_types.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_float_types.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_float_types.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_float_types.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_generic_pkg-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_generic_pkg-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_generic_pkg-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_generic_pkg-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_generic_pkg.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_generic_pkg.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_generic_pkg.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_generic_pkg.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_pkg.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_pkg.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/fixed_pkg.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/fixed_pkg.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/float_generic_pkg-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/float_generic_pkg-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/float_generic_pkg-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/float_generic_pkg-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/float_generic_pkg.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/float_generic_pkg.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/float_generic_pkg.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/float_generic_pkg.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/float_pkg.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/float_pkg.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/float_pkg.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/float_pkg.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_complex-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/math_complex-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_complex-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/math_complex-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_complex.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/math_complex.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_complex.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/math_complex.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_real-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/math_real-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_real-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/math_real-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_real.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/math_real.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/math_real.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/math_real.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit_unsigned-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit_unsigned-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit_unsigned-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit_unsigned-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit_unsigned.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit_unsigned.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_bit_unsigned.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_bit_unsigned.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std_unsigned-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std_unsigned-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std_unsigned-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std_unsigned-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std_unsigned.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std_unsigned.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/numeric_std_unsigned.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/numeric_std_unsigned.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/std_logic_1164-body.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/std_logic_1164-body.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/std_logic_1164-body.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/std_logic_1164-body.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/std_logic_1164.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/std_logic_1164.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/std_logic_1164.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/std_logic_1164.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/ieee_2008/std_logic_textio.vhdl b/resources/dide-lsp/static/vhdl_std_lib/ieee/std_logic_textio.vhdl similarity index 100% rename from resources/dide-lsp/static/vhdl_std_lib/ieee_2008/std_logic_textio.vhdl rename to resources/dide-lsp/static/vhdl_std_lib/ieee/std_logic_textio.vhdl diff --git a/resources/dide-lsp/static/vhdl_std_lib/std_2008/env.vhd b/resources/dide-lsp/static/vhdl_std_lib/std_2008/env.vhd new file mode 100644 index 0000000..2fe793e --- /dev/null +++ b/resources/dide-lsp/static/vhdl_std_lib/std_2008/env.vhd @@ -0,0 +1,38 @@ +package ENV is + procedure STOP (STATUS: INTEGER); + procedure STOP; + procedure FINISH (STATUS: INTEGER); + procedure FINISH; + function RESOLUTION_LIMIT return DELAY_LENGTH; + attribute foreign of ENV: package is "NO C code generation"; + attribute foreign of STOP[INTEGER] : procedure is "vhdl_stop"; + attribute foreign of FINISH[INTEGER] : procedure is "vhdl_finish"; + attribute foreign of RESOLUTION_LIMIT : function is "vhdl_resolution_limit"; +end package ENV; + +package body ENV is + + procedure STOP (STATUS: INTEGER) is + begin + end; + + procedure STOP is + begin + stop(0); + end; + + procedure FINISH (STATUS: INTEGER) is + begin + end; + + procedure FINISH is + begin + finish(0); + end; + + function RESOLUTION_LIMIT return DELAY_LENGTH is + begin + return 0 ns; + end; + +end package body ENV; diff --git a/resources/dide-lsp/static/vhdl_std_lib/std_2008/standard.vhd b/resources/dide-lsp/static/vhdl_std_lib/std_2008/standard.vhd new file mode 100644 index 0000000..5804853 --- /dev/null +++ b/resources/dide-lsp/static/vhdl_std_lib/std_2008/standard.vhd @@ -0,0 +1,106 @@ +-- $Id: standard.vhd,v 1.1 2003/01/17 19:41:54 kumar Exp $ +package STANDARD is + + -- predefined enumeration types: + + type BOOLEAN is (FALSE, TRUE); + + type BIT is ('0', '1'); + + type CHARACTER is ( + NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL, + BS, HT, LF, VT, FF, CR, SO, SI, + DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, + CAN, EM, SUB, ESC, FSP, GSP, RSP, USP, + + ' ', '!', '"', '#', '$', '%', '&', ''', + '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', ':', ';', '<', '=', '>', '?', + + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', '[', '\', ']', '^', '_', + + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', + 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', + 'x', 'y', 'z', '{', '|', '}', '~', DEL, + + C128, C129, C130, C131, C132, C133, C134, C135, + C136, C137, C138, C139, C140, C141, C142, C143, + C144, C145, C146, C147, C148, C149, C150, C151, + C152, C153, C154, C155, C156, C157, C158, C159, + + ' ', '¡', '¢', '£', '¤', '¥', '¦', '§', + '¨', '©', 'ª', '«', '¬', '­', '®', '¯', + '°', '±', '²', '³', '´', 'µ', '¶', '·', + '¸', '¹', 'º', '»', '¼', '½', '¾', '¿', + 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', + 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', + 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', '×', + 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', + 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', + 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', + 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', + 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ' ); + + type SEVERITY_LEVEL is (NOTE, WARNING, ERROR, FAILURE); + + type FILE_OPEN_KIND is (READ_MODE, WRITE_MODE, APPEND_MODE); + + type FILE_OPEN_STATUS is (OPEN_OK, STATUS_ERROR, NAME_ERROR, MODE_ERROR); + + -- predefined numeric types: + + type INTEGER is range -2147483648 to 2147483647; + + type REAL is range -1.7014111e+308 to 1.7014111e+308; + + -- predefined type TIME: + + type TIME is range -2147483647 to 2147483647 + -- this declaration is for the convenience of the parser. Internally + -- the parser treats it as if the range were: + -- range -9223372036854775807 to 9223372036854775807 + units + fs; -- femtosecond + ps = 1000 fs; -- picosecond + ns = 1000 ps; -- nanosecond + us = 1000 ns; -- microsecond + ms = 1000 us; -- millisecond + sec = 1000 ms; -- second + min = 60 sec; -- minute + hr = 60 min; -- hour + end units; + + subtype DELAY_LENGTH is TIME range 0 fs to TIME'HIGH; + + -- function that returns the current simulation time: + + function NOW return DELAY_LENGTH; + + -- predefined numeric subtypes: + + subtype NATURAL is INTEGER range 0 to INTEGER'HIGH; + + subtype POSITIVE is INTEGER range 1 to INTEGER'HIGH; + + -- predefined array types: + + type STRING is array (POSITIVE range <>) of CHARACTER; + + type BIT_VECTOR is array (NATURAL range <>) of BIT; + + attribute FOREIGN: STRING; + + + --VHDL 2008 + type boolean_vector is array (natural range <>) of boolean; + type integer_vector is array (natural range <>) of integer; + type real_vector is array (natural range <>) of real; + type time_vector is array (natural range <>) of time; + + +end STANDARD; diff --git a/resources/dide-lsp/static/vhdl_std_lib/std_2008/textio.vhd b/resources/dide-lsp/static/vhdl_std_lib/std_2008/textio.vhd new file mode 100644 index 0000000..5a9c260 --- /dev/null +++ b/resources/dide-lsp/static/vhdl_std_lib/std_2008/textio.vhd @@ -0,0 +1,532 @@ + +--------------------------------------------------------------------------- +--------------------------------------------------------------------------- +-- This is Package TEXTIO as defined in Chapter 16.4 of the +-- IEEE Standard VHDL Language Reference Manual (IEEE Std. 1076-2008) +---------------------------------------------------------------------------- +-- +-- Verific : Added body/pragma's to handle file interfacing functions for synthesis +-- +--------------------------------------------------------------------------- +--------------------------------------------------------------------------- + +package TEXTIO is + + -- Type definitions for Text I/O + + type LINE is access string; + type TEXT is file of string; + type SIDE is (right, left); + subtype WIDTH is natural; + + function JUSTIFY(VALUE: STRING; + JUSTIFIED: SIDE := RIGHT; + FIELD: WIDTH := 0) return STRING; + + -- Standard Text Files + + file input : TEXT open READ_MODE is "STD_INPUT"; + file output : TEXT open WRITE_MODE is "STD_OUTPUT"; + + -- Input Routines for Standard Types + + procedure READLINE(file F: TEXT; L: out LINE); + + procedure READ(L:inout LINE; VALUE: out bit; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out bit); + + procedure READ(L:inout LINE; VALUE: out bit_vector; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out bit_vector); + + procedure READ(L:inout LINE; VALUE: out BOOLEAN; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out BOOLEAN); + + procedure READ(L:inout LINE; VALUE: out character; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out character); + + procedure READ(L:inout LINE; VALUE: out integer; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out integer); + + procedure READ(L:inout LINE; VALUE: out real; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out real); + + procedure READ(L:inout LINE; VALUE: out string; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out string); + + procedure READ(L:inout LINE; VALUE: out time; GOOD : out BOOLEAN); + procedure READ(L:inout LINE; VALUE: out time); + + procedure SREAD (L: inout LINE; VALUE: out STRING; STRLEN: out NATURAL); + alias STRING_READ is SREAD [LINE, STRING, NATURAL]; + + alias BREAD is READ [LINE, BIT_VECTOR, BOOLEAN]; + alias BREAD is READ [LINE, BIT_VECTOR]; + + alias BINARY_READ is READ [LINE, BIT_VECTOR, BOOLEAN]; + alias BINARY_READ is READ [LINE, BIT_VECTOR]; + + procedure OREAD (L: inout LINE; VALUE: out BIT_VECTOR; GOOD: out BOOLEAN); + procedure OREAD (L: inout LINE; VALUE: out BIT_VECTOR); + + alias OCTAL_READ is OREAD [LINE, BIT_VECTOR, BOOLEAN]; + alias OCTAL_READ is OREAD [LINE, BIT_VECTOR]; + + procedure HREAD (L: inout LINE; VALUE: out BIT_VECTOR; GOOD: out BOOLEAN); + procedure HREAD (L: inout LINE; VALUE: out BIT_VECTOR); + + alias HEX_READ is HREAD [LINE, BIT_VECTOR, BOOLEAN]; + alias HEX_READ is HREAD [LINE, BIT_VECTOR]; + + -- Output Routines for Standard Types + + procedure WRITELINE(file F : TEXT; L : inout LINE); + + procedure tee(file F: text; L: inout line); + + procedure WRITE(L : inout LINE; VALUE : in bit; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0); + + procedure WRITE(L : inout LINE; VALUE : in bit_vector; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0); + + procedure WRITE(L : inout LINE; VALUE : in BOOLEAN; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0); + + procedure WRITE(L : inout LINE; VALUE : in character; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0); + + procedure WRITE(L : inout LINE; VALUE : in integer; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0); + + procedure WRITE(L : inout LINE; VALUE : in real; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0; + DIGITS: in NATURAL := 0); + + procedure WRITE(L : inout LINE; VALUE : in string; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0); + + procedure WRITE(L : inout LINE; VALUE : in time; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0; + UNIT: in TIME := ns); + + alias SWRITE is WRITE [LINE, STRING, SIDE, WIDTH]; + alias STRING_WRITE is WRITE [LINE, STRING, SIDE, WIDTH]; + + alias BWRITE is WRITE [LINE, BIT_VECTOR, SIDE, WIDTH]; + alias BINARY_WRITE is WRITE [LINE, BIT_VECTOR, SIDE, WIDTH]; + + procedure OWRITE (L: inout LINE; VALUE: in BIT_VECTOR; + JUSTIFIED: in SIDE := RIGHT; + FIELD: in WIDTH := 0); + + alias OCTAL_WRITE is OWRITE [LINE, BIT_VECTOR, SIDE, WIDTH]; + + procedure HWRITE (L: inout LINE; VALUE: in BIT_VECTOR; + JUSTIFIED: in SIDE := RIGHT; + FIELD: in WIDTH := 0); + + alias HEX_WRITE is HWRITE [LINE, BIT_VECTOR, SIDE, WIDTH]; + + -- File Position Predicates + + -- function ENDLINE(variable L : in LINE) return BOOLEAN; + + -- Function ENDLINE as declared cannot be legal VHDL, and + -- the entire function was deleted from the definition + -- by the Issues Screening and Analysis Committee (ISAC), + -- a subcommittee of the VHDL Analysis and Standardization + -- Group (VASG) on 10 November, 1988. See "The Sense of + -- the VASG", October, 1989, VHDL Issue Number 0032. + + -- function ENDFILE (file f: TEXT) return BOOLEAN ; + + ------------------------------------------------------------------- + -- Declare the textio directive attribute; to be set on + -- basic functions that have a 'builtin' implementation for elaboration + ------------------------------------------------------------------- + ATTRIBUTE synthesis_return : string ; + + + attribute foreign of TEXTIO: package is "NO C code generation"; + + -- File position Predicates predicate + + attribute foreign of readline:procedure is "std_textio_readline"; + attribute foreign of read[LINE,BIT,BOOLEAN] :procedure is "std_textio_read1"; + attribute foreign of read[LINE,BIT]:procedure is "std_textio_read2"; + attribute foreign of read[LINE,BIT_VECTOR, BOOLEAN]:procedure is "std_textio_read3"; + attribute foreign of read[LINE,BIT_VECTOR]:procedure is "std_textio_read4"; + attribute foreign of read[LINE,BOOLEAN, BOOLEAN]:procedure is "std_textio_read5"; + attribute foreign of read[LINE,BOOLEAN]:procedure is "std_textio_read6"; + attribute foreign of read[LINE,CHARACTER, BOOLEAN]:procedure is "std_textio_read7"; + attribute foreign of read[LINE,CHARACTER]:procedure is "std_textio_read8"; + attribute foreign of read[LINE,INTEGER, BOOLEAN]:procedure is "std_textio_read9"; + attribute foreign of read[LINE,INTEGER]:procedure is "std_textio_read10"; + attribute foreign of read[LINE,REAL, BOOLEAN]:procedure is "std_textio_read11"; + attribute foreign of read[LINE,REAL]:procedure is "std_textio_read12"; + attribute foreign of read[LINE,STRING, BOOLEAN]:procedure is "std_textio_read13"; + attribute foreign of read[LINE,STRING]:procedure is "std_textio_read14"; + attribute foreign of read[LINE,TIME, BOOLEAN]:procedure is "std_textio_read15"; + attribute foreign of read[LINE,TIME]:procedure is "std_textio_read16"; + + attribute foreign of writeline:procedure is "std_textio_writeline"; + attribute foreign of tee:procedure is "std_textio_tee"; + attribute foreign of write[LINE, BIT, SIDE, WIDTH]:procedure is "std_textio_write1"; + attribute foreign of write[LINE, BIT_VECTOR, SIDE, WIDTH]:procedure is "std_textio_write2"; + attribute foreign of write[LINE, BOOLEAN, SIDE, WIDTH]:procedure is "std_textio_write3"; + attribute foreign of write[LINE, CHARACTER, SIDE, WIDTH]:procedure is "std_textio_write4"; + attribute foreign of write[LINE, INTEGER, SIDE, WIDTH]:procedure is "std_textio_write5"; + attribute foreign of write[LINE, REAL, SIDE, WIDTH, NATURAL]:procedure is "std_textio_write6"; + attribute foreign of write[LINE, STRING, SIDE, WIDTH]:procedure is "std_textio_write7"; + attribute foreign of write[LINE, TIME, SIDE, WIDTH, TIME]:procedure is "std_textio_write8"; + + +end; + +package body TEXTIO is + -- The subprograms declared in the TEXTIO package are + -- ignored for synthesis. + -- Assertion warnings will be generated when these + -- functions are called unconditionally. + + function JUSTIFY(VALUE: STRING; + JUSTIFIED: SIDE := RIGHT; + FIELD: WIDTH := 0) return STRING is + begin + return VALUE ; -- do nothing for now + end JUSTIFY ; + + + procedure READLINE(file f: TEXT; L: out LINE) is + ATTRIBUTE synthesis_return OF L:variable IS "readline" ; + -- verific synthesis readline + begin + assert (FALSE) + report "Procedure call to READLINE ignored for synthesis" + severity WARNING ; + end READLINE ; + + procedure READ(L:inout LINE; VALUE: out bit; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out bit) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out bit_vector; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out bit_vector) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out BOOLEAN; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out character; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out character) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out integer; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out integer) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out real; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out real) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out string; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out string) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + + procedure READ(L:inout LINE; VALUE: out time; GOOD : out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure READ(L:inout LINE; VALUE: out time) is + ATTRIBUTE synthesis_return OF L:variable IS "read" ; + -- verific synthesis read + begin + assert (FALSE) + report "Procedure call to READ ignored for synthesis" + severity WARNING ; + end READ ; + procedure OREAD(L:inout LINE; VALUE: out BIT_VECTOR; GOOD: out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "oread" ; + -- verific synthesis oread + begin + assert (FALSE) + report "Procedure call to OREAD ignored for synthesis" + severity WARNING ; + end OREAD ; + procedure OREAD(L:inout LINE; VALUE: out BIT_VECTOR) is + ATTRIBUTE synthesis_return OF L:variable IS "oread" ; + -- verific synthesis oread + begin + assert (FALSE) + report "Procedure call to OREAD ignored for synthesis" + severity WARNING ; + end OREAD ; + procedure HREAD(L:inout LINE; VALUE: out BIT_VECTOR; GOOD: out BOOLEAN) is + ATTRIBUTE synthesis_return OF L:variable IS "hread" ; + -- verific synthesis hread + begin + assert (FALSE) + report "Procedure call to HREAD ignored for synthesis" + severity WARNING ; + end HREAD ; + procedure HREAD(L:inout LINE; VALUE: out BIT_VECTOR) is + ATTRIBUTE synthesis_return OF L:variable IS "hread" ; + -- verific synthesis hread + begin + assert (FALSE) + report "Procedure call to HREAD ignored for synthesis" + severity WARNING ; + end HREAD ; + procedure SREAD(L:inout LINE; VALUE: out STRING; STRLEN: out NATURAL) is + ATTRIBUTE synthesis_return OF L:variable IS "sread" ; + -- verific synthesis sread + begin + assert (FALSE) + report "Procedure call to SREAD ignored for synthesis" + severity WARNING ; + end SREAD ; + + + procedure WRITELINE(file F : TEXT; L : inout LINE) is + ATTRIBUTE synthesis_return OF L:variable IS "writeline" ; + -- verific synthesis writeline + begin + assert (FALSE) + report "Procedure call to WRITELINE ignored for synthesis" + severity WARNING ; + end WRITELINE ; + + procedure tee(file F: text; L: inout line) is + ATTRIBUTE synthesis_return OF L:variable IS "tee" ; + -- verific synthesis writeline + begin + assert (FALSE) + report "Procedure call to TEE ignored for synthesis" + severity WARNING ; + end tee; + + procedure WRITE(L : inout LINE; VALUE : in bit; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in bit_vector; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in BOOLEAN; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in character; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in integer; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in real; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0; + DIGITS: in NATURAL := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in string; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure WRITE(L : inout LINE; VALUE : in time; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0; + UNIT: in TIME := ns) is + ATTRIBUTE synthesis_return OF L:variable IS "write" ; + -- verific synthesis write + begin + assert (FALSE) + report "Procedure call to WRITE ignored for synthesis" + severity WARNING ; + end WRITE ; + + procedure OWRITE(L : inout LINE; VALUE : in BIT_VECTOR; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "owrite" ; + -- verific synthesis owrite + begin + assert (FALSE) + report "Procedure call to OWRITE ignored for synthesis" + severity WARNING ; + end OWRITE ; + + procedure HWRITE(L : inout LINE; VALUE : in BIT_VECTOR; + JUSTIFIED: in SIDE := right; + FIELD: in WIDTH := 0) is + ATTRIBUTE synthesis_return OF L:variable IS "hwrite" ; + -- verific synthesis hwrite + begin + assert (FALSE) + report "Procedure call to HWRITE ignored for synthesis" + severity WARNING ; + end HWRITE ; + +-- function ENDFILE (f: in TEXT) return BOOLEAN is +-- begin +-- assert (FALSE) +-- report "Function call to ENDFILE returns TRUE for synthesis" +-- severity WARNING ; +-- return TRUE ; +-- end ENDFILE ; +end ; + diff --git a/resources/dide-lsp/static/vhdl_std_lib/vhdl_ls.toml b/resources/dide-lsp/static/vhdl_std_lib/vhdl_ls.toml index 61d9957..b5c0ac9 100644 --- a/resources/dide-lsp/static/vhdl_std_lib/vhdl_ls.toml +++ b/resources/dide-lsp/static/vhdl_std_lib/vhdl_ls.toml @@ -3,5 +3,5 @@ std.files = ['std/*.vhd'] std.is_third_party = true -ieee.files = ['ieee_2008/*.vhdl', 'synopsys/*.vhd', 'vital2000/*.vhdl', 'unifast/primitive/*.vhd', 'unifast/secureip/*.vhd', 'unimacro/*.vhd'] -ieee.is_third_party = true \ No newline at end of file +ieee.files = ['ieee/*.vhdl', 'synopsys/*.vhd', 'vital2000/*.vhdl', 'unifast/primitive/*.vhd', 'unifast/secureip/*.vhd', 'unimacro/*.vhd'] +ieee.is_third_party = true