如何检查 Verilog 枚举是否有效?
How to check that Verilog enum is valid?
如果我收到枚举:
my_cmd cmd = my_cmd'(value_from_bus);
如何轻松检查 cmd
是否为有效命令?
typedef enum int {
ADD = 1,
SUBTRACT = 3,
MULTIPLY = 7
} my_cmd;
您可以使用枚举的 name() 函数:
if (cmd.name() == "")
$display("%0d is bad", cmd);
else
$display("%s:%0d is good", cmd.name(), cmd);
也可以用$cast
检查是否有效,同时复制。
因此,与其这样做:cmd = my_cmd'(value_from_bus);
,不如这样做:
if ($cast(cmd, value_from_bus))
$display("Valid: %s", cmd.name());
else
$display("Invalid");
如果我收到枚举:
my_cmd cmd = my_cmd'(value_from_bus);
如何轻松检查 cmd
是否为有效命令?
typedef enum int {
ADD = 1,
SUBTRACT = 3,
MULTIPLY = 7
} my_cmd;
您可以使用枚举的 name() 函数:
if (cmd.name() == "")
$display("%0d is bad", cmd);
else
$display("%s:%0d is good", cmd.name(), cmd);
也可以用$cast
检查是否有效,同时复制。
因此,与其这样做:cmd = my_cmd'(value_from_bus);
,不如这样做:
if ($cast(cmd, value_from_bus))
$display("Valid: %s", cmd.name());
else
$display("Invalid");