-
Notifications
You must be signed in to change notification settings - Fork 75
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
@ * is valid and should not be excluded in ivtest #1315
Comments
@dalance this looks like it was your addition. |
In the LRM, event_control is defined as below:
This doesn't have space between |
The difference is == is specifically called out as a token since it is an operator:
I can find nowhere in the standard that specifies @* is an operator other than the following:
Which could apply because the characters are shown in the BNF as Boldface-red, but could equally apply to the individual characters. Which I believe is the correct interpretation because of the following: An @ is declared as an operator.
And @* is declared as an implicit event expression not an implicit event operator.
If you can find anything other than your interpretation of the BNF to support this is a single token I would appreciate a reference. I really have no opinion other than I want to support this correctly and everything I can find implies @* is actually two different tokens and since commercial tools support it as two tokens I tend to believe that is the correct interpretation. |
In the LRM, there are some sequential symbols not operator:
I think these can't be separated by space too.
I don't know why these tools take care of space specially. |
Well
I have no comment on Icarus handles |
I just checked and the 2017 standard is the same for |
The "boldface-red" seems to have no special meaning.
So I think I think there is possibility that this is a mistake of BNF definition. |
I agree the BNF does not show a space, but is there anywhere else in the standard that indicates this should be a token/operator? I can find noting that says it should be and a number of places suggesting it is not, which I provided earlier. It's completely obvious keywords and the arithmetic symbols should be considers tokens. I feel you are treading into the realm of logically fallacies claiming that because a keyword ( Regarding the odd commercial simulator functionality. I assume this is because they are handling this in the lexor instead of in the parser which would likely give this different functionality. There are lots of reasons someone would have done this and likely does not indicate the space is invalid. Some times people do not think of the subtlety and it may have been easier to change the regex in the lexor instead of the actual parser to support the space. |
In my understanding, BNF don't take care whether the sequence in definition is keyword, operator or token. It is only character sequence. |
After discussion with my friends, I understand the problem is the missing of tokenize definition in LRM.
I think |
"DPI-C" is a string literal which is specified to be a token and since the space character is significant in a string they cannot be added arbitrarily. Space characters can be arbitrarily added between tokens though they are not required between all tokens. I'm still looking for a reference that says @* is a token/operator. It is obvious @ and * by themselves are tokens. If that could be provided this discussion could be concluded. I do not agree with your ignore/exclude anything with ambiguity in the standard stance, but if that works for your tool then great. What I have found is that users do not care what is actually in the standard. All they really care about is if their design, which was likely written on a commercial tool, can be handled by our tools. If it can't they move on instead of rewriting to be compliant with our tool. It does not matter if the difference is because the commercial tool choose to take a pessimistic implementation choice or even if it is not covered by the standard at all. If you look at the latest ivtest generate script you will find that most of the tests that are excluded have been because they use/demonstrate de facto-standard functionality. I'm all for putting |
I think whether each tool should cover de facto-standard functionality depend on the purpose of the tool. I don't know the stance of this project to ambiguity and de facto-standard. So I'll leave this to maintainers. |
I found the case in Accellera Mantis. The case say that the current BNF shows the space between |
Here is my summary of the mantis item. Shalom appears to support them as separate token by the subject I'll leave it to others to decide if this should be in sv-tests or not. I may reach out to people I know on the standardization committees to see if they have an opinion. |
I have looked in the standard and I find no place that excludes @ * (note the space between the two) from being valid. Sure it uses @* (no space) in the examples, but I can find nothing the requires this to be a single token. Commercial tools support the space between the tokens as well. I would like to remove these from the exclude list for ivtest if I can get confirmation. It looks like this was originally tagged by Naoya Hatta.
The text was updated successfully, but these errors were encountered: