Systemverilog多维枚举阵列



这是一个示例,如何定义枚举类型的2*n数组{s0,s1,s2,s3}:

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; (**)

谢谢!

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

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

除此之外,根据枚举类型,您也可以做类似的事情:

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

最新更新