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] - Rev 49

Go to most recent revision | Compare with Previous | Blame | View Log

//////////////////////////////////////////////////////////////////////
////                                                              ////
//// Copyright (C) 2018 Authors and OPENCORES.ORG                 ////
////                                                              ////
//// This source file may be used and distributed without         ////
//// restriction provided that this copyright statement is not    ////
//// removed from the file and that any derivative work contains  ////
//// the original copyright notice and the associated disclaimer. ////
////                                                              ////
//// This source file is free software; you can redistribute it   ////
//// and/or modify it under the terms of the GNU Lesser General   ////
//// Public License as published by the Free Software Foundation; ////
//// either version 2.1 of the License, or (at your option) any   ////
//// later version.                                               ////
////                                                              ////
//// This source is distributed in the hope that it will be       ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
//// PURPOSE.  See the GNU Lesser General Public License for more ////
//// details.                                                     ////
////                                                              ////
//// You should have received a copy of the GNU Lesser General    ////
//// Public License along with this source; if not, download it   ////
//// from http://www.opencores.org/lgpl.shtml                     ////
////                                                              ////
//////////////////////////////////////////////////////////////////////

class vf_8b10b_scoreboard extends uvm_subscriber #(vf_8b10b_sequence_item);
  `uvm_component_utils(vf_8b10b_scoreboard);

  mailbox #(vf_8b10b_sequence_item) frame_buffer;
  video_frame_class channel_buffer[];
  int channel_count;

  // --------------------------------------------------------------------
  function void init(int channel_count);
    this.channel_count = channel_count;
  endfunction : init

  // --------------------------------------------------------------------
  function new (string name, uvm_component parent);
    super.new(name, parent);
    frame_buffer = new();
  endfunction : new

  // --------------------------------------------------------------------
  function void build_phase(uvm_phase phase);
  endfunction : build_phase

  // --------------------------------------------------------------------
  //
  function void print_video_frame(ref video_frame_class f_h);
    string s;
    f_h.print_config();
    $display(f_h.convert2string());
  endfunction : print_video_frame

  // --------------------------------------------------------------------

  function void write(vf_8b10b_sequence_item t);
    // print_video_frame(t.f_h);
    if(frame_buffer.try_put(t) == 0)
      `uvm_fatal(get_name(), "Couldn't put to frame_buffer!")
  endfunction : write

  // --------------------------------------------------------------------
  function void gather_channels(vf_8b10b_sequence_item t);
    if(channel_buffer.size() == 0)
      channel_buffer = new[channel_count];
      
    $display("%p", channel_buffer);
    // if(channel_buffer.find(x) with (x == ""))
      // $display("found null");
  endfunction : gather_channels

  // --------------------------------------------------------------------
  function void report_phase(uvm_phase phase);
    vf_8b10b_sequence_item t;
    while(frame_buffer.try_get(t))
      print_video_frame(t.f_h);
      
    gather_channels(t);

    // uvm_report_info(get_name(), $sformatf("Matches   : %0d", m_matches));
    // uvm_report_info(get_name(), $sformatf("Mismatches: %0d", m_mismatches));
  endfunction

// --------------------------------------------------------------------
endclass : vf_8b10b_scoreboard

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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