URL
https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk
Subversion Repositories uart2bus_testbench
[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [base/] [uvm_coreservice.svh] - Rev 16
Compare with Previous | Blame | View Log
//----------------------------------------------------------------------// Copyright 2013 Cadence Design 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.//----------------------------------------------------------------------typedef class uvm_factory;typedef class uvm_default_factory;typedef class uvm_report_server;typedef class uvm_default_report_server;typedef class uvm_root;typedef class uvm_visitor;typedef class uvm_component_name_check_visitor;typedef class uvm_component;typedef class uvm_tr_database;typedef class uvm_text_tr_database;`ifndef UVM_CORESERVICE_TYPE`define UVM_CORESERVICE_TYPE uvm_default_coreservice_t`endiftypedef class `UVM_CORESERVICE_TYPE;//----------------------------------------------------------------------// Class: uvm_coreservice_t//// The singleton instance of uvm_coreservice_t provides a common point for all central// uvm services such as uvm_factory, uvm_report_server, ...// The service class provides a static <::get> which returns an instance adhering to uvm_coreservice_t// the rest of the set_<facility> get_<facility> pairs provide access to the internal uvm services//// Custom implementations of uvm_coreservice_t can be included in uvm_pkg::*// and can selected via the define UVM_CORESERVICE_TYPE. They cannot reside in another package.//----------------------------------------------------------------------virtual class uvm_coreservice_t;// Function: get_factory//// intended to return the currently enabled uvm factory,pure virtual function uvm_factory get_factory();// Function: set_factory//// intended to set the current uvm factorypure virtual function void set_factory(uvm_factory f);// Function: get_report_server// intended to return the current global report_serverpure virtual function uvm_report_server get_report_server();// Function: set_report_server// intended to set the central report server to ~server~pure virtual function void set_report_server(uvm_report_server server);// Function: get_default_tr_database// intended to return the current default record databasepure virtual function uvm_tr_database get_default_tr_database();// Function: set_default_tr_database// intended to set the current default record database to ~db~//pure virtual function void set_default_tr_database(uvm_tr_database db);// Function: set_component_visitor// intended to set the component visitor to ~v~// (this visitor is being used for the traversal at end_of_elaboration_phase// for instance for name checking)pure virtual function void set_component_visitor(uvm_visitor#(uvm_component) v);// Function: get_component_visitor// intended to retrieve the current component visitor// see <set_component_visitor>pure virtual function uvm_visitor#(uvm_component) get_component_visitor();// Function: get_root//// returns the uvm_root instancepure virtual function uvm_root get_root();local static `UVM_CORESERVICE_TYPE inst;// Function: get//// Returns an instance providing the uvm_coreservice_t interface.// The actual type of the instance is determined by the define `UVM_CORESERVICE_TYPE.////| `define UVM_CORESERVICE_TYPE uvm_blocking_coreservice//| class uvm_blocking_coreservice extends uvm_default_coreservice_t;//| virtual function void set_factory(uvm_factory f);//| `uvm_error("FACTORY","you are not allowed to override the factory")//| endfunction//| endclass//|static function uvm_coreservice_t get();if(inst==null)inst=new;return inst;endfunction // getendclass//----------------------------------------------------------------------// Class: uvm_default_coreservice_t//// uvm_default_coreservice_t provides a default implementation of the// uvm_coreservice_t API. It instantiates uvm_default_factory, uvm_default_report_server,// uvm_root.//----------------------------------------------------------------------class uvm_default_coreservice_t extends uvm_coreservice_t;local uvm_factory factory;// Function: get_factory//// Returns the currently enabled uvm factory.// When no factory has been set before, instantiates a uvm_default_factoryvirtual function uvm_factory get_factory();if(factory==null) beginuvm_default_factory f;f=new;factory=f;endreturn factory;endfunction// Function: set_factory//// Sets the current uvm factory.// Please note: it is up to the user to preserve the contents of the original factory or delegate calls to the original factoryvirtual function void set_factory(uvm_factory f);factory = f;endfunctionlocal uvm_tr_database tr_database;// Function: get_default_tr_database// returns the current default record database//// If no default record database has been set before this method// is called, returns an instance of <uvm_text_tr_database>virtual function uvm_tr_database get_default_tr_database();if (tr_database == null) beginprocess p = process::self();uvm_text_tr_database tx_db;string s;if(p != null)s = p.get_randstate();tx_db = new("default_tr_database");tr_database = tx_db;if(p != null)p.set_randstate(s);endreturn tr_database;endfunction : get_default_tr_database// Function: set_default_tr_database// Sets the current default record database to ~db~virtual function void set_default_tr_database(uvm_tr_database db);tr_database = db;endfunction : set_default_tr_databaselocal uvm_report_server report_server;// Function: get_report_server// returns the current global report_server// if no report server has been set before, returns an instance of// uvm_default_report_servervirtual function uvm_report_server get_report_server();if(report_server==null) beginuvm_default_report_server f;f=new;report_server=f;endreturn report_server;endfunction// Function: set_report_server// sets the central report server to ~server~virtual function void set_report_server(uvm_report_server server);report_server=server;endfunctionvirtual function uvm_root get_root();return uvm_root::m_uvm_get_root();endfunctionlocal uvm_visitor#(uvm_component) _visitor;// Function: set_component_visitor// sets the component visitor to ~v~// (this visitor is being used for the traversal at end_of_elaboration_phase// for instance for name checking)virtual function void set_component_visitor(uvm_visitor#(uvm_component) v);_visitor=v;endfunction// Function: get_component_visitor// retrieves the current component visitor// if unset(or ~null~) returns a <uvm_component_name_check_visitor> instancevirtual function uvm_visitor#(uvm_component) get_component_visitor();if(_visitor==null) beginuvm_component_name_check_visitor v = new("name-check-visitor");_visitor=v;endreturn _visitor;endfunctionendclass
