URL
https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk
Subversion Repositories uart2bus_testbench
[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [comps/] [uvm_policies.svh] - Rev 16
Compare with Previous | Blame | View Log
////----------------------------------------------------------------------// Copyright 2007-2011 Mentor Graphics Corporation// Copyright 2007-2010 Cadence Design Systems, Inc.// Copyright 2010 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: Policy Classes//// Policy classes are used to implement polymorphic operations that// differ between built-in types and class-based types. Generic// components can then be built that work with either classes or// built-in types, depending on what policy class is used.//----------------------------------------------------------------------// CLASS: uvm_built_in_comp #(T)//// This policy class is used to compare built-in types.//// Provides a comp method that compares the built-in type,// T, for which the == operator is defined.//----------------------------------------------------------------------class uvm_built_in_comp #(type T=int);static function bit comp(T a, T b);return a == b;endfunctionendclass//----------------------------------------------------------------------// CLASS: uvm_built_in_converter #(T)//// This policy class is used to convert built-in types to strings.//// Provides a convert2string method that converts the built-in type, T,// to a string using the %p format specifier.//----------------------------------------------------------------------class uvm_built_in_converter #(type T=int);static function string convert2string(input T t);return $sformatf("%p" , t );endfunctionendclass//----------------------------------------------------------------------// CLASS: uvm_built_in_clone #(T)//// This policy class is used to clone built-in types via the = operator.//// Provides a clone method that returns a copy of the built-in type, T.//----------------------------------------------------------------------class uvm_built_in_clone #(type T=int);static function T clone(input T from);return from;endfunctionendclass//----------------------------------------------------------------------// CLASS: uvm_class_comp #(T)//// This policy class is used to compare two objects of the same type.//// Provides a comp method that compares two objects of type T. The// class T must provide the method "function bit compare(T rhs)",// similar to the <uvm_object::compare> method.//----------------------------------------------------------------------class uvm_class_comp #(type T=int);static function bit comp(input T a, input T b);return a.compare(b);endfunctionendclass//----------------------------------------------------------------------// CLASS: uvm_class_converter #(T)//// This policy class is used to convert a class object to a string.//// Provides a convert2string method that converts an instance of type T// to a string. The class T must provide the method// "function string convert2string()",// similar to the <uvm_object::convert2string> method.//----------------------------------------------------------------------class uvm_class_converter #(type T=int);static function string convert2string(input T t);return t.convert2string();endfunctionendclass//----------------------------------------------------------------------// CLASS: uvm_class_clone #(T)//// This policy class is used to clone class objects.//// Provides a clone method that returns a copy of the built-in type, T.// The class T must implement the clone method, to which this class// delegates the operation. If T is derived from <uvm_object>, then// T must instead implement <uvm_object::do_copy>, either directly or// indirectly through use of the `uvm_field macros.//----------------------------------------------------------------------class uvm_class_clone #(type T=int);static function uvm_object clone(input T from);return from.clone();endfunctionendclass
