VMM - RAL/vmm_ral.sv

RAL/vmm_ral.sv expanded source

00001 // 
00002 // -------------------------------------------------------------
00003 //    Copyright 2004-2008 Synopsys, Inc.
00004 //    All Rights Reserved Worldwide
00005 // 
00006 //    Licensed under the Apache License, Version 2.0 (the
00007 //    "License"); you may not use this file except in
00008 //    compliance with the License.  You may obtain a copy of
00009 //    the License at
00010 // 
00011 //        http://www.apache.org/licenses/LICENSE-2.0
00012 // 
00013 //    Unless required by applicable law or agreed to in
00014 //    writing, software distributed under the License is
00015 //    distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
00016 //    CONDITIONS OF ANY KIND, either express or implied.  See
00017 //    the License for the specific language governing
00018 //    permissions and limitations under the License.
00019 // -------------------------------------------------------------
00020 // 
00021 
00022 `ifndef RVM_RAL__SV
00023 `define RVM_RAL__SV
00024 
00025 
00026 `ifndef VMM_RAL_ADDR_WIDTH
00027 `define VMM_RAL_ADDR_WIDTH 64
00028 `endif
00029 
00030 `ifndef VMM_RAL_DATA_WIDTH
00031 `define VMM_RAL_DATA_WIDTH 64
00032 `endif
00033 
00034 
00035 `include "RAL/vmm_rw.sv"
00036 
00037 class vmm_ral_version;
00038    extern function int major();
00039    extern function int minor();
00040    extern function int patch();
00041    extern function string vendor();
00042    extern function void display(string prefix = "");
00043    extern function string psdisplay(string prefix = "");
00044 endclass: vmm_ral_version
00045 
00046 
00047 typedef class vmm_ral_field;
00048 typedef class vmm_ral_vfield;
00049 typedef class vmm_ral_reg;
00050 typedef class vmm_ral_vreg;
00051 typedef class vmm_ral_block;
00052 typedef class vmm_ral_mem;
00053 typedef class vmm_ral_sys;
00054 typedef class vmm_ral_access;
00055 
00056 class vmm_ral;
00057    typedef enum {
00058       BFM,
00059       BACKDOOR,
00060       DEFAULT
00061    } path_e;
00062 
00063    typedef enum {
00064       RW,
00065       RO,
00066       WO,
00067       W1,
00068       RU,
00069       RC,
00070       W1C,
00071       A0,
00072       A1,
00073       DC,   // Important that DC be followed by OTHER & USER and none other
00074       OTHER,
00075       USER0,
00076       USER1,
00077       USER2,
00078       USER3
00079    } access_e;
00080 
00081    typedef enum {
00082       QUIET,
00083       VERB
00084    } check_e;
00085 
00086    typedef enum {
00087       NO_ENDIAN,
00088       LITTLE_ENDIAN,
00089       BIG_ENDIAN,
00090       LITTLE_FIFO,
00091       BIG_FIFO
00092    } endianness_e;
00093 
00094    typedef enum {
00095       HARD,
00096       SOFT
00097    } reset_e;
00098 
00099    typedef enum {
00100       NO_COVERAGE  = 'h0000,
00101       REG_BITS     = 'h0001,
00102       ADDR_MAP     = 'h0002,
00103       FIELD_VALS   = 'h0004,
00104       ALL_COVERAGE = 'h0007
00105    } coverage_model_e;
00106 endclass: vmm_ral
00107 
00108    
00109 class vmm_ral_callbacks extends vmm_xactor_callbacks;
00110 endclass: vmm_ral_callbacks
00111 
00112 
00113 `include "RAL/vmm_ral_field.sv"
00114 `include "RAL/vmm_ral_vfield.sv"
00115 `include "RAL/vmm_ral_backdoor.sv"
00116 `include "RAL/vmm_ral_reg.sv"
00117 `include "RAL/vmm_mam.sv"
00118 `include "RAL/vmm_ral_mem.svh"
00119 `include "RAL/vmm_ral_vreg.sv"
00120 `include "RAL/vmm_ral_mem.sv"
00121 `include "RAL/vmm_ral_block_or_sys.sv"
00122 `include "RAL/vmm_ral_block.sv"
00123 `include "RAL/vmm_ral_sys.sv"
00124 `include "RAL/vmm_ral_access.sv"
00125 `include "RAL/vmm_ral_env.sv"
00126 
00127 function int vmm_ral_version::major();
00128    major = 1;
00129 endfunction: major
00130 
00131 function int vmm_ral_version::minor();
00132    minor = 9;
00133 endfunction: minor
00134 
00135 function int vmm_ral_version::patch();
00136    patch = 1;
00137 endfunction: patch
00138 
00139 function string vmm_ral_version::vendor();
00140    vendor = "Synopsys";
00141 endfunction: vendor
00142 
00143 function void vmm_ral_version::display(string prefix);
00144    $write("%s\n", this.psdisplay(prefix));
00145 endfunction: display
00146 
00147 function string vmm_ral_version::psdisplay(string prefix);
00148    $sformat(psdisplay, "%sVMM RAL Version %0d.%0d.%0d (%s)",
00149             prefix, this.major(), this.minor(), this.patch(), this.vendor());
00150 endfunction: psdisplay
00151 
00152 `endif // RVM_RAL__SV