从systemverilog中的函数返回队列

e19*_*001 6 system-verilog

我无法编译此代码:

      function integer[$] get_register_name;
                integer ret[$];
                ret.push_back(1);
                ret.push_back(2);
                return ret;
      endfunction
Run Code Online (Sandbox Code Playgroud)

是否可以从函数返回队列?

dwi*_*kle 19

是的,您可以从函数返回队列.但要这样做,您必须使用typedef并返回该类型来定义新类型.

typedef integer queue_of_int[$];

function queue_of_int get_register_name();
   queue_of_int ret;
   ret.push_back(1);
   ret.push_back(2);
   return ret;
endfunction
Run Code Online (Sandbox Code Playgroud)

请注意,在typedef中[$],类型名称后面,而队列元素类型在类型名称之前.