class pllreg_driver; pllreg_trans tr; //interface virtual pllreg_if pif; virtual spi_if wif; function new(); endfunction extern task do_drive(); extern task make_pkt(); endclass : pllreg_driver task pllreg_driver::do_drive(); pif.pll_lock =32'b0; fork while(1) begin make_pkt(); end join endtask task pllreg_driver::make_pkt(); int cnt=0; cnt = 0; tr = new(); if(!tr.randomize()) $fatal(0,"Randomize Failed"); while(cnt<3000) begin @(posedge wif.clk); cnt = cnt + 1; case(cnt) tr.pll_lock: pif.pll_lock <=tr.pll_lock; endcase end endtask : make_pkt