System verilog 创建对对象的引用数组。

System verilog 创建对对象的引用数组。,system-verilog,System Verilog,我正在寻找一种方法,通过创建引用逻辑变量的数组来简化代码。这将允许我遍历数组。下面是我设想的伪代码(这是我在C++中要做的)。我不能将它们放在数组中,因为它们是RTL的一部分,位于不同的位置 logic A; logic B; task my_algorithm(); ref logic elements[2] = {A, B}; // This wrong, ref cannot be used in this context foreach(elements[v

我正在寻找一种方法,通过创建引用逻辑变量的数组来简化代码。这将允许我遍历数组。下面是我设想的伪代码(这是我在C++中要做的)。我不能将它们放在数组中,因为它们是RTL的一部分,位于不同的位置

logic A;
logic B;
task my_algorithm();
  ref logic elements[2] = {A, B};  // This wrong, ref cannot be used in this           context
  foreach(elements[v]) begin
    // Do same work on each element
  end
endtask : my_algorithm

谢谢,

您可以使用
inout
参数,这些参数在进入例程时被复制,然后在退出例程时被复制。(使用函数而不是任务,除非例程需要花费时间)

函数自动作废my_算法(inout逻辑A、B);
逻辑元件[2]={A,B};
foreach(元素[v])开始
//
结束

{谢谢Dave,看起来是一个很好的解决方案。希望有一天引用数组将成为LRM的一部分。
function automatic void my_algorithm(inout logic A, B);
   logic elements[2] = {A,B};
   foreach(elements[v]) begin
      //
   end
   {<<{A,B}} = elements;
endfunction