System Verilog学习笔记(十二)——数组(2)

System Verilog学习笔记(十二)——数组(2)

动态数组

  • 在编译时不会为其定制尺寸,而是在仿真运行时来确定
  • 动态数组一开始为空,需要使用new[ ]来为其分配空间
  • 声明方式
int dyn[],d2[]; //声明了两个动态数组
initial begin
	dyn=new[5];  //包含5个元素
	foreach (dyn[j]) dyn[j]=j;  //初始化元素
	d2=dyn; //拷贝数组
	dyn.delete(); //删除所有元素,原来开辟的空间也清除了
	dyn=new[0]; //清空元素
end
  • .size( )可以返回动态数组的大小
  • .delete( )可以清空动态数组,使其尺寸为0
  • '{ }可以完成初始化

队列

队列结合了数组和链表,可以在队列的任何位置添加或者删除数据成员,可以通过索引来访问队列的任何一个成员。

  • [ $ ]来声明队列,队列的索引值是从0到$
  • 通过insert(pos, val)来在指定位置插入数据成员
  • 通过delete( )来删除所有数据成员,也可以删除某一个成员
  • .push_front ():在队列最前端插入值
  • .push_back():在队列最后端插入值
  • .pop_back():取出队列最后一个值
  • .pop_front():取出队列最前面一个值
  • 队列中不能插入队列

关联数组

  • 关联数组可以用来存放散列的数据成员,散列的索引类型可以为任意类型(整型,字符串或者其他),存储的数据也可以为任何类型
  • .first():得到第一个索引值
  • .next():得到当前索引的下一个索引值

缩减方法

  • 把一个数组缩减成一个值
  • .sum(),它是对数组中所有的元素求和
  • .product( ) 所有元素乘积
  • .and( ) 所有元素与
  • .or( ) 所有元素或
  • .xor( ) 异或

定位方法

  • .unique( ):返回只出现过一次的元素
  • .min( )和.max( ):返回最小和最大值
  • .find…with( ):查找满足条件的数据成员

排序方法

  • .reverse( ):逆序颠倒
  • .sort( ):升序排列
  • .rsort( ):降序排列
  • .shuffle( ):随机打乱

你可能感兴趣的:(System,Verilog学习笔记,学习,笔记)