CASE? and '-' as a wildcard. It's part of the standard. case? pretty much has one purpose as far as I know, to accept '-' as a wildcard. Yet it rejects my code... :(
# KERNEL: Fatal Error: Don't care ('-') value in the matching select/case statement expression.
procedure Cmnd_Parse (
Command : in unsigned(8 downto 0);
Right_Left : in String;
Cmnd_Time : in time ) is
begin
case? Command is
when 9x"000" =>
assert false report Right_Left & " - NOP with enable detected";
when 9x"001" =>
assert false report Right_Left & " - Clear Display command";
when 9x"002" =>
assert false report Right_Left & " - Return Home command";
when b"0000001--" =>
...
There are a number of matching expressions with the wildcard '-' after this.
This has got to be an issue with the simulator, right? I guess I can try a test case that isn't so large, but this will be the second feature I've found that Aldec doesn't support so well.
I hate to rip out all this code, but it looks like I'll have to replace it with IF statements and they will work better comparing from the high end down, so the order of comparisons will be opposite ... lots of editing. Fun...
# KERNEL: Fatal Error: Don't care ('-') value in the matching select/case statement expression.This seems to imply that during simulation, the "Command" input has a'-' in it, which is an
Case? does not allow the targets to overlap. To fully access correctness or not
with your code would require the rest of the code.
# KERNEL: Fatal Error: Don't care ('-') value in the matching select/case statement expression.This seems to imply that during simulation, the "Command" input has a'-' in it, which is an
error in your code.
From 1076-2008:
"For a matching case statement in which the expression is of type STD_ULOGIC, or an array type whose
element type is STD_ULOGIC, it is an error if the value of the expression is the scalar value '–' or an array
value containing '–' as an element."
Verilog does not have this sort of a check by the language and it is a disaster for them.
Run your simulation, single step and observe the value of Command that makes it stop.
That will help you confirm this.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 74:51:10 |
Calls: | 6,657 |
Calls today: | 3 |
Files: | 12,203 |
Messages: | 5,332,636 |
Posted today: | 1 |