Code Browser Pages:
Files in
vmm_eth.tar



call_back.sv
cfg_intf.sv
cfg_xtor.sv
chan.sv
cov.sv
env.sv
file_list
host_driver.sv
host_intf.sv
host_xtor_rx.sv
host_xtor.sv
phy_driver.sv
phy_intf.sv
phy_xtor_rx.sv
phy_xtor.sv
pkt_generator_rx.sv
pkt_generator.sv
pkt.sv
pro.sv
run
rx_pkt.sv
Current file: sb.sv
tb_top.v
timescale.v
top.sv
verilog_top.v



// by gopi@testbench.in
`include "vmm.sv"

`ifndef SB_CLASS
`define SB_CLASS



class sb extends vmm_xactor ;
  packet_channel exp_chan,rcv_chan;
  cov cb;
  integer exp_size,rcv_size;
  bit test_pass = 0;

  extern function new(string name,packet_channel exp_chan,packet_channel rcv_chan,cov cb);
  extern task main();
  extern task final_report();
  extern function integer exp_num_pkts();
  extern function integer rcv_num_pkts();

endclass

function sb::new(string name,packet_channel exp_chan,packet_channel rcv_chan,cov cb);
  super.new("SB",name);
  log = new("SB",name);
  this.exp_chan = exp_chan;
  this.rcv_chan = rcv_chan;
  this.exp_size = 0;
  this.rcv_size = 0;
  this.cb = cb;
endfunction

task sb::main() ;
  packet exp_pkt,rcv_pkt;
  string msg;
  super.main();
  forever
    begin
      exp_chan.get(exp_pkt);
      exp_size++;
      rcv_chan.get(rcv_pkt);

      `vmm_note(log,$psprintf("Pkt len Recieved 0 Expected 0",rcv_pkt.Pkt_Packed.size(),exp_pkt.Pkt_Packed.size()));

      rcv_size++;
      if(!exp_pkt.compare(rcv_pkt,msg))
        begin
        `vmm_note(log,msg);
        `vmm_error(log,$psprintf("ERROR :: Packet mismatch occured on pkt number 0",exp_size));
        end
      else
      this.cb.sample(exp_pkt);
    end
  endtask

task sb::final_report();
  $display("\t***********************************************");
  $display("\t    Number of packets sent     0",get_instance(),exp_size + exp_chan.size() );
  $display("\t    Number of packets Recieved 0",get_instance(),rcv_size);
  $display("\t***********************************************");
  if (exp_size == rcv_size)
  this.test_pass = 1;
  else
  `vmm_error(this.log,"Packet count mismatch ");
endtask

function integer sb::exp_num_pkts() ;
  exp_num_pkts = exp_size + exp_chan.size() ;
endfunction

function integer sb::rcv_num_pkts();
  rcv_num_pkts = rcv_size;
endfunction

`endif