URL
https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk
Subversion Repositories uart2bus_testbench
[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [deprecated/] [uvm_resource_converter.svh] - Rev 16
Compare with Previous | Blame | View Log
//----------------------------------------------------------------------// Copyright 2010 Mentor Graphics Corporation// Copyright 2011 Cadence Design Systems, Inc.// Copyright 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.//----------------------------------------------------------------------//------------------------------------------------------------------------------//// CLASS- uvm_resource_converter#(T)//// The uvm_resource_converter class provides a policy object for doing// convertion from resource value to string.////------------------------------------------------------------------------------class m_uvm_resource_converter #(type T=int);// Function- convert2string// Convert a value of type ~T~ to a string that can be displayed.//// By default, returns the name of the type//virtual function string convert2string(T val);return {"(", `uvm_typename(val), ") ?"};endfunctionendclass//----------------------------------------------------------------------//// CLASS- uvm_resource_default_converter// Define a default resource value converter using '%p'.//// May be used for almost all types, except virtual interfaces.// Default resource converters are already defined for the// built-in singular types using the <uvm_resource_default_converters>// class.////----------------------------------------------------------------------class m_uvm_resource_default_converter#(type T=int) extends m_uvm_resource_converter#(T);local static m_uvm_resource_default_converter#(T) m_singleton;local string m_name;virtual function string convert2string(T val);return $sformatf("(%s) %0p", (m_name=="")? `uvm_typename(val):m_name, val);endfunctionlocal function new();endfunction// Function- register// Register this policy class as the resource value conversion function// for this resource type.////| uvm_resource_default_converter#(bit[7:0])::register();//// If a ~typename~ is specified, it will be used as the name of the type// instead of the name returned by the <uvm_resource_converter#(T)::typename()> method.//static function bit register(string typename = "");if (m_singleton == null) beginm_singleton = new();m_singleton.m_name = typename;enduvm_resource#(T)::m_set_converter(m_singleton);return 1;endfunctionendclass//----------------------------------------------------------------------//// CLASS- uvm_resource_convert2string_converter// Define a default resource value converter using convert2string() method//// May be used for all class types that contain a ~convert2string()~ method,// such as <uvm_object>.////----------------------------------------------------------------------class m_uvm_resource_convert2string_converter#(type T=int) extends m_uvm_resource_converter#(T);local static m_uvm_resource_convert2string_converter #(T) m_singleton;virtual function string convert2string(T val);return $sformatf("(%s) %0s", `uvm_typename(val),(val == null) ? "(null)" : val.convert2string());endfunctionlocal function new();endfunction// Function- register// Register this policy class as the resource value conversion function// for this resource type.////| uvm_resource_convert2string_converter#(my_obj)::register();//static function bit register();if (m_singleton == null) m_singleton = new();uvm_resource#(T)::m_set_converter(m_singleton);return 1;endfunctionendclass//----------------------------------------------------------------------//// CLASS- uvm_resource_sprint_converter// Define a default resource value converter using sprint() method//// May be used for all class types that contain a ~sprint()~ method,// such as <uvm_object>.////----------------------------------------------------------------------class m_uvm_resource_sprint_converter#(type T=int) extends m_uvm_resource_converter#(T);local static m_uvm_resource_sprint_converter #(T) m_singleton;virtual function string convert2string(T val);return $sformatf("(%s) %0s", `uvm_typename(val),(val == null) ? "(null)" : {"\n",val.sprint()});endfunctionlocal function new();endfunction// Function- register// Register this policy class as the resource value conversion function// for this resource type.////| void'(uvm_resource_sprint_converter#(my_obj)::register());//static function bit register();if (m_singleton == null) m_singleton = new();uvm_resource#(T)::m_set_converter(m_singleton);return 1;endfunctionendclass//// CLASS- m_uvm_resource_default_converters// Singleton used to register default resource value converters// for the built-in singular types.//class m_uvm_resource_default_converters;local static bit m_singleton = register();local function new();endfunction// Function- register// Explicitly initialize the singleton to eliminate race conditions//static function bit register();if (!m_singleton) begin`define __built_in(T) void'(m_uvm_resource_default_converter#(T)::register(`"T`"))`__built_in(shortint);`__built_in(int);`__built_in(longint);`__built_in(byte);`__built_in(bit);`__built_in(logic);`__built_in(reg);`__built_in(integer);`__built_in(time);`__built_in(real);`__built_in(realtime);`__built_in(string);`__built_in(uvm_bitstream_t);`__built_in(bit[7:0]);`__built_in(bit[15:0]);`__built_in(bit[31:0]);`undef __built_inm_singleton = 1;endreturn 1;endfunctionendclass
