URL
https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk
Subversion Repositories qaz_libs
[/] [qaz_libs/] [trunk/] [BFM/] [src/] [anf/] [s_anf_api.svh] - Rev 49
Compare with Previous | Blame | View Log
////////////////////////////////////////////////////////////////////////// //////// Copyright (C) 2019 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_anf_api #(type T = shortreal) extends s_avf_api;`uvm_object_param_utils(s_anf_api #(T))// --------------------------------------------------------------------function numeric_frame#(T) new_frame;numeric_frame #(T) f_h = new();f_h.init( '{c_h.lines_per_frame, c_h.pixels_per_line}, c_h.pixels_per_clk);return f_h;endfunction// --------------------------------------------------------------------task put_array(numeric_frame #(T) f_h);f_h.make_2d_frame();frame_buffer.put(f_h);endtask// --------------------------------------------------------------------task automatic put_test_pattern(string pattern, T value = 0.0);numeric_frame #(T) f_h = new();f_h.init( '{c_h.lines_per_frame, c_h.pixels_per_line}, c_h.pixels_per_clk);case(pattern.tolower)"constant": f_h.a_h.make_2d_constant(value);// "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!")endcasef_h.make_2d_frame();frame_buffer.put(f_h);uvm_report_info(get_name(), $sformatf("| put_test_pattern(%s)", pattern.tolower));endtask// --------------------------------------------------------------------task load_from_file(string file_name);byte mem[3:0];integer fd;integer code;int x, y;numeric_frame #(T) f_h = new();fd = $fopen(file_name, "rb");f_h.init( '{c_h.lines_per_frame, c_h.pixels_per_line}, c_h.pixels_per_clk);f_h = new_frame();for(int i = 0; $feof(fd) == 0; i++)begincode = $fread(mem, fd);y = i / c_h.pixels_per_line;x = i % c_h.pixels_per_line;f_h.lines[y].pixel[x] = {>>{mem}};endframe_buffer.put(f_h);$fclose(fd);endtask// --------------------------------------------------------------------function new(string name = "s_anf_api");super.new(name);endfunction// --------------------------------------------------------------------endclass
