URL
https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk
Subversion Repositories qaz_libs
[/] [qaz_libs/] [trunk/] [PCIe/] [sim/] [src/] [RIFFA/] [riffa_sequence_item.svh] - Rev 50
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 riffa_sequence_item extends uvm_sequence_item;`uvm_object_utils(riffa_sequence_item)// --------------------------------------------------------------------riffa_transaction_t tr;int dwidth;bit [31:0] len; // length in 4 byte wordsbit [30:0] off;bit last;byte data[];int beats;// --------------------------------------------------------------------int size;int index = 0;// --------------------------------------------------------------------function void init(int dwidth, bit [31:0] len, bit [30:0] off, bit last);this.dwidth = dwidth;this.len = len;this.size = len * 4;this.data = new[size];this.beats = ((size % dwidth) == 0) ? (size / dwidth) : (size / dwidth) + 1;endfunction : init// // --------------------------------------------------------------------// function bit do_compare(uvm_object rhs, uvm_comparer comparer);// riffa_sequence_item tested;// bit same;// if (rhs==null)// `uvm_fatal(get_type_name(), "| %m | comparison to a null pointer");// if (!$cast(tested,rhs))// same = 0;// else// same = super.do_compare(rhs, comparer);// return same;// endfunction : do_compare// --------------------------------------------------------------------function void do_copy(uvm_object rhs);riffa_sequence_item item;assert(rhs != null) else`uvm_fatal(get_type_name(), "| %m | copy null transaction");super.do_copy(rhs);assert($cast(item,rhs)) else`uvm_fatal(get_type_name(), "| %m | failed cast");tr = item.tr ;dwidth = item.dwidth;len = item.len ;off = item.off ;last = item.last ;data = item.data ;beats = item.beats ;size = item.size ;index = item.index ;endfunction : do_copy// // --------------------------------------------------------------------// function string convert2string();// string s0, s1, s2, s3;// s0 = $sformatf( "| %m | wr | rd | full | empty |\n");// s1 = $sformatf( "| %m | %1h | %1h | %1h | %1h |\n"// , (command == FIFO_WR) || (command == FIFO_BOTH)// , (command == FIFO_RD) || (command == FIFO_BOTH)// , wr_full// , rd_empty// );// s2 = $sformatf("| %m | wr_data: %h\n" , wr_data);// s3 = $sformatf("| %m | rd_data: %h\n" , rd_data);// if(command == FIFO_NULL)// return {s1, s0};// else if(command == FIFO_BOTH)// return {s3, s2, s1, s0};// else if(command == FIFO_WR)// return {s2, s1, s0};// else if(command == FIFO_RD)// return {s3, s1, s0};// endfunction : convert2string// --------------------------------------------------------------------function new(string name = "");super.new(name);endfunction : new// --------------------------------------------------------------------endclass
