blob: c3f6262b9ee81a5c7a073d0cce7572e77a48a9d6 [file] [log] [blame]
//----------------------------------------------------------------------
// Copyright 2018 Cadence Design Systems, Inc.
// Copyright 2018 NVIDIA Corporation
// Copyright 2017 Cisco Systems, 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 -- NODOCS -- UVM Resource Database
//
// Topic: Intro
//
// The <uvm_resource_db> class provides a convenience interface for
// the resources facility. In many cases basic operations such as
// creating and setting a resource or getting a resource could take
// multiple lines of code using the interfaces in <uvm_resource_base> or
// <uvm_resource#(T)>. The convenience layer in <uvm_resource_db>
// reduces many of those operations to a single line of code.
//
// If the run-time ~+UVM_RESOURCE_DB_TRACE~ command line option is
// specified, all resource DB accesses (read and write) are displayed.
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// Class: uvm_resource_db_options
//
// This class contains static functions for manipulating and
// retrieving options that control the behavior of the
// resources DB facility.
//
// @uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
//----------------------------------------------------------------------
class uvm_resource_db_options;
static local bit ready;
static local bit tracing;
// Function: turn_on_tracing
//
// Turn tracing on for the resource database. This causes all
// reads and writes to the database to display information about
// the accesses. Tracing is off by default.
//
// This method is implicitly called by the ~+UVM_RESOURCE_DB_TRACE~.
//
// @uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
static function void turn_on_tracing();
if (!ready) init();
tracing = 1;
endfunction
// Function: turn_off_tracing
//
// Turn tracing off for the resource database.
//
// @uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
static function void turn_off_tracing();
if (!ready) init();
tracing = 0;
endfunction
// Function: is_tracing
//
// Returns 1 if the tracing facility is on and 0 if it is off.
//
// @uvm-accellera The details of this API are specific to the Accellera implementation, and are not being considered for contribution to 1800.2
static function bit is_tracing();
if (!ready) init();
return tracing;
endfunction
static local function void init();
uvm_cmdline_processor clp;
string trace_args[$];
clp = uvm_cmdline_processor::get_inst();
if (clp.get_arg_matches("+UVM_RESOURCE_DB_TRACE", trace_args)) begin
tracing = 1;
end
ready = 1;
endfunction
endclass