首页 文章

SystemVerilog Multi Dimensional枚举数组

提问于
浏览
0

以下是如何定义枚举类型{S0,S1,S2,S3}的2 * N数组的示例:

typedef enum logic [N-1:0][1:0]{S0,S1,S2,S3} state_t; (*)

因此,上述2 * N阵列的每个元素可以是S0或S1或S2或S3 .

假设我将{S0,S1,S2,S3}定义为单独的枚举类型:

typedef enum {S0,S1,S2,S3} st_t;

那么现在我怎么能重写声明(*)?

可以重写如下吗?

typedef enum st_t [N-1:0][1:0] state_t; (**)

谢谢!

1 回答

  • 0

    正如Serge建议的那样,这可能会起作用:

    typedef enum {S0,S1,S2,S3} st_t;
    typedef st_t [N-1:0][1:0] state_t;
    

    除此之外,根据Enumerations types,你也可以这样做:

    typedef enum logic [1:0] {S0,S1,S2,S3} st_t_new;
    typedef st_t_new [N-1:0] state_t;
    

相关问题