URL
https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk
Subversion Repositories qaz_libs
[/] [qaz_libs/] [trunk/] [basal/] [sim/] [tests/] [tb_fifo/] [fifo_sequence_item.svh] - Rev 44
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 fifo_sequence_itemextends uvm_sequence_item;`uvm_object_utils(fifo_sequence_item)// --------------------------------------------------------------------rand int delay;rand fifo_command_t command;rand logic [W-1:0] wr_data;// --------------------------------------------------------------------logic wr_full;logic rd_empty;logic [W-1:0] rd_data;logic [UB:0] count;// --------------------------------------------------------------------constraint delay_c{delay dist {0 := 90, [1:2] := 7, [3:7] := 3};}// --------------------------------------------------------------------function new(string name = "");super.new(name);endfunction : new// --------------------------------------------------------------------function bit do_compare(uvm_object rhs, uvm_comparer comparer);fifo_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;elsesame = super.do_compare(rhs, comparer);return same;endfunction : do_compare// --------------------------------------------------------------------function void do_copy(uvm_object rhs);fifo_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");delay = item.delay;command = item.command;wr_full = item.wr_full;rd_empty = item.rd_empty;wr_data = item.wr_data;rd_data = item.rd_data;count = item.count;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// --------------------------------------------------------------------endclass : fifo_sequence_item
