|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- class counter_sb;
-
- mailbox #(counter_trans) rm2sb, rdmon2sb;
-
- event DONE;
-
- int count_transaction, data_verified;
-
- counter_trans cov_h, rcvd_h;
-
- covergroup counter_cov;
- option.per_instance = 1;
- RST: coverpoint cov_h.rst {bins r[] = {0,1};}
- LD: coverpoint cov_h.load {bins l[] = {0,1};}
- UD: coverpoint cov_h.updown {bins ud[] = {0,1};}
- DATA: coverpoint cov_h.data {bins d[] = {[0:15]};}
- DOUT: coverpoint cov_h.data_out {bins dout[] = {[0:15]};}
-
- LDxDATA: cross LD, DATA;
- UDxDOUT: cross UD, DOUT;
- RSTxLDxDATA: cross RST, LD, DATA;
- RSTxLDxUD: cross RST, LD, UD;
- endgroup
-
- function new(mailbox #(counter_trans) rm2sb, mailbox #(counter_trans) rdmon2sb);
- this.rm2sb = rm2sb;
- this.rdmon2sb = rdmon2sb;
- counter_cov = new();
- endfunction
-
- task start;
- fork
- forever
- begin
- rm2sb.get(rcvd_h);
- cov_h = rcvd_h;
- counter_cov.sample();
- //--------------------//
- rdmon2sb.get(cov_h);
- check(rcvd_h);
- end
- join_none
- endtask
-
- task check(counter_trans rcvd_h);
-
- count_transaction++;
-
- if(cov_h.compare(rcvd_h))
- begin
- counter_cov.sample();
- data_verified++;
- end
-
- if(count_transaction >= no_of_transaction)
- ->DONE;
- endtask
-
- function void report;
- $display("--------------SCOREBOARD REPORT----------------");
- $display("Number of transactions received : %0d", count_transaction);
- $display("Number of transactions verified : %0d", data_verified);
- $display("-----------------------------------------------");
- endfunction
-
-
-
-
- endclass :counter_sb
|