typedef列挙型では、割り当てられていない値の範囲を持つことができますか?たとえば、SystemVerilog - 列挙型で範囲を指定できますか?
typedef bit [3:0] enum {BLUE = 4'h0, RED = 4'h1, OTHERS = 4'h2 to 4'hF};
またはそれに類するものですか?割り当てられていない値をユーザーが選択した場合はどうなりますか?
typedef列挙型では、割り当てられていない値の範囲を持つことができますか?たとえば、SystemVerilog - 列挙型で範囲を指定できますか?
typedef bit [3:0] enum {BLUE = 4'h0, RED = 4'h1, OTHERS = 4'h2 to 4'hF};
またはそれに類するものですか?割り当てられていない値をユーザーが選択した場合はどうなりますか?
列挙型に範囲を含めることはできません。しかし、それ以外は、どのように使用するかによって異なります。たとえば、case文の場合:
case(sel)
BLUE: do-blue-function;
RED: do-red-function;
default: do-other-function;
endcase
System-VerilogのEnumは範囲外の値を持つことがあります。
// a four-state base type (with default value 3'bxxx)
// |
// | the base value of IDLE will be 3'b000
// | |
// V V
typedef enum logic[2:0] {IDLE, GO1, GO2} state_type;
state_type state;
上記デフォルトでそう変数state
logic
のデフォルトのタイプは、x
です:列挙型を使用してのFSMを記述するとき、これはあなたが基本型、例えばとして4状態タイプを選択した場合に特に便利です値は3'bxxx
になります。したがって、4状態の基本型を使用することによって、FSMが適切にリセットされたことをチェックする初期化されていない状態をモデル化することができます。
したがって、「割り当てられていない値をユーザーが選択するとどうなりますか?」と尋ねられます。変数はその値を持ち、Sergeのcase
の例のように、inは定義された列挙値のいずれとも等しくありません。