SystemVerilog中6种数组形式的使用

 

数组在SV中是四种数据类型(数组,结构体,枚举类型,字符串)中的其中一种。

SV中可以定义六种形式的数组 (定宽数组,多维数组,合并数组,非合并数组,动态数组,队列):

  • 定宽数组 int arr[0:15]; 声明一个单位为int类型深度为16的数组。
  • 多维数组 int arr[0:1][0:2]; 声明一个2行3列的数组。
  • 合并数组 bit [3:0][7:0] bytes; 将32个bits分为4组,其中每一组都是8个bits的数据。注意合并数组只能使用单bit的数据结构进行声明。

packed

  • 非合并数组 bit [7:0] b_unpack[3]; 储存单位8个bit, 深度为3.

使用合并数组还是非合并数组主要是看需不需要把数据当成一个整体来访问。

  • 动态数组; 在声明数组的时候可以对数组进行留空,但是需要在调用之前通过new[]来指定宽度。
  • 队列;使用$符号进行声明,如int q[$] = {2,3,5}; 声明队列并给定3个元素。队列的声明需要

  • 对数组进行赋值时可以使用’{4{2}}表示重复2的值四次,注意在每个包含两个值以上的{ }块前面都必须加上’ 以区分数值之间的连接。
  • 在声明数组赋值的时候在值的前面使用单引号int array[2][3]='{'{0,1,2}, '{3,4,5}} 以区分使用{ }来concatenation数值。 concatenation和assigned pattern重合了。

本文原创,错误之处在所难免!盼指出!