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