Code Browser Pages:
| #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 |