SystemVerilog学习笔记 - 动态数组

今天遇到了一个动态数组的问题,作一记录,区分开了动态数组与嘟列的区别,总是有些分不清,虽然接触sv三年有余,这种小问题还是没有能摸得很透彻,很惭愧,不在家没有vcs的环境,于是借用eda playground这个好东西,可以在线编译 run 一些小demo,对于check语法实在是方便不过。

  • 动态数组
动态数组区别于静态数组的一点是可以根据使用情况来new不同的空间大小,比如

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;

如此一来,可以通过一个完整动态数组的形式来传入参数,最近要做一个目录的模型,如此使用甚好

你可能感兴趣的:(UVM)