OpenCores
URL https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [BFM/] [src/] [8b10b/] [video_frame/] [vf_8b10b_scoreboard.svh] - Blame information for rev 47

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 46 qaztronic
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
//// Copyright (C) 2018 Authors and OPENCORES.ORG                 ////
4
////                                                              ////
5
//// This source file may be used and distributed without         ////
6
//// restriction provided that this copyright statement is not    ////
7
//// removed from the file and that any derivative work contains  ////
8
//// the original copyright notice and the associated disclaimer. ////
9
////                                                              ////
10
//// This source file is free software; you can redistribute it   ////
11
//// and/or modify it under the terms of the GNU Lesser General   ////
12
//// Public License as published by the Free Software Foundation; ////
13
//// either version 2.1 of the License, or (at your option) any   ////
14
//// later version.                                               ////
15
////                                                              ////
16
//// This source is distributed in the hope that it will be       ////
17
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
18
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
19
//// PURPOSE.  See the GNU Lesser General Public License for more ////
20
//// details.                                                     ////
21
////                                                              ////
22
//// You should have received a copy of the GNU Lesser General    ////
23
//// Public License along with this source; if not, download it   ////
24
//// from http://www.opencores.org/lgpl.shtml                     ////
25
////                                                              ////
26
//////////////////////////////////////////////////////////////////////
27
 
28
class vf_8b10b_scoreboard extends uvm_subscriber #(vf_8b10b_sequence_item);
29
  `uvm_component_utils(vf_8b10b_scoreboard);
30
 
31 47 qaztronic
  mailbox #(vf_8b10b_sequence_item) frame_buffer;
32
  video_frame_class channel_buffer[];
33
  int channel_count;
34
 
35 46 qaztronic
  // --------------------------------------------------------------------
36 47 qaztronic
  function void init(int channel_count);
37
    this.channel_count = channel_count;
38
  endfunction : init
39
 
40
  // --------------------------------------------------------------------
41 46 qaztronic
  function new (string name, uvm_component parent);
42
    super.new(name, parent);
43 47 qaztronic
    frame_buffer = new();
44 46 qaztronic
  endfunction : new
45
 
46
  // --------------------------------------------------------------------
47
  function void build_phase(uvm_phase phase);
48
  endfunction : build_phase
49
 
50
  // --------------------------------------------------------------------
51
  //
52
  function void print_video_frame(ref video_frame_class f_h);
53
    string s;
54
    f_h.print_config();
55
    $display(f_h.convert2string());
56
  endfunction : print_video_frame
57
 
58
  // --------------------------------------------------------------------
59 47 qaztronic
 
60 46 qaztronic
  function void write(vf_8b10b_sequence_item t);
61 47 qaztronic
    // print_video_frame(t.f_h);
62
    if(frame_buffer.try_put(t) == 0)
63
      `uvm_fatal(get_name(), "Couldn't put to frame_buffer!")
64 46 qaztronic
  endfunction : write
65
 
66
  // --------------------------------------------------------------------
67 47 qaztronic
  function void gather_channels(vf_8b10b_sequence_item t);
68
    if(channel_buffer.size() == 0)
69
      channel_buffer = new[channel_count];
70
 
71
    $display("%p", channel_buffer);
72
    // if(channel_buffer.find(x) with (x == ""))
73
      // $display("found null");
74
  endfunction : gather_channels
75
 
76
  // --------------------------------------------------------------------
77 46 qaztronic
  function void report_phase(uvm_phase phase);
78 47 qaztronic
    vf_8b10b_sequence_item t;
79
    while(frame_buffer.try_get(t))
80
      print_video_frame(t.f_h);
81
 
82
    gather_channels(t);
83
 
84 46 qaztronic
    // uvm_report_info(get_name(), $sformatf("Matches   : %0d", m_matches));
85
    // uvm_report_info(get_name(), $sformatf("Mismatches: %0d", m_mismatches));
86
  endfunction
87
 
88
// --------------------------------------------------------------------
89
endclass : vf_8b10b_scoreboard

powered by: WebSVN 2.1.0

© copyright 1999-2020 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.