SystemVerilog枚举可以为null吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SystemVerilog枚举可以为null吗?相关的知识,希望对你有一定的参考价值。

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

我应该先进行null检查吗?

答案

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

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

The name() method returns the string representation of the given enumeration value. If the given value is not a member of the enumeration, the name() method returns the empty string.
另一答案

不,你不需要担心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

以上是关于SystemVerilog枚举可以为null吗?的主要内容,如果未能解决你的问题,请参考以下文章

system verilog 数据结构(转)

SystemVerilog 编写FSM

如何在 systemverilog 中转换为 longint unsigned?

SystemVerilog结构体

SystemVerilog基本语法总结(下)

如果未设置某个宏,则阻止systemverilog编译