文章目录
Q1:定宽数组、动态数组、关联数组、队列各自特点和使用。
1 定宽数组
(1)属于静态数组,编译时候已经确定大小;
(2)分为压缩数组和非压缩数组。
1.1 压缩数组:表示在对象名前声明尺寸的数组
bit [2:0] [7:0] array1;
1.2 非压缩数组:表示在对象名后面声明尺寸的数组
bit[7:0] array2[2:0] ;
bit[7:0] array2[3];
2 动态数组
(1)其内存空间在运行时才能够确定;
(2)使用前需要用 new[]进行空间分配;
(3)定宽数组和动态数组之间可相互赋值。
元素个数相同的情况下,可以把动态数组的值复制到定宽数组;
当把定宽数组复制给动态数组时,SystemVerilog会自动调用构造函数new[ ]来分配空间并复制数值。
int dyn[], d2[];
dyn = new[5];
3 队列
队列结合了链表和数组的优点,可以在一个队列的任何位置进
行增加或者删除元素
bit queue_1[$];
int queue_2[$];
byte queue_3[$:255];
string queue_4[$];
插入元素:
q2.insert(1,j);
q2.insert(3,q);
q.push_front(6);
q.push_back(8);
删除元素:
q2.delete(1);
j = q.pop_front;
j = q.pop_back;
4 关联数组
(1)主要针对需要超大空间但又不是全部需要所有数据的时候使用;
(2)通过一个索引值和一个数据组成,索引值必须是唯一的。
data_type array_name[index_type];
int a_array1[*] ;
bit [31:0] a_array2[string];