有没有办法在systemverilog中“映射”数组?

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

我正在寻找一种优雅的方法来映射数组中的条目,而不是创建新数组的 for 循环。例如

class A;
  int int_member;
endclass

A class_container[$];
int int_members_only[$];

initial begin
  // Assume class_container is populated

  // 'map' is not an available function 
  int_members_only= class_container.map(x) with (x.int_member);

  // Yes, you can do this but I want to know if there's another way
  foreach (class_container[i_class]) begin
    int_members_only.push_back(class_container[i_class].int_member);
  end
end
system-verilog uvm
2个回答
0
投票

SystemVerilog 中没有任何东西可以进行这种映射。与您的示例最接近的功能是流操作符。 (11.4.14 流运算符(打包/解包)),但这仅在类中只有一个成员时才有效。我认为这不是您需要的一般情况。


0
投票

选择 1800-2023 SV LRM 他们引入了名为map()的方法。

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