03. queue型配列

(更新:2021/02/05)

queue型配列(以降queue)は、配列をFIFOのように扱うためにメソッドが用意された配列です。例えば、10個のデータを順番に入れておき、それを後で、入れた順番で取り出したいといったケースで使用します。

定義(definition):

    • data_type $array_name [$];

配列サイズ(array size)

    • $array_name.size()

挿入(insert)

    • $array_name.insert(index, item)

削除(delete)

    • $array_name.delete(); //全削除 (delete all)

    • $array_name.delete(index); //指定したindex部のみ削除 (partial delete)

アイテムを先頭から取り出し(pick up item from head)

    • $array_name.pop_front()

アイテムを最後尾から取り出し(pick up item from tail)

    • $array_name.pop_back()

アイテムを先頭に追加(add item to head)

    • $array_name.push_front()

アイテムを最後尾に追加(add item to tail)

    • $array_name.push_back()

queueは未初期化時、配列はemptyになっています。

--- test.sv ---

module test;

initial begin

int array[$];

int elements;

elements = 5;

/// push 5 items

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

array.push_back(i);

end

elements = 10;

/// push 10 items

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

array.push_back(i);

end

/// pop array.size() items

elements = array.size();

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

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

end

end

endmodule

queueを定義後、最初に5つデータをqueueに格納(push_back())し、続けて10個のデータをqueueに格納しています。次に、queueに入っているデータ個数分(array.size())、pop_front()メソッドで取り出して表示しています。

--- 実行例 (example)---

# array[0] = 0

# array[1] = 1

# array[2] = 2

# array[3] = 3

# array[4] = 4

# array[5] = 0

# array[6] = 1

# array[7] = 2

# array[8] = 3

# array[9] = 4

# array[10] = 5

# array[11] = 6

# array[12] = 7

# array[13] = 8

# array[14] = 9