在 SystemVerilog 中切片结构数组
Slicing array of struct in SystemVerilog
假设有一个结构声明为:
typedef logic [7:0] Data;
typedef struct packed {
logic valid;
Data data;
} MyStruct;
结构数组声明为:
MyStruct foo [8];
除了使用 for 循环从所有数组元素中提取一个字段并形成自己的字段之外,还有其他方法吗?array/bit-vector?
换句话说,我希望做这样的事情,不幸的是,这似乎不是有效的 SV 语法。
assign all_valid = & foo[7:0].valid;
您不能在 SystemVerilog 中像这样对数组进行切片,但是因为您正在尝试进行缩减,所以可以使用一种数组操作方法:
assign all_valid = foo.and() with (item.valid);
请参阅 1800-2012 LRM 中的第 7.12.3 节数组缩减方法。
假设有一个结构声明为:
typedef logic [7:0] Data;
typedef struct packed {
logic valid;
Data data;
} MyStruct;
结构数组声明为:
MyStruct foo [8];
除了使用 for 循环从所有数组元素中提取一个字段并形成自己的字段之外,还有其他方法吗?array/bit-vector?
换句话说,我希望做这样的事情,不幸的是,这似乎不是有效的 SV 语法。
assign all_valid = & foo[7:0].valid;
您不能在 SystemVerilog 中像这样对数组进行切片,但是因为您正在尝试进行缩减,所以可以使用一种数组操作方法:
assign all_valid = foo.and() with (item.valid);
请参阅 1800-2012 LRM 中的第 7.12.3 节数组缩减方法。