AR# 7158

FPGA Express - VHDL でのエラー : 「Range 'U' to 'X' (or 'Z' to '-') not covered by choices. (VSS-838)」というエラー メッセージが表示される

説明

キーワード : 1.5, 1.5i, Foundation, 3.1, 3.2, Express, range, not, covered, VSS, 838, VSS-838, mux,multiplex, multiplexer, VHDL, 1.5J, 範囲, マルチプレクサ

重要度 : 標準

概要 :
マルチプレクサの推測をする VHDL コード ブロックの構文で、ポートが次のように定義されています。

MUX_CTRL: in STD_LOGIC;

また、処理構文のコードは次のように定義されています。

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;
AR# 7158
日付 08/11/2003
ステータス アーカイブ
種類 一般