分析SystemVerilog中的压缩结构以确定它的大小?

问题描述 投票:2回答:1

在SystemVerilog中有没有办法分析打包结构并确定它的总体大小?

typedef struct packed unsigned {
    logic [15:0]    field_1;
    logic  [7:0]    field_2;
    logic [15:0]    field_3;
    logic  [4:0]    field_4;
} my_struct;

例如,我希望能够以程序化的方式确定上述结构的大小为45。

我查看了IEEE 1800-2012 SystemVerilog Language Reference Manual的“聚合数据类型”部分(第7章),但没有看到这样的内容。

这可能吗?如果是这样,怎么样?

verilog system-verilog
1个回答
7
投票

使用来自$bits()IEEE 1800-2012§20.6.2表达式大小系统函数:

$bits系统函数返回将表达式保存为位流所需的位数。

来自LRM的直接示例:

......鉴于声明:

typedef struct {
logic valid;
bit [8:1] data;
} MyType;

表达式$bits(MyType)应返回9,即MyType类型变量所需的数据位数。

© www.soinside.com 2019 - 2024. All rights reserved.