TestBase.sv
==========================
`define svm_component_utils(T) typedef svm_component_registery #(T,`"T`") this_type;
class TestBase extends svm_component;
Environment env;
virtual router_io router;
Packet pkt;
int channel_num = 16;
Driver_clk_pkt drv_ovd[ ];
`svm_component_utils(TestBase)
function new(string name);
super.new(name);
router = top.top_io;
env = new(router,channel_num);
drv_ovd = new[channel_num];
endfucntion
virtual task run_test();
env.build();
begin
foreach(env.drv[i]) begin
drv_ovd[i] = new($sformatf("drv_ovd[%0d],i), i, env.sem, env.gen[i].out_box[i], env.scb.driver_mbox, env.router);
env.drv[i] = drv_ovd[i];
end
end
env.reset();
cfg_dut();
begin
for(i = 0; i<channel_num; i++)
for(j = 0; j< `PKT_NUM; j++) begin
pkt = new;
svm_do();
pkt.sa = i;
env.gen[i].pkt2send.push_back(pkt);
pkt.display();
end
end
env.run();
env.wrap_up();
endtask
virtual task svm_do();
if(!pkt.randomize())
$finish();
endtask
virtual task cfg_dut();
force top.dut.reg1 = 1;
force top.dut.reg2 = 2;
force top.dut.reg3 = 3;
endtask
endclass