Systemverilog中的隊列操作
阿新 • • 發佈:2018-07-14
insert pos ont 簡單 for sep work tool fas systemverilog中的隊列操作十分簡單,只需要調用函數即可。
/* Exercise platform: Questa Sim 10.1b */ module queue; int q[$] ; function void sep(); for( int i = 0 ; i < 10 ; i++ ) $write(" *** "); $display(); endfunction:sep function void print(int q[$]); sep(); foreach(q[i]) $display("queue[%2d] = %d",i,q[i]); sep(); endfunction:print initial begin for(int i = 0 ; i < 10 ; i++ ) q.insert(i,i); print(q); $display(" push back 10 "); q.push_back(10); // 還有 push_front 方法 print(q); $display(" pop back 10 "); q.pop_back(); // 還有 pop_front 方法 print(q); $display(" Delete pos 0 "); q.delete(0); // 刪除索引為0的隊列成員 print(q); q = {}; // 清除隊列,猶如c++中的析構函數 end endmodule:queue
仿真結果: # Loading work.queue(fast) >>>run # *** *** *** *** *** *** *** *** *** *** # queue[ 0] = 0 # queue[ 1] = 1 # queue[ 2] = 2 # queue[ 3] = 3 # queue[ 4] = 4 # queue[ 5] = 5 # queue[ 6] = 6 # queue[ 7] = 7 # queue[ 8] = 8 # queue[ 9] = 9 # *** *** *** *** *** *** *** *** *** *** # push back 10 # *** *** *** *** *** *** *** *** *** *** # queue[ 0] = 0 # queue[ 1] = 1 # queue[ 2] = 2 # queue[ 3] = 3 # queue[ 4] = 4 # queue[ 5] = 5 # queue[ 6] = 6 # queue[ 7] = 7 # queue[ 8] = 8 # queue[ 9] = 9 # queue[10] = 10 # *** *** *** *** *** *** *** *** *** *** # pop back 10 # *** *** *** *** *** *** *** *** *** *** # queue[ 0] = 0 # queue[ 1] = 1 # queue[ 2] = 2 # queue[ 3] = 3 # queue[ 4] = 4 # queue[ 5] = 5 # queue[ 6] = 6 # queue[ 7] = 7 # queue[ 8] = 8 # queue[ 9] = 9 # *** *** *** *** *** *** *** *** *** *** # Delete pos 0 # *** *** *** *** *** *** *** *** *** *** # queue[ 0] = 1 # queue[ 1] = 2 # queue[ 2] = 3 # queue[ 3] = 4 # queue[ 4] = 5 # queue[ 5] = 6 # queue[ 6] = 7 # queue[ 7] = 8 # queue[ 8] = 9 # *** *** *** *** *** *** *** *** *** ***
Systemverilog中的隊列操作