In reply to prashant.kaushik:
ok prashant
bellow code are code of env and program(testcase)
`include"intf_spi.sv"
`include"scb_spi.sv"
class environment;
virtual intf_spi.dut intf1;
virtual intf_spi.test intf2;
gen_spi gen_inst;
//transactor_spi tr;
mon_spi mnt;
dr_spi drv;
scoreboard scb;
mailbox gen_dr;
mailbox gen_scb;
mailbox mon_scb;
//virtual intf_spi.test intf2;
function new(input mailbox gen_dr,virtual intf_spi.dut intf1,virtual intf_spi.test intf2);
this.intf1=intf1;
this.intf2=intf2;
this.gen_dr=gen_dr;
endfunction
task build();
gen_inst=new(gen_dr);
drv=new(gen_dr,intf1);
gen_dr=new();
mnt=new(intf2,mon_scb);
scb=new(mon_scb,gen_scb);
endtask:build
task run_env();
fork
gen_inst.run;
$display ("start of drv runtask");
$display ("end of drv runtask");
mnt.run;
scb.run;
join_any
drv.run;
//drv.reset(10);
$display("end of environment class");
endtask
// program block/testcase
`include"env_spi.sv"
program testcase_spi(intf_spi.dut intf1,intf_spi.test intf2);
environment env;
mailbox gen_dr;
initial
begin
repeat(6)
begin
gen_dr =new();
env = new(gen_dr,intf1,intf2);
//gen_scb=new();
//mon_scb=new();
env.build();
env.run_env();
end
end
endprogram