【发布时间】:2020-02-07 03:57:53
【问题描述】:
typedef enums 提供了一种方便的方式来描述一组名称-值对。有没有办法在所有级别使用枚举来链接它们以创建更深层次的结构?
例如,我有以下内容:
typedef enum logic {ALPHA=0, BETA=1} a_t;
typedef enum logic {GAMMA=0, DELTA=1} b_t;
typedef enum logic {ZETA=0, ETA=1} c_t;
...
我想创建一个由a_t 和b_t 组成的变量c。这可能吗?
类似:
a_t b_t c;
所以在c 的每个维度上,我都可以拥有enums。
编辑:一些澄清 - 假设 a_t、b_t 和 c_t 是不可变的,因为它们是自动生成的。并且有数百个这样不同的枚举。我想根据需要创建更大的结构,因为自动生成它们的所有组合会使代码变得太大和混乱。
例如,假设我的a_t 描述了主设备的数量,而b_t 描述了从设备的数量。我想创建一个结构,在我的信号中有这个层次结构,同时允许enums 让它们易于阅读和使用。
所以,是这样的:
c[MASTER_0][SLAVE_0]
c[MASTER_0][SLAVE_1]
c[MASTER_1][SLAVE_0]
c[MASTER_1][SLAVE_1]
【问题讨论】:
-
我不明白你想要
c是什么。您谈到“维度”,这表明您需要一个数组。你能用一个typedef声明c吗? -
看起来你希望你的 'c' 是一个包含所有 4 个常量的枚举。这是不可能。您可以通过
struct {a_t c1; b_t c2} c;创建一个结构 -
结构
a_t和b_t是不可变的。我想知道是否有办法使用两个单独的枚举并使用这两个创建第三个。
标签: enums typedef system-verilog