System verilog SystemVerilog中结构的切片数组

System verilog SystemVerilog中结构的切片数组,system-verilog,System Verilog,假设有一个结构声明为: typedef logic [7:0] Data; typedef struct packed { logic valid; Data data; } MyStruct; MyStruct foo [8]; 结构的数组声明为: typedef logic [7:0] Data; typedef struct packed { logic valid; Data data; } MyStruct; MyStruct foo [8];

假设有一个结构声明为:

typedef logic [7:0] Data;
typedef struct packed {
    logic valid;
    Data data;
} MyStruct;
MyStruct foo [8];
结构的数组声明为:

typedef logic [7:0] Data;
typedef struct packed {
    logic valid;
    Data data;
} MyStruct;
MyStruct foo [8];
除了使用for循环之外,还有其他方法可以从所有数组元素中提取字段并形成自己的数组/位向量吗

换句话说,我希望这样做,不幸的是,这似乎不是有效的SV语法

assign all_valid =  & foo[7:0].valid;

在SystemVerilog中不能像这样分割数组,但由于您正在尝试进行缩减,因此可以使用一种数组操作方法:

assign all_valid =  foo.and() with (item.valid);

参见1800-2012 LRM中的第7.12.3节阵列缩减方法。

谢谢。那太好了!可惜Quartus不支持这一点。