URL
https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk
Subversion Repositories uart2bus_testbench
[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [comps/] [uvm_pair.svh] - Rev 16
Compare with Previous | Blame | View Log
////-----------------------------------------------------------------------------// Copyright 2007-2011 Mentor Graphics Corporation// Copyright 2007-2011 Cadence Design Systems, Inc.// Copyright 2010-2011 Synopsys, Inc.// All Rights Reserved Worldwide//// Licensed under the Apache License, Version 2.0 (the// "License"); you may not use this file except in// compliance with the License. You may obtain a copy of// the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in// writing, software distributed under the License is// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR// CONDITIONS OF ANY KIND, either express or implied. See// the License for the specific language governing// permissions and limitations under the License.//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// Title: uvm_pair classes//-----------------------------------------------------------------------------// This section defines container classes for handling value pairs.//-----------------------------------------------------------------------------//-----------------------------------------------------------------------------// Class: uvm_class_pair #(T1,T2)//// Container holding handles to two objects whose types are specified by the// type parameters, T1 and T2.//-----------------------------------------------------------------------------class uvm_class_pair #(type T1=int, T2=T1) extends uvm_object;typedef uvm_class_pair #(T1, T2 ) this_type;`uvm_object_param_utils(this_type)const static string type_name = "uvm_class_pair #(T1,T2)";// Variable: T1 first//// The handle to the first object in the pairT1 first;// Variable: T2 second//// The handle to the second object in the pairT2 second;// Function: new//// Creates an instance that holds a handle to two objects.// The optional name argument gives a name to the new pair object.function new (string name="", T1 f=null, T2 s=null);super.new(name);if (f == null)first = new;elsefirst = f;if (s == null)second = new;elsesecond = s;endfunctionvirtual function string get_type_name ();return type_name;endfunctionvirtual function string convert2string;string s;$sformat(s, "pair : %s, %s",first.convert2string(), second.convert2string());return s;endfunctionvirtual function bit do_compare(uvm_object rhs, uvm_comparer comparer);this_type rhs_;if(!$cast(rhs_,rhs)) begin`uvm_error("WRONG_TYPE", {"do_compare: rhs argument is not of type '",get_type_name(),"'"})return 0;endreturn first.compare(rhs_.first) && second.compare(rhs_.second);endfunctionvirtual function void do_copy (uvm_object rhs);this_type rhs_;if(!$cast(rhs_,rhs))`uvm_fatal("WRONG_TYPE", {"do_copy: rhs argument is not of type '",get_type_name(),"'"})first.copy(rhs_.first);second.copy(rhs_.second);endfunctionendclass//-----------------------------------------------------------------------------// CLASS: uvm_built_in_pair #(T1,T2)//// Container holding two variables of built-in types (int, string, etc.). The// types are specified by the type parameters, T1 and T2.//-----------------------------------------------------------------------------class uvm_built_in_pair #(type T1=int, T2=T1) extends uvm_object;typedef uvm_built_in_pair #(T1,T2) this_type;`uvm_object_param_utils(this_type)const static string type_name = "uvm_built_in_pair #(T1,T2)";// Variable: T1 first//// The first value in the pairT1 first;// Variable: T2 second//// The second value in the pairT2 second;// Function: new//// Creates an instance that holds two built-in type values.// The optional name argument gives a name to the new pair object.function new (string name="");super.new(name);endfunctionvirtual function string get_type_name ();return type_name;endfunctionvirtual function string convert2string;return $sformatf("built-in pair : %p, %p", first, second);endfunctionvirtual function bit do_compare(uvm_object rhs, uvm_comparer comparer);this_type rhs_;if(!$cast(rhs_,rhs)) begin`uvm_error("WRONG_TYPE", {"do_compare: rhs argument is not of type '",get_type_name(),"'"})return 0;endreturn first == rhs_.first && second == rhs_.second;endfunctionfunction void do_copy (uvm_object rhs);this_type rhs_;if(!$cast(rhs_,rhs))`uvm_fatal("WRONG_TYPE", {"do_copy: rhs argument is not of type '",get_type_name(),"'"})first = rhs_.first;second = rhs_.second;endfunctionendclass
