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 = {};