case MUX_CTRL is when '0' => <<do_something>>; when '1' => <<do_something_else>>; end case;
上記の場合、FPGA Express で次のエラー メッセージが表示されます。
Error: Range 'U' to 'X' not covered by choices. (VSS-838) (FE-dm-hdlc-unknown) Error: "Range 'Z' to '-' not covered by choices. (VSS-838) (FE-dm-hdlc-unknown)
ソリューション
このエラーは、STD_LOGIC で使用できる値で CASE ステートメントに含まれていないものがあるために発生します。 STD_LOGIC の値には、0 および 1 だけではなく、U、X、Z などの値が含まれます。 このような値を含むには、次を CASE ステートメントに追加してください。
when others => null;
これは、CASE ステートメントの最後の比較後に追加してください。
次は HDL Editor Language Assistant に記された CASE ステートメントのコードです。
case <expression> is when <choices> => <statements> when <choices> => <statements> when others => <statements> end case; -- example: --case SEL is -- when 0 | 1 | 2 => -- Z <= B; -- when 3 to 10 => -- Z <= C; -- when others => -- null; --end case;