pk_syoscb.sv

Go to the documentation of this file.
00001 `ifndef __PK_SYOSCB_SV__
00002 `define __PK_SYOSCB_SV__
00003 
00004 /// @mainpage
00005 /// User and implementationd documentation for the UVM scoreboard
00006 ///
00007 /// This documentation provides the following additional documentation, besides
00008 /// the normal source code documentation:
00009 ///
00010 ///   -# How to integrate the UVM scoreboard: \ref pIntegration
00011 ///
00012 /// It is assumed that the reader is familiar with the UVM scoreboard arcitechture
00013 /// described in: TBD: Added ref to paper!
00014 
00015 /// @page pIntegration How to integrate the UVM scoreboard
00016 /// The UVM scorebaord is easily integrated into your existing testbench environment.
00017 ///
00018 /// @section sCompile Compiling the UVM scoreboard
00019 /// To get the UVM scoreboard compiled you need to add src/pk_syoscb.sv to your list of files that are compliled when compiling your testbench. How this is done is highly dependent on the verification environment since some environemnts compile everything into different libraries and some do not etc.
00020 ///
00021 /// @section sAcccess Accessing the UVM scoreboard from your own code
00022 /// Once the UVM scoreboard is compiled with the veritication environment then it is accessible either by explicit scoping:
00023 ///
00024 /// @code
00025 ///   class myclass;
00026 ///     pk_syoscb::cl_syoscb my_new_scb;
00027 ///     ...
00028 /// @endcode
00029 ///
00030 /// or by importing the complte package into your scope:
00031 ///
00032 /// @code
00033 ///   import pk_syoscb::*;
00034 ///
00035 ///   class myclass;
00036 ///     cl_syoscb my_new_scb;
00037 ///     ...
00038 /// @endcode
00039 ///
00040 /// @section sInstantiation Instantiating the UVM scoreboard
00041 /// The UVM scoreboard itself needs to be instantiated along with the configuration object. The simplest way to to this is to add the UVM scorebaord and the configuration object to the UVM environment:
00042 ///
00043 /// @code
00044 ///   import pk_syoscb::*;
00045 ///
00046 ///   class cl_scbtest_env extends uvm_env;
00047 ///
00048 ///     cl_syoscb     syoscb;   
00049 ///     cl_syoscb_cfg syoscb_cfg;
00050 ///    
00051 ///     `uvm_component_utils_begin(cl_scbtest_env)
00052 ///       `uvm_field_object(syoscb,     UVM_ALL_ON)
00053 ///       `uvm_field_object(syoscb_cfg, UVM_ALL_ON)
00054 ///     `uvm_component_utils_end
00055 ///    
00056 ///     ... 
00057 ///
00058 ///   endclass: cl_scbtest_env
00059 ///
00060 ///   function void cl_scbtest_env::build_phase(uvm_phase phase);
00061 ///     super.build_phase(phase);
00062 ///   
00063 ///     this.syoscb_cfg = cl_syoscb_cfg::type_id::create("syoscb_cfg");
00064 ///     this.syoscb = cl_syoscb::type_id::create("syoscb", this);
00065 ///   
00066 ///     ...
00067 ///               
00068 ///   endfunction: build_phase
00069 /// @endcode
00070 ///
00071 /// @section sConfiguration Configuring the UVM scoreboard
00072 /// The UVM scoreboard ocnfiguration object needs to be configured after it has been created. The following example shows how two queues Q1 and Q2 wit Q1 as the primary queue. Futhermore one producer P1 is added to both queues:
00073 ///
00074 /// @code
00075 ///   function void cl_scbtest_env::build_phase(uvm_phase phase);
00076 ///     super.build_phase(phase);
00077 ///   
00078 ///     this.syoscb_cfg = cl_syoscb_cfg::type_id::create("syoscb_cfg");
00079 ///     this.syoscb = cl_syoscb::type_id::create("syoscb", this);
00080 ///   
00081 ///     this.syoscb_cfg.set_queues({"Q1", "Q2"});
00082 ///     void'(this.syoscb_cfg.set_primary_queue("Q1")); 
00083 ///     void'(this.syoscb_cfg.set_producer("P1", {"Q1", "Q2"})); 
00084 ///               
00085 ///     ...
00086 ///
00087 ///   endfunction: build_phase
00088 /// @endcode
00089 ///
00090 /// @section sFactory Factory overwrites
00091 /// Finally, the wanted queue and compare algorithm implementation needs to be selected. This is done by facotry overwrites since they can be changed test etc.
00092 ///
00093 /// The following queue implemenations are available:
00094 ///
00095 ///   -# Standard SV squeue (cl_syoscb_queue_std)
00096 ///
00097 /// and the following compare alorithms are available:
00098 ///
00099 ///  -# Out-of-Order (cl_syoscb_compare_ooo)
00100 ///
00101 /// The folloing example shows how they are configured:
00102 ///
00103 /// @code
00104 ///   cl_syoscb_queue::set_type_override_by_type(cl_syoscb_queue::get_type(),              
00105 ///                                              cl_syoscb_queue_std::get_type(),
00106 ///                                              "*");
00107 ///
00108 ///   factory.set_type_override_by_type(cl_syoscb_compare_base::get_type(),
00109 ///                                     cl_syoscb_compare_ooo::get_type(),
00110 ///                                     "*");
00111 /// @endcode
00112 
00113 package pk_syoscb;
00114 
00115   ////////////////////////////////////////////////////////////////////////////
00116   // Imported packages
00117   ////////////////////////////////////////////////////////////////////////////
00118 
00119   import uvm_pkg::*;
00120   `include "uvm_macros.svh"
00121 
00122   ////////////////////////////////////////////////////////////////////////////
00123   // Type definitions
00124   ////////////////////////////////////////////////////////////////////////////
00125 
00126   typedef class cl_syoscb;
00127   typedef class cl_syoscb_queue;
00128 
00129   ////////////////////////////////////////////////////////////////////////////
00130   // Package source files
00131   ////////////////////////////////////////////////////////////////////////////
00132 
00133   `include "cl_syoscb_item.svh"
00134   `include "cl_syoscb_queue_iterator_base.svh"
00135   `include "cl_syoscb_queue_iterator_std.svh"
00136   `include "cl_syoscb_queue.svh"
00137   `include "cl_syoscb_queue_std.svh"
00138   `include "cl_syoscb_cfg_pl.svh"
00139   `include "cl_syoscb_cfg.svh"
00140   `include "cl_syoscb_compare_base.svh"
00141   `include "cl_syoscb_compare.svh"
00142   `include "cl_syoscb_compare_ooo.svh"
00143   `include "cl_syoscb_report_catcher.svh"
00144   `include "cl_syoscb.svh"
00145 
00146 
00147 endpackage : pk_syoscb
00148 
00149 `endif //  __PK_SYOSCB_SV__
 All Classes Namespaces Files Functions Variables

Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.0.0
Copyright 2014 SyoSil ApS
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.
doxygen
Doxygen Version: 1.6.1
IDV SV Filter Version: 2.6.2
Thu Oct 30 05:34:49 2014
Find a documentation bug? Report bugs to: bugs.intelligentdv.com Project: DoxygenFilterSV