SPI_Test/tb/pllreg_tb/pllreg_driver.sv

56 lines
719 B
Systemverilog

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