Code Browser Pages:
| //////////////////////////////////////////////// ////s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~s//// ////s www.testbench.in s//// ////s s//// ////s VMM Tutorial s//// ////s gopi@testbench.in s//// ////s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~s//// //////////////////////////////////////////////// `ifndef GUARD_SCOREBOARD `define GUARD_SCOREBOARD class Scoreboard extends vmm_xactor; Packet_channel drvr2sb_chan; Packet_channel rcvr2sb_chan; function new(string inst = "class", int unsigned stream_id = -1, Packet_channel drvr2sb_chan = null, Packet_channel rcvr2sb_chan = null); super.new("sb",inst,stream_id); if(drvr2sb_chan == null) `vmm_fatal(this.log,"drvr2sb_channel is not constructed"); else this.drvr2sb_chan = drvr2sb_chan; if(rcvr2sb_chan == null) `vmm_fatal(this.log,"rcvr2sb_channel is not constructed"); else this.rcvr2sb_chan = rcvr2sb_chan; `vmm_note(log,"Scoreboard created "); endfunction:new task main(); Packet pkt_rcv,pkt_exp; string msg; super.main(); forever begin rcvr2sb_chan.get(pkt_rcv); $display(" 0 : Scorebooard : Scoreboard received a packet from receiver ",$time); drvr2sb_chan.get(pkt_exp); if(pkt_rcv.compare(pkt_exp,msg)) $display(" 0 : Scoreboardd :Packet Matched ",$time); else `vmm_error(this.log,$psprintf(" Packet MissMatched \n ",msg)); end endtask : main endclass `endif |