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