sort
キューに対してソートが実行できます。
以下、10,9,8,・・・とインデックスに値を入れたキューに対してsortを実行した例です。
module test () ;
int q0[$] ,q1[$],q2[$];
int a00 ;
initial begin
//q0キューの初期化 10,9,8,
for(int iii=0;iii<10;iii++) begin
q0[iii] = 10-iii ;
end
//q0キューの確認
t_display(q0) ;
q0.sort()
$display("--SORT--") ;
t_display(q0) ;
end
task t_display(q[$]=q0,string="q0") ;
string q_name ;
q_name = qs ;
$display("size=%d",q.size() ) ;
for (int iii=0;iii<q.size();iii++) begin
$display("%s[%d]=%d",q_name, iii, q[iii]) ;
end
endtask
endmodule
実行結果
size=10
q0[0]=10
q0[1]= 9
q0[2]= 8
q0[3]= 7
q0[4]= 6
q0[5]= 5
q0[6]= 4
q0[7]= 3
q0[8]= 2
q0[9]= 1
--SORT--
size=10
q0[0]= 1
q0[1]= 2
q0[2]= 3
q0[3]= 4
q0[4]= 5
q0[5]= 6
q0[6]= 7
q0[7]= 8
q0[8]= 9
q0[9]=10
findとfind_index
findは検索条件に一致する要素を返します。
以下の例は、キューq0の中で、3より小さい値を持つインデックスを取得し、q1というキューに代入します。
module test () ;
int q0[$],q1[$] ;
・・・・
initial begin
//q0キューの初期化
for(int iii=0;iii<10;iii++) begin
q0[iii] = 10-iii ;
end
q1 = q0.find with (item < 3) ;
t_display(q1,"q1") ;
end
・・・・
実行結果
q0[8]と q0[9]の値がそれぞれ3より小さい2と1なのでこの値を持つキューとなります。
size= 2
q1[0]= 2
q1[1]= 1
find_indexはインデックスに対して条件を設定します。
module test () ;
int q0[$],q1[$] ;
・・・・
initial begin
//q0キューの初期化
for(int iii=0;iii<10;iii++) begin
q0[iii] = 10-iii ;
end
q1 = q0.find_index() with (item < 3) ;
t_display(q1,"q1") ;
end
・・・・
実行結果
q1 = q0.find with (item < 3) ;の文に対してfindをfind_indexに対して実行するので、
インデックスの3番目より小さいインデックス(1番目と2番目)がキューに代入されます。
size= 2
q1[0]= 9
q1[1]= 8
sum
sumはキューのよその和を返します。
module test() ;
int q0[$],q1[$] ;
int a00 ;
・・・・
initial begin
//q0キューの初期化
for(int iii=0;iii<10;iii++) begin
q0[iii] = 10-iii ;
end
q1 = q0.find_index() with (item < 3) ;
a00 = q1.sum() ;
$display("q1 sum=%d",a00) ;
end
・・・・
endmodule
実行結果
q1[0]の値は9、q1[1]の値は8なので17が表示されます。
q1 sum=17
reverse
reserveはキューのインデックス番号の逆順にデータを入れ替えます。
module test () ;
・・・・
initial begin
for(int iii=0;iii<10;iii++) begin
q0[iii] = 10-iii ;
end
t_display(q0,"q0") ;
q0.reverse() ;
$display("--REVERSE--") ;
t_display(q0,"q0") ;
・・・・
endmodule
実行結果
size=10
q0[0]=10
q0[1]= 9
q0[2]= 8
q0[3]= 7
q0[4]= 6
q0[5]= 5
q0[6]= 4
q0[7]= 3
q0[8]= 2
q0[9]= 1
--REVERSE--
size=10
q0[0]= 1
q0[1]= 2
q0[2]= 3
q0[3]= 4
q0[4]= 5
q0[5]= 6
q0[6]= 7
q0[7]= 8
q0[8]= 9
q0[9]=10
shuffle
shuffleはキューの値をランダムに並べ替えます。
module test () ;
・・・・
initial begin
for(int iii=0;iii<10;iii++) begin
q0[iii] = 10-iii ;
end
t_display(q0,"q0") ;
q0.shuffule() ;
$display("--SHUFFLE--") ;
t_display(q0,"q0") ;
・・・・
実行結果
size=10
q0[0]=10
q0[1]= 9
q0[2]= 8
q0[3]= 7
q0[4]= 6
q0[5]= 5
q0[6]= 4
q0[7]= 3
q0[8]= 2
q0[9]= 1
--SHUFFLE--
size=10
q0[0]= 4
q0[1]= 5
q0[2]= 2
q0[3]= 8
q0[4]= 1
q0[5]= 9
q0[6]= 7
q0[7]= 6
q0[8]= 10
q0[9]= 3

コメント