02. 動的配列(Dynamic Array)

動的配列は、配列の型と名前を定義して、要素数は「使用時」に定義して使う配列です。配列の要素数をいくつにすればいいかコーディング時には未定で、しかし静的にあまり大きく取っておくとメモリを食うようなケースで使うといいかもしれません。

定義:

data_type $array_name [];

初期化:

$array_name = new[num];

arrayサイズ:

$array_name.size()

配列削除:

$array_name.delete()


--- test.sv ---

module test;

initial begin

int array[];

int elements;

elements = 5;

array = new[elements];

for(int i=0; i<elements; i++)begin

array[i]=i;

end

for(int i=0; i<elements; i++)begin

$display("array[%0d] = %0d", i, array[i]);

end

end

endmodule

--- 実行例 ---

# array[0] = 0

# array[1] = 1

# array[2] = 2

# array[3] = 3

# array[4] = 4

この例では、int型の動的配列array[]を定義しています。また、要素数elementsを定義して、そこに代入された値の配列が生成されるようにしています。この例だけみると、動的配列ではなくても静的配列で十分ではないの?と思われるかもしれません。ですが、実際にコーディングの規模が大きくなり、配列で扱う型や要素数が増えてくるに従い、静的配列ではメモリを余分に食ってしまいシミュレータ速度を遅くする原因にもなります。