SystemVerilog Multi Dimensional枚举数组

时间:2018-02-19 20:42:06

标签: system-verilog

以下是如何定义枚举类型{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 :(得分: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;
相关问题