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 47
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
