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