Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking issue: VHDL-2019 support #1958

Open
2 of 46 tasks
Xiretza opened this issue Feb 2, 2022 · 12 comments
Open
2 of 46 tasks

Tracking issue: VHDL-2019 support #1958

Xiretza opened this issue Feb 2, 2022 · 12 comments
Labels
Enhancement FeaReq: VHDL-2019 Requested feature addition related to VHDL-2019.

Comments

@Xiretza
Copy link
Contributor

Xiretza commented Feb 2, 2022

Just like VHDL-2008, VHDL-2019 brings a lot of new features to the language. While some of them are quite out there and probably hard to implement, there are also a few small quality-of-life improvements.

This issue will serve both as a place for discussion about the implementation of VHDL-2019 features in general, as well as to track the implementation of all the Language Changes.

General

List of language changes

@Xiretza
Copy link
Contributor Author

Xiretza commented Feb 2, 2022

To get the ball rolling, the first thing should probably be to add a --std=19 option. @tgingold, if it's ok to treat Vhdl_19 as equivalent to Vhdl_08 to begin with, I can add that - but I can't check every place where Vhdl_Std is used for correctness, especially since I don't actually have a 2019 LRM or an accurate redline.

@tgingold
Copy link
Member

tgingold commented Feb 3, 2022 via email

@Xiretza
Copy link
Contributor Author

Xiretza commented Feb 4, 2022

FYI, building the 2019 std library fails with these errors:

../../src/std/v19/env.vhdl:213:28:error: variable interface parameter are not allowed for a function (use a constant)
  impure function DIR_OPEN(Dir : out DIRECTORY; Path : in STRING) return DIR_OPEN_STATUS;
                           ^
../../src/std/v19/env.vhdl:213:28:error: mode of a function parameter cannot be inout or out
  impure function DIR_OPEN(Dir : out DIRECTORY; Path : in STRING) return DIR_OPEN_STATUS;
                           ^
../../src/std/v19/env.vhdl:214:29:error: type of constant interface "dir" cannot be record type "directory"
  procedure       DIR_CLOSE(Dir : in DIRECTORY);
                            ^
../../src/std/v19/env.vhdl:214:29:error: (record type "directory" has an access subelement)
  procedure       DIR_CLOSE(Dir : in DIRECTORY);
                            ^
../../src/std/v19/env.vhdl:244:30:error: type of constant interface "call_path" cannot be record type "call_path_element"
  impure function TO_STRING (call_path : CALL_PATH_ELEMENT ) return STRING;
                             ^
../../src/std/v19/env.vhdl:244:30:error: (record type "call_path_element" has an access subelement)
  impure function TO_STRING (call_path : CALL_PATH_ELEMENT ) return STRING;
                             ^
../../src/std/v19/env.vhdl:249:30:error: type of constant interface "call_path" cannot be array type "call_path_vector"
  impure function TO_STRING (call_path : CALL_PATH_VECTOR; Separator : STRING := "" & LF ) return STRING;
                             ^
../../src/std/v19/env.vhdl:249:30:error: (array type "call_path_vector" has an access subelement)
  impure function TO_STRING (call_path : CALL_PATH_VECTOR; Separator : STRING := "" & LF ) return STRING;
                             ^
../../src/std/v19/env.vhdl:255:30:error: type of constant interface "call_path" cannot be access type "call_path_vector_ptr"
  impure function TO_STRING (call_path : CALL_PATH_VECTOR_PTR; Separator : STRING := "" & LF ) return STRING;
                             ^

I'm not sure about the first one; the others are solved by LCS-2016-002.

@tgingold
Copy link
Member

tgingold commented Feb 5, 2022 via email

@umarcor umarcor pinned this issue Feb 5, 2022
@umarcor umarcor added Enhancement FeaReq: VHDL-2019 Requested feature addition related to VHDL-2019. labels Feb 5, 2022
@JimLewis
Copy link

There are 2019 code examples at https://gitlab.com/synthworks/VHDL_2019. These are the ones I wrote for the presentations I did with Aldec.

LCS-2016-002 will help with some additional data structures I have planned.
LCS-2016-061 will allow library developers to put in work arounds for features being missing - such as conditionally include extra libraries.

@Paebbels
Copy link
Member

@tgingold is LCS-2016-071a solved by 3160b44?

@tgingold
Copy link
Member

tgingold commented May 27, 2023 via email

@Paebbels
Copy link
Member

I checked the checkbox above. Is there anything else that could be checked? E.g. new packages?

@tgingold
Copy link
Member

tgingold commented May 27, 2023 via email

@stfarley
Copy link

stfarley commented Feb 7, 2024

Just wondering if there was any luck getting the standard libraries to compile.

@JimLewis
Copy link

JimLewis commented Feb 7, 2024

These would also be exciting items to have:
LCS-2016-015 "Report Calling Path"
LCS-2016-015a "ReportCallingPath - Current File and Line by function"

@tgingold
Copy link
Member

tgingold commented Feb 8, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement FeaReq: VHDL-2019 Requested feature addition related to VHDL-2019.
Projects
None yet
Development

No branches or pull requests

6 participants