我在这样的模块中声明了一个结构:
module myModule;
struct {
logic a;
logic b;
logic [A - 1:0] c[0:B - 1];
logic [C - 1:0] d;
} [D - 1:0] e [0:E - 1][0:F - 1];
endmodule
我想像解包数组一样使用c
,但Verilog不允许这样做。它会在定义c
的行上引发错误:
Unsupported: Unpacked array in packed struct/union
有解决方法吗?
答案 0 :(得分:2)
为了拥有一个打包数组,必须打包所有元素。所以要么使结构包装:
struct packed {
logic a;
logic b;
logic [A - 1:0] [0:B - 1] c;
logic [C - 1:0] d;
} [D - 1:0] e [0:E - 1][0:F - 1];
或将e数组全部解压缩
struct {
logic a;
logic b;
logic [A - 1:0] [0:B - 1] c;
logic [C - 1:0] d;
} e [0:E - 1][0:F - 1][D - 1:0];
BTW,强烈建议您使用typedef
作为结构,而不是使用匿名结构类型。