SystemVerilog枚举可以为null吗?

时间:2013-12-17 23:49:19

标签: enums system-verilog

我正在使用枚举方法name()来打印枚举变量的字符串值。

我应该先进行null检查吗?

2 个答案:

答案 0 :(得分:2)

name()方法无法返回null。如果值与枚举值不对应,它将返回空字符串。建议进行空字符串检查。

引自IEEE std 1800-2012§6.19.5.6名称()

name()方法返回给定枚举值的字符串表示形式。如果给定值不是枚举的成员,则name()方法返回空字符串。

答案 1 :(得分:1)

不,您无需担心null枚举。但是,如果枚举没有与0

对应的状态,则可以取消初始化

例如:

typedef enum {STATE0, STATE1} plain_enum;
typedef enum {VAL0=1, VAL1} special_enum;

module test;

  initial begin
    plain_enum plain;
    special_enum special;
    $display("plain: %s", plain.name());
    $display("special: %s", special.name());
  end

endmodule

返回:

# plain: STATE0
# special: 

因为special_enum没有与0

对应的状态

在此处编辑/重新运行代码:http://www.edaplayground.com/s/4/647