今天遇到了一个动态数组的问题,作一记录,区分开了动态数组与嘟列的区别,总是有些分不清,虽然接触sv三年有余,这种小问题还是没有能摸得很透彻,很惭愧,不在家没有vcs的环境,于是借用eda playground这个好东西,可以在线编译 run 一些小demo,对于check语法实在是方便不过。
- 动态数组
int test_array[]; //no space assign now
test_array = new[10];
那么这个数组的大小就是10,若是静态数组,在定义时就要指明数组的大小
动态数组可用的“方法”有size和delete,这部分与队列相同,为了印证一些小的用法,在eda playground做了一些测试:
可见,动态数组是一定要分配空间的,否则,只定义了,没有分配空间,无论如何赋值都是没用的,值得一提的是可以有这种类似用法:
enum_type test_array[bit[63:0]][];
enum_type out_queue[];
out_queue = new[xx]; //xx is an number
test_array['hxxxx] = out_queue;
如此一来,可以通过一个完整动态数组的形式来传入参数,最近要做一个目录的模型,如此使用甚好