SystemVerilog|【Queue】キューについて考える

Systemverilog
田中太郎
田中太郎

キューのmethod(組み込みfunction/task)についてまとめます

Queueのmethod

<queue_type>は、定義したキューの型です
例)int q[$] = {1, 2, 3, 4}; // 左の場合、<queue_type>はintになる

method 内容引数戻り値
a.size()要素数を返すなしint
a.insert(<位置>, <値>)<位置>に<値>を挿入するint ,<queue_type>なし
a.delete(<位置>)<位置>の要素を削除するintなし
a.pop_front()aの先頭の要素を削除して返すなしqueue
a.pop_back()aの最後の要素を削除して返すなしqueue
a.push_front(<値>)aの先頭に<値>を挿入する<queue_type>なし
a.push_back(<値>)aの最後に<値>を挿入する<queue_type>なし

サンプルコード

a.size()
module tb;
    int a[$] = {1,2,3,4,5};
    initial begin
        $display("%d", a.size());
        $finish;
    end
endmodule
// 出力
// 5
a.insert()
module tb;
    int a[$] = {1,2,3,4,5};
    initial begin
        a.insert(2, 6);
        foreach (a[i])
            $display("%d", a[i]);
        $finish;
    end
endmodule
// 出力
// 1
// 2
// 6
// 3
// 4
// 5
a.delete()
module tb;
    int a[$] = {1,2,3,4,5};
    initial begin
        a.delete(1);
        foreach (a[i])
            $display("%d", a[i]);
        $finish;
    end
endmodule
// 出力
// 1
// 3
// 4
// 5
a.pop_front()
module tb;
    int a[$] = {1,2,3,4,5};
    int b;
    initial begin
        b = a.pop_front();
        foreach (a[i])
            $display("%d", a[i]);
        $display("%d", b);
        $finish;
    end
endmodule
// 出力
// 2
// 3
// 4
// 5
// 1
a.pop_back()
module tb;
    int a[$] = {1,2,3,4,5};
    int b;
    initial begin
        b = a.pop_back();
        foreach (a[i])
            $display("%d", a[i]);
        $display("%d", b);
        $finish;
    end
endmodule
// 出力
// 1
// 2
// 3
// 4
// 5
a.push_front()
module tb;
    int a[$] = {1,2,3,4,5};
    initial begin
        a.push_front(6);
        foreach (a[i])
            $display("%d", a[i]);
        $finish;
    end
endmodule
// 出力
// 6
// 1
// 2
// 3
// 4
// 5
a.push_back()
module tb;
    int a[$] = {1,2,3,4,5};
    initial begin
        a.push_back(6);
        foreach (a[i])
            $display("%d", a[i]);
        $finish;
    end
endmodule
// 出力
// 1
// 2
// 3
// 4
// 5
// 6

まとめ

queueのmethoについてまとめました

コメント

タイトルとURLをコピーしました