Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

queueのdelete関数に引数がない?

Verification Engineerの戯言

VMM-1.0のsv/std_lib/vmm_scheduler.svファイルの次の部分をみてください。
    task vmm_scheduler::schedule_cycle();
      vmm_data          data;
      vmm_channel       srcs[$];
      int unsigned      ids[$];
   
      while (1) begin
        srcs.delete();
        ids.delete();

        ... 途中、すごーく省略

    endtask

srcsとidsで型は違いますが、queueなのでdelete関数にはインデックスが必要です。
つまり、次のようにする必要があるのですが、
        begin
            int i;
            int size = srcs.size();
            for(i=0 ; i<size ; i++ ) begin
                srcs.delete(0);
                ids.delete(0);
            end
        end
queueのサイズ回、先頭アイテムを削除します。
または、次のような簡単な方法で、
        srcs = {};
        ids  = {};

P.S
この件のその後については、こちらを確認してください。

検証、Verification、SystemVerilog、VMM、Verification Methodology Manual