URL
https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk
Subversion Repositories qaz_libs
[/] [qaz_libs/] [trunk/] [BFM/] [src/] [axis_video_frame/] [s_avf_api.svh] - Rev 45
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 s_avf_apiextends uvm_sequence #(avf_sequence_item);`uvm_object_utils(s_avf_api)avf_sequence_item item;// --------------------------------------------------------------------mailbox #(video_frame_class) frame_buffer;int pixels_per_line;int lines_per_frame;int bits_per_pixel;int bytes_per_pixel;int pixels_per_clk;// --------------------------------------------------------------------function void init( int pixels_per_line, int lines_per_frame, int bits_per_pixel, int pixels_per_clk);this.pixels_per_line = pixels_per_line;this.lines_per_frame = lines_per_frame;this.bits_per_pixel = bits_per_pixel;this.bytes_per_pixel = (bits_per_pixel % 8 == 0)? (bits_per_pixel / 8): (bits_per_pixel / 8) + 1;this.pixels_per_clk = pixels_per_clk;endfunction : init// --------------------------------------------------------------------task automatic put_frame(string pattern, int pixel = 0);video_frame_class f_h = new;f_h.init( pixels_per_line, lines_per_frame, bits_per_pixel, pixels_per_clk);case(pattern.tolower)"constant": f_h.make_constant(pixel);"counting": f_h.make_counting();"horizontal": f_h.make_horizontal();"vertical": f_h.make_vertical();"random": f_h.make_random();default: `uvm_fatal(get_name(), "Pattern not supported!")endcaseframe_buffer.put(f_h);uvm_report_info(get_name(), $sformatf("| put_frame(%s)", pattern.tolower));endtask: put_frame// --------------------------------------------------------------------task send_frame_buffer( uvm_sequencer_base seqr, uvm_sequence_base parent = null);this.start(seqr, parent);endtask// --------------------------------------------------------------------task body();item = avf_sequence_item::type_id::create("avf_sequence_item");start_item(item);if(frame_buffer.num() != 0)item.frame_buffer = this.frame_buffer;finish_item(item);endtask// --------------------------------------------------------------------function new(string name = "s_avf_api");super.new(name);frame_buffer = new;endfunction// --------------------------------------------------------------------endclass : s_avf_api
Go to most recent revision | Compare with Previous | Blame | View Log
