Code Browser Pages:
Files in
rvm_eth.tar



call_back.vr
cfg_intf.vr
cfg_xtor.vr
chan.vr
cov.vr
defines.vr
env.vr
host_driver.vr
host_intf.vr
host_xtor_rx.vr
host_xtor.vr
phy_driver.vr
phy_intf.vr
phy_xtor_rx.vr
phy_xtor.vr
pkt.vr
pro.vr
run
rx_pkt.vr
Current file: sb.vr
timescale.v
top.v



#include <rvm_std_lib.vrh>

#ifndef SB_CLASS
#define SB_CLASS



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

  task new(string name,packet_channel exp_chan,packet_channel rcv_chan,cov cb);
  task main_t();
  task final();
  function integer exp_num_pkts();
  function integer rcv_num_pkts();

}

task 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;
}

task sb::main_t(){
  packet exp_pkt,rcv_pkt;
  string msg;
  super.main_t();
  while(1){
  exp_pkt = exp_chan.get_t();
  exp_size++;
  rcv_pkt = rcv_chan.get_t();

   rvm_note(log,psprintf("Pkt len Recieved 0 Expected 0",rcv_pkt.Pkt_Packed.size(),exp_pkt.Pkt_Packed.size() + 4));

  rcv_size++;
  //exp_pkt.print();
  if(!exp_pkt.compare(rcv_pkt,msg))
  { rvm_note(log,msg);rvm_note(log,psprintf("ERROR :: Packet mismatch occured on pkt number 0",exp_size)); exit(0);}
  else
  this.cb.sample(exp_pkt);
  }
}

task sb::final(){
  printf("\t***********************************************\n");
  printf("\t  SB   Number of packets sent     0\n",exp_size + exp_chan.size() );
  printf("\t  SB   Number of packets Recieved 0\n",rcv_size);
  printf("\t***********************************************\n\n");
  if (exp_size == rcv_size)
  this.test_pass = 1;
  else
  this.test_pass = 0;
}

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

function integer sb::rcv_num_pkts(){
  rcv_num_pkts = rcv_size;
}

#endif