从systemverilog函数中返回队列或者动态数组

596 阅读1分钟

来看一下下面这段代码:

 function integer[$] get_register_name;
     integer ret[$];
     ret.push_back(1);
     ret.push_back(2);
     return ret;
 endfunction

在我使用的VCS编译器中,是编译不过的。那么如果想从函数中,返回队列或者动态数组,我们应该怎么做呢?

答案就是自己用typedef定义一个类型。

typedef int 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