The Case Statement lists the alternatives that may be activated
depending on the value of the variable, group, or expression
following the CASE keyword.
The following example shows a Case Statement:
CASE f[].q IS
WHEN H"00" =>
addr[] = 0;
s = a & b;
WHEN H"01" =>
count[].d = count[].q + 1;
WHEN H"02", H"03", H"04" =>
f[3..0].d = addr[4..1];
WHEN OTHERS =>
f[].d = f[].q;
END CASE;
The Case Statement has the following characteristics:
- The keywords CASE and IS enclose a
Boolean expression, group, or state machine (in the example shown
above, f[].q).
- The Case Statement is terminated by the keywords END
CASE and a semicolon (;).
- One or more unique alternatives are listed in the
WHEN clauses in the body of the Case Statement. Each
WHEN clause begins with the keyword
WHEN.
- In each alternative WHEN clause, one or more
comma-separated constant values are followed by an arrow symbol
(=>). In this example, the H"02",
H"03", and H"04" constant values are
listed in a single WHEN clause; the H"00"
and H"01" constant values are listed in separate
WHEN clauses.
- If the Boolean expression following the CASE
keyword evaluates to a specific alternative, all the behavioral
statements following the arrow are activated. In the example shown
above, if f[].q evaluates to H"01", the
Boolean equation count[].d = count[].q + 1 is
activated.
- When no other alternative is true, the optional keywords
WHEN OTHERS define the default alternative. In the
example shown above, if f[].q does not equal
H"00", H"01", or H"CF", the
Boolean equation f[].d = f[].q is activated.
- The Defaults Statement defines the default behavior if the
WHEN OTHERS clause is not used.
- If the Case Statement is used to define the transitions of a
state machine, the keywords WHEN OTHERS cannot be used
to recover from illegal states of an n-bit state machine
unless the state machine contains exactly 2^n states.
- Each behavioral statement ends with a semicolon
(;).