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
00023 //
00024 // Protect against multiple inclusion of this file
00025 //
00026 `ifndef VMM_VERSION__SV
00027 `define VMM_VERSION__SV
00028
00029
00030 class vmm_version;
00031 extern function int major();
00032 extern function int minor();
00033 extern function int patch();
00034 extern function string vendor();
00035
00036 extern function void display(string prefix = "");
00037 extern function string psdisplay(string prefix = "");
00038 extern function void cfdisplay(string prefix = "");
00039 endclass: vmm_version
00040
00041 function int vmm_version::major();
00042 major = 1;
00043 endfunction: major
00044
00045 function int vmm_version::minor();
00046 minor = 8;
00047 endfunction: minor
00048
00049 function int vmm_version::patch();
00050 patch = 6;
00051 endfunction: patch
00052
00053
00054 function string vmm_version::vendor();
00055 vendor = "Synopsys";
00056 endfunction: vendor
00057
00058 function void vmm_version::display(string prefix = "");
00059 $write("%s\n", this.psdisplay(prefix));
00060 endfunction: display
00061
00062 function string vmm_version::psdisplay(string prefix = "");
00063 $sformat(psdisplay, "%sVMM Version %0d.%0d.%0d (%s)",
00064 prefix, this.major(), this.minor(), this.patch(),this.vendor());
00065 endfunction: psdisplay
00066
00067
00068 function void vmm_version::cfdisplay(string prefix = "");
00069 this.display(prefix);
00070 $write("%s\n%sMacro Definitions:",
00071 prefix, prefix);
00072
00073 $write("\n");
00074 $write("%s VMM_CHANNEL %s\n",
00075 prefix, `VMM_MACRO_TO_STRING(`VMM_CHANNEL));
00076 `ifdef VMM_CHANNEL_BASE
00077 $write("%s VMM_CHANNEL_BASE %s\n",
00078 prefix, `VMM_MACRO_TO_STRING(`VMM_CHANNEL_BASE));
00079 $write("%s VMM_CHANNEL_NEW_CALL %s\n",
00080 prefix, `VMM_MACRO_TO_STRING(`VMM_CHANNEL_BASE_NEW_CALL));
00081 `endif
00082
00083 $write("\n");
00084 $write("%s VMM_CONSENSUS %s\n",
00085 prefix, `VMM_MACRO_TO_STRING(`VMM_CONSENSUS));
00086 `ifdef VMM_CONSENSUS_BASE
00087 $write("%s VMM_CONSENSUS_BASE %s\n",
00088 prefix, `VMM_MACRO_TO_STRING(`VMM_CONSENSUS_BASE));
00089 $write("%s VMM_CONSENSUS_NEW_CALL %s\n",
00090 prefix, `VMM_MACRO_TO_STRING(`VMM_CONSENSUS_BASE_NEW_CALL));
00091 `endif
00092
00093 $write("\n");
00094 $write("%s VMM_DATA %s\n",
00095 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA));
00096 $write("%s VMM_DATA_NEW_ARGS %s\n",
00097 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_NEW_ARGS));
00098 $write("%s VMM_DATA_NEW_EXTERN_ARGS %s\n",
00099 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_NEW_EXTERN_ARGS));
00100 $write("%s VMM_DATA_NEW_CALL %s\n",
00101 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_NEW_CALL));
00102 `ifdef VMM_DATA_BASE
00103 $write("%s VMM_DATA_BASE %s\n",
00104 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_BASE));
00105 $write("%s VMM_DATA_BASE_NEW_ARGS %s\n",
00106 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_BASE_NEW_ARGS));
00107 $write("%s VMM_DATA_BASE_NEW_EXTERN_ARGS %s\n",
00108 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_BASE_NEW_EXTERN_ARGS));
00109 $write("%s VMM_DATA_BASE_NEW_CALL %s\n",
00110 prefix, `VMM_MACRO_TO_STRING(`VMM_DATA_BASE_NEW_CALL));
00111 `endif
00112
00113 $write("\n");
00114 $write("%s VMM_SCENARIO %s\n",
00115 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO));
00116 $write("%s VMM_SCENARIO_NEW_ARGS %s\n",
00117 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_NEW_ARGS));
00118 $write("%s VMM_SCENARIO_NEW_EXTERN_ARGS %s\n",
00119 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_NEW_EXTERN_ARGS));
00120 $write("%s VMM_SCENARIO_NEW_CALL %s\n",
00121 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_NEW_CALL));
00122 $write("%s VMM_SCENARIO_BASE %s\n",
00123 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_BASE));
00124 $write("%s VMM_SCENARIO_BASE_NEW_ARGS %s\n",
00125 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_BASE_NEW_ARGS));
00126 $write("%s VMM_SCENARIO_BASE_NEW_EXTERN_ARGS %s\n",
00127 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_BASE_NEW_EXTERN_ARGS));
00128 $write("%s VMM_SCENARIO_BASE_NEW_CALL %s\n",
00129 prefix, `VMM_MACRO_TO_STRING(`VMM_SCENARIO_BASE_NEW_CALL));
00130
00131 $write("\n");
00132 $write("%s VMM_ENV %s\n",
00133 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV));
00134 $write("%s VMM_ENV_NEW_ARGS %s\n",
00135 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_NEW_ARGS));
00136 $write("%s VMM_ENV_NEW_EXTERN_ARGS %s\n",
00137 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_NEW_EXTERN_ARGS));
00138 $write("%s VMM_ENV_NEW_CALL %s\n",
00139 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_NEW_CALL));
00140 `ifdef VMM_ENV_BASE
00141 $write("%s VMM_ENV_BASE %s\n",
00142 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_BASE));
00143 $write("%s VMM_ENV_BASE_NEW_ARGS %s\n",
00144 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_BASE_NEW_ARGS));
00145 $write("%s VMM_ENV_BASE_NEW_EXTERN_ARGS %s\n",
00146 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_BASE_NEW_EXTERN_ARGS));
00147 $write("%s VMM_ENV_BASE_NEW_CALL %s\n",
00148 prefix, `VMM_MACRO_TO_STRING(`VMM_ENV_BASE_NEW_CALL));
00149 `endif
00150
00151 $write("\n");
00152 $write("%s VMM_LOG %s\n",
00153 prefix, `VMM_MACRO_TO_STRING(`VMM_LOG));
00154 `ifdef VMM_LOG_BASE
00155 $write("%s VMM_LOG_BASE %s\n",
00156 prefix, `VMM_MACRO_TO_STRING(`VMM_LOG_BASE));
00157 $write("%s VMM_LOG_NEW_CALL %s\n",
00158 prefix, `VMM_MACRO_TO_STRING(`VMM_LOG_BASE_NEW_CALL));
00159 `endif
00160
00161 $write("\n");
00162 $write("%s VMM_NOTIFY %s\n",
00163 prefix, `VMM_MACRO_TO_STRING(`VMM_NOTIFY));
00164 `ifdef VMM_NOTIFY_BASE
00165 $write("%s VMM_NOTIFY_BASE %s\n",
00166 prefix, `VMM_MACRO_TO_STRING(`VMM_NOTIFY_BASE));
00167 $write("%s VMM_NOTIFY_NEW_CALL %s\n",
00168 prefix, `VMM_MACRO_TO_STRING(`VMM_NOTIFY_BASE_NEW_CALL));
00169 `endif
00170
00171 $write("\n");
00172 $write("%s VMM_XACTOR %s\n",
00173 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR));
00174 $write("%s VMM_XACTOR_NEW_ARGS %s\n",
00175 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_NEW_ARGS));
00176 $write("%s VMM_XACTOR_NEW_EXTERN_ARGS %s\n",
00177 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_NEW_EXTERN_ARGS));
00178 $write("%s VMM_XACTOR_NEW_CALL %s\n",
00179 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_NEW_CALL));
00180 `ifdef VMM_XACTOR_BASE
00181 $write("%s VMM_XACTOR_BASE %s\n",
00182 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_BASE));
00183 $write("%s VMM_XACTOR_BASE_NEW_ARGS %s\n",
00184 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_BASE_NEW_ARGS));
00185 $write("%s VMM_XACTOR_BASE_NEW_EXTERN_ARGS %s\n",
00186 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_BASE_NEW_EXTERN_ARGS));
00187 $write("%s VMM_XACTOR_BASE_NEW_CALL %s\n",
00188 prefix, `VMM_MACRO_TO_STRING(`VMM_XACTOR_BASE_NEW_CALL));
00189 `endif
00190 endfunction: cfdisplay
00191
00192 `endif