gpt4 book ai didi

arrays - 索引操作对 SystemVerilog 中的整数类型有何作用?

转载 作者:行者123 更新时间:2023-12-04 05:19:28 26 4
gpt4 key购买 nike

我正在尝试将一些 SystemVerilog 代码移植到 C++/SystemC,并且在我看到奇怪的数组索引的几行上有点卡住了。这是我所看到的简化版本。

typedef enum bit [2:0] {enu_red, enu_blue, enu_green} typ_enum; 

typedef struct packed {
bit [3:0] field1;
bit [3:0] field2;
} typ_struct;

...

var int arr_ints[typ_struct];
var int que_ints[$];

typ_struct obj_struct;
typ_enum obj_enum;

int i = 3;

// assume all the declared variables hold valid values at this point
// also assume que_ints[i] is valid

if ((!arr_ints[obj_struct][1]) // these two lines are the problem
&& (que_ints[i][obj_struct])
)
begin
// do something
end

现在在我移植这段代码后,我得到了一些我完全理解的编译器错误,因为原始代码在我看来并不完全正确。在 if 语句的第一行,它看起来像是试图用 bool 值索引一个整数类型。在第二个中,它看起来像是试图用枚举值索引一个整数类型。然而这段代码显然有效。有人可以解释一下它在做什么吗?

最佳答案

这对整数类型进行位切片。您将访问底层 int 的实际位代表。

que_ints[5]是整数 0xdeadbeef ,那么:

  • que_ints[5][3]是 1
  • que_ints[5][7:4]0xe .

  • 在 SystemC 中 range() 函数是推论。

    关于arrays - 索引操作对 SystemVerilog 中的整数类型有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822906/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com