【问题标题】:Slicing array of struct in SystemVerilog在 SystemVerilog 中切片结构数组
【发布时间】:2015-09-09 01:18:36
【问题描述】:

假设有一个结构声明为:

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;

【问题讨论】:

    标签: system-verilog


    【解决方案1】:

    您不能在 SystemVerilog 中像这样对数组进行切片,但是因为您正在尝试进行缩减,所以您可以使用一种数组操作方法:

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

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

    【讨论】:

    • 谢谢。这很整洁!太糟糕了,这不受 Quartus 的支持。
    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多