00001 //---------------------------------------------------------------------- 00002 // Copyright 2007-2008 Mentor Graphics Corporation 00003 // Copyright 2007-2008 Cadence Design Systems, 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 // The following macros: ovm_IF_imp_decl all users to create implemenation 00022 // classes which a predefined tlm interface but add a suffix to the 00023 // implementation methods. This allows multiple interfaces of the same type 00024 // to be implemented in the same scope. 00025 // 00026 // For example: 00027 // 00028 // `ovm_blocking_put_imp_decl(_1) 00029 // `ovm_blocking_put_imp_decl(_2) 00030 // class my_put_imp#(type T=int) extends ovm_component; 00031 // ovm_blocking_put_imp_1#(T) export1; 00032 // ovm_blocking_put_imp_2#(T) export2; 00033 // ... 00034 // function void put_1 (input T t); 00035 // //puts comming into export1 00036 // ... 00037 // endfunction 00038 // function void put_2(input T t); 00039 // //puts comming into export2 00040 // ... 00041 // endfunction 00042 // endclass 00043 00044 // Note that the default, unsuffixed, implementations live in the file 00045 // tlm/ovm_imps.sv. 00046 00047 `define ovm_blocking_put_imp_decl(SFX) \ 00048 class ovm_blocking_put_imp``SFX #(type T=int, type IMP=int) \ 00049 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00050 `OVM_IMP_COMMON(`TLM_BLOCKING_PUT_MASK,`"ovm_blocking_put_imp``SFX`",IMP) \ 00051 `BLOCKING_PUT_IMP_SFX(SFX, m_imp, T, t) \ 00052 endclass 00053 00054 `define ovm_nonblocking_put_imp_decl(SFX) \ 00055 class ovm_nonblocking_put_imp``SFX #(type T=int, type IMP=int) \ 00056 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00057 `OVM_IMP_COMMON(`TLM_NONBLOCKING_PUT_MASK,`"ovm_nonblocking_put_imp``SFX`",IMP) \ 00058 `NONBLOCKING_PUT_IMP_SFX( SFX, m_imp, T, t) \ 00059 endclass 00060 00061 `define ovm_put_imp_decl(SFX) \ 00062 class ovm_put_imp``SFX #(type T=int, type IMP=int) \ 00063 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00064 `OVM_IMP_COMMON(`TLM_PUT_MASK,`"ovm_put_imp``SFX`",IMP) \ 00065 `BLOCKING_PUT_IMP_SFX(SFX, m_imp, T, t) \ 00066 `NONBLOCKING_PUT_IMP_SFX(SFX, m_imp, T, t) \ 00067 endclass 00068 00069 `define ovm_blocking_get_imp_decl(SFX) \ 00070 class ovm_blocking_get_imp``SFX #(type T=int, type IMP=int) \ 00071 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00072 `OVM_IMP_COMMON(`TLM_BLOCKING_GET_MASK,`"ovm_blocking_get_imp``SFX`",IMP) \ 00073 `BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00074 endclass 00075 00076 `define ovm_nonblocking_get_imp_decl(SFX) \ 00077 class ovm_nonblocking_get_imp``SFX #(type T=int, type IMP=int) \ 00078 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00079 `OVM_IMP_COMMON(`TLM_NONBLOCKING_GET_MASK,`"ovm_nonblocking_get_imp``SFX`",IMP) \ 00080 `NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00081 endclass 00082 00083 `define ovm_get_imp_decl(SFX) \ 00084 class ovm_get_imp``SFX #(type T=int, type IMP=int) \ 00085 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00086 `OVM_IMP_COMMON(`TLM_GET_MASK,`"ovm_get_imp``SFX`",IMP) \ 00087 `BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00088 `NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00089 endclass 00090 00091 `define ovm_blocking_peek_imp_decl(SFX) \ 00092 class ovm_blocking_peek_imp``SFX #(type T=int, type IMP=int) \ 00093 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00094 `OVM_IMP_COMMON(`TLM_BLOCKING_PEEK_MASK,`"ovm_blocking_peek_imp``SFX`",IMP) \ 00095 `BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00096 endclass 00097 00098 `define ovm_nonblocking_peek_imp_decl(SFX) \ 00099 class ovm_nonblocking_peek_imp``SFX #(type T=int, type IMP=int) \ 00100 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00101 `OVM_IMP_COMMON(`TLM_NONBLOCKING_PEEK_MASK,`"ovm_nonblocking_peek_imp``SFX`",IMP) \ 00102 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00103 endclass 00104 00105 `define ovm_peek_imp_decl(SFX) \ 00106 class ovm_peek_imp``SFX #(type T=int, type IMP=int) \ 00107 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00108 `OVM_IMP_COMMON(`TLM_PEEK_MASK,`"ovm_peek_imp``SFX`",IMP) \ 00109 `BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00110 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00111 endclass 00112 00113 00114 `define ovm_blocking_get_peek_imp_decl(SFX) \ 00115 class ovm_blocking_get_peek_imp``SFX #(type T=int, type IMP=int) \ 00116 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00117 `OVM_IMP_COMMON(`TLM_BLOCKING_GET_PEEK_MASK,`"ovm_blocking_get_peek_imp``SFX`",IMP) \ 00118 `BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00119 `BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00120 endclass 00121 00122 `define ovm_nonblocking_get_peek_imp_decl(SFX) \ 00123 class ovm_nonblocking_get_peek_imp``SFX #(type T=int, type IMP=int) \ 00124 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00125 `OVM_IMP_COMMON(`TLM_NONBLOCKING_GET_PEEK_MASK,`"ovm_nonblocking_get_peek_imp``SFX`",IMP) \ 00126 `NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00127 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00128 endclass 00129 00130 `define ovm_get_peek_imp_decl(SFX) \ 00131 class ovm_get_peek_imp``SFX #(type T=int, type IMP=int) \ 00132 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00133 `OVM_IMP_COMMON(`TLM_GET_PEEK_MASK,`"ovm_get_peek_imp``SFX`",IMP) \ 00134 `BLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00135 `NONBLOCKING_GET_IMP_SFX(SFX, m_imp, T, t) \ 00136 `BLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00137 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_imp, T, t) \ 00138 endclass 00139 00140 `define ovm_blocking_master_imp_decl(SFX) \ 00141 class ovm_blocking_master_imp``SFX #(type REQ=int, type RSP=int, type IMP=int, \ 00142 type REQ_IMP=IMP, type RSP_IMP=IMP) \ 00143 extends ovm_port_base #(tlm_if_base #(REQ, RSP)); \ 00144 typedef IMP this_imp_type; \ 00145 typedef REQ_IMP this_req_type; \ 00146 typedef RSP_IMP this_rsp_type; \ 00147 `OVM_MS_IMP_COMMON(`TLM_BLOCKING_MASTER_MASK,`"ovm_blocking_master_imp``SFX`") \ 00148 \ 00149 `BLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00150 \ 00151 `BLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00152 `BLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00153 \ 00154 endclass 00155 00156 `define ovm_nonblocking_master_imp_decl(SFX) \ 00157 class ovm_nonblocking_master_imp``SFX #(type REQ=int, type RSP=int, type IMP=int, \ 00158 type REQ_IMP=IMP, type RSP_IMP=IMP) \ 00159 extends ovm_port_base #(tlm_if_base #(REQ, RSP)); \ 00160 typedef IMP this_imp_type; \ 00161 typedef REQ_IMP this_req_type; \ 00162 typedef RSP_IMP this_rsp_type; \ 00163 `OVM_MS_IMP_COMMON(`TLM_NONBLOCKING_MASTER_MASK,`"ovm_nonblocking_master_imp``SFX`") \ 00164 \ 00165 `NONBLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00166 \ 00167 `NONBLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00168 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00169 \ 00170 endclass 00171 00172 `define ovm_master_imp_decl(SFX) \ 00173 class ovm_master_imp``SFX #(type REQ=int, type RSP=int, type IMP=int, \ 00174 type REQ_IMP=IMP, type RSP_IMP=IMP) \ 00175 extends ovm_port_base #(tlm_if_base #(REQ, RSP)); \ 00176 typedef IMP this_imp_type; \ 00177 typedef REQ_IMP this_req_type; \ 00178 typedef RSP_IMP this_rsp_type; \ 00179 `OVM_MS_IMP_COMMON(`TLM_MASTER_MASK,`"ovm_master_imp``SFX`") \ 00180 \ 00181 `BLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00182 `NONBLOCKING_PUT_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00183 \ 00184 `BLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00185 `BLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00186 `NONBLOCKING_GET_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00187 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00188 \ 00189 endclass 00190 00191 `define ovm_blocking_slave_imp_decl(SFX) \ 00192 class ovm_blocking_slave_imp``SFX #(type REQ=int, type RSP=int, type IMP=int, \ 00193 type REQ_IMP=IMP, type RSP_IMP=IMP) \ 00194 extends ovm_port_base #(tlm_if_base #(RSP, REQ)); \ 00195 typedef IMP this_imp_type; \ 00196 typedef REQ_IMP this_req_type; \ 00197 typedef RSP_IMP this_rsp_type; \ 00198 `OVM_MS_IMP_COMMON(`TLM_BLOCKING_SLAVE_MASK,`"ovm_blocking_slave_imp``SFX`") \ 00199 \ 00200 `BLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00201 \ 00202 `BLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00203 `BLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00204 \ 00205 endclass 00206 00207 `define ovm_nonblocking_slave_imp_decl(SFX) \ 00208 class ovm_nonblocking_slave_imp``SFX #(type REQ=int, type RSP=int, type IMP=int, \ 00209 type REQ_IMP=IMP, type RSP_IMP=IMP) \ 00210 extends ovm_port_base #(tlm_if_base #(RSP, REQ)); \ 00211 typedef IMP this_imp_type; \ 00212 typedef REQ_IMP this_req_type; \ 00213 typedef RSP_IMP this_rsp_type; \ 00214 `OVM_MS_IMP_COMMON(`TLM_NONBLOCKING_SLAVE_MASK,`"ovm_nonblocking_slave_imp``SFX`") \ 00215 \ 00216 `NONBLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00217 \ 00218 `NONBLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00219 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00220 \ 00221 endclass 00222 00223 `define ovm_slave_imp_decl(SFX) \ 00224 class ovm_slave_imp``SFX #(type REQ=int, type RSP=int, type IMP=int, \ 00225 type REQ_IMP=IMP, type RSP_IMP=IMP) \ 00226 extends ovm_port_base #(tlm_if_base #(RSP, REQ)); \ 00227 typedef IMP this_imp_type; \ 00228 typedef REQ_IMP this_req_type; \ 00229 typedef RSP_IMP this_rsp_type; \ 00230 `OVM_MS_IMP_COMMON(`TLM_SLAVE_MASK,`"ovm_slave_imp``SFX`") \ 00231 \ 00232 `BLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00233 `NONBLOCKING_PUT_IMP_SFX(SFX, m_rsp_imp, RSP, t) // rsp \ 00234 \ 00235 `BLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00236 `BLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00237 `NONBLOCKING_GET_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00238 `NONBLOCKING_PEEK_IMP_SFX(SFX, m_req_imp, REQ, t) // req \ 00239 \ 00240 endclass 00241 00242 `define ovm_blocking_transport_imp_decl(SFX) \ 00243 class ovm_blocking_transport_imp``SFX #(type REQ=int, type RSP=int, type IMP=int) \ 00244 extends ovm_port_base #(tlm_if_base #(REQ, RSP)); \ 00245 `OVM_IMP_COMMON(`TLM_BLOCKING_TRANSPORT_MASK,`"ovm_blocking_transport_imp``SFX`",IMP) \ 00246 `BLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp) \ 00247 endclass 00248 00249 `define ovm_non_blocking_transport_imp_decl(SFX) \ 00250 ovm_nonblocking_transport_imp_decl(SFX) 00251 00252 `define ovm_nonblocking_transport_imp_decl(SFX) \ 00253 class ovm_nonblocking_transport_imp``SFX #(type REQ=int, type RSP=int, type IMP=int) \ 00254 extends ovm_port_base #(tlm_if_base #(REQ, RSP)); \ 00255 `OVM_IMP_COMMON(`TLM_NONBLOCKING_TRANSPORT_MASK,`"ovm_nonblocking_transport_imp``SFX`",IMP) \ 00256 `NONBLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp) \ 00257 endclass 00258 00259 `define ovm_transport_imp_decl(SFX) \ 00260 class ovm_transport_imp``SFX #(type REQ=int, type RSP=int, type IMP=int) \ 00261 extends ovm_port_base #(tlm_if_base #(REQ, RSP)); \ 00262 `OVM_IMP_COMMON(`TLM_TRANSPORT_MASK,`"ovm_transport_imp``SFX`",IMP) \ 00263 `BLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp) \ 00264 `NONBLOCKING_TRANSPORT_IMP_SFX(SFX, m_imp, REQ, RSP, req, rsp) \ 00265 endclass 00266 00267 `define ovm_analysis_imp_decl(SFX) \ 00268 class ovm_analysis_imp``SFX #(type T=int, type IMP=int) \ 00269 extends ovm_port_base #(tlm_if_base #(T,T)); \ 00270 `OVM_IMP_COMMON(`TLM_ANALYSIS_MASK,`"ovm_analysis_imp``SFX`",IMP) \ 00271 function void write( input T t); \ 00272 m_imp.write``SFX( t); \ 00273 endfunction \ 00274 \ 00275 endclass 00276 00277 00278 // These imps are used in ovm_*_port, ovm_*_export and ovm_*_imp, using suffixes 00279 // 00280 00281 `define BLOCKING_PUT_IMP_SFX(SFX, imp, TYPE, arg) \ 00282 task put( input TYPE arg); imp.put``SFX( arg); endtask 00283 00284 `define BLOCKING_GET_IMP_SFX(SFX, imp, TYPE, arg) \ 00285 task get( output TYPE arg); imp.get``SFX( arg); endtask 00286 00287 `define BLOCKING_PEEK_IMP_SFX(SFX, imp, TYPE, arg) \ 00288 task peek( output TYPE arg);imp.peek``SFX( arg); endtask 00289 00290 `define NONBLOCKING_PUT_IMP_SFX(SFX, imp, TYPE, arg) \ 00291 function bit try_put( input TYPE arg); \ 00292 if( !imp.try_put``SFX( arg)) return 0; \ 00293 return 1; \ 00294 endfunction \ 00295 function bit can_put(); return imp.can_put``SFX(); endfunction 00296 00297 `define NONBLOCKING_GET_IMP_SFX(SFX, imp, TYPE, arg) \ 00298 function bit try_get( output TYPE arg); \ 00299 if( !imp.try_get``SFX( arg)) return 0; \ 00300 return 1; \ 00301 endfunction \ 00302 function bit can_get(); return imp.can_get``SFX(); endfunction 00303 00304 `define NONBLOCKING_PEEK_IMP_SFX(SFX, imp, TYPE, arg) \ 00305 function bit try_peek( output TYPE arg); \ 00306 if( !imp.try_peek``SFX( arg)) return 0; \ 00307 return 1; \ 00308 endfunction \ 00309 function bit can_peek(); return imp.can_peek``SFX(); endfunction 00310 00311 `define BLOCKING_TRANSPORT_IMP_SFX(SFX, imp, REQ, RSP, req_arg, rsp_arg) \ 00312 task transport( input REQ req_arg, output RSP rsp_arg); \ 00313 imp.transport``SFX(req_arg, rsp_arg); \ 00314 endtask 00315 00316 `define NONBLOCKING_TRANSPORT_IMP_SFX(SFX, imp, REQ, RSP, req_arg, rsp_arg) \ 00317 function bit nb_transport( input REQ req_arg, output RSP rsp_arg); \ 00318 if(imp) return imp.nb_transport``SFX(req_arg, rsp_arg); \ 00319 endfunction 00320 00321 //---------------------------------------------------------------------- 00322 // imp definitions 00323 //---------------------------------------------------------------------- 00324 `define SEQ_ITEM_PULL_IMP(imp, REQ, RSP, req_arg, rsp_arg) \ 00325 task get_next_item(output REQ req_arg); imp.get_next_item(req_arg); endtask \ 00326 task try_next_item(output REQ req_arg); imp.try_next_item(req_arg); endtask \ 00327 function void item_done(input RSP rsp_arg = null); imp.item_done(rsp_arg); endfunction \ 00328 task wait_for_sequences(); imp.wait_for_sequences(); endtask \ 00329 function bit has_do_available(); return imp.has_do_available(); endfunction \ 00330 function void put_response(input RSP rsp_arg); imp.put_response(rsp_arg); endfunction \ 00331 task get(output REQ req_arg); imp.get(req_arg); endtask \ 00332 task peek(output REQ req_arg); imp.peek(req_arg); endtask \ 00333 task put(input RSP rsp_arg); imp.put(rsp_arg); endtask 00334 00335 // primitive interfaces 00336 `define TLM_BLOCKING_PUT_MASK (1<<0) 00337 `define TLM_BLOCKING_GET_MASK (1<<1) 00338 `define TLM_BLOCKING_PEEK_MASK (1<<2) 00339 `define TLM_BLOCKING_TRANSPORT_MASK (1<<3) 00340 00341 `define TLM_NONBLOCKING_PUT_MASK (1<<4) 00342 `define TLM_NONBLOCKING_GET_MASK (1<<5) 00343 `define TLM_NONBLOCKING_PEEK_MASK (1<<6) 00344 `define TLM_NONBLOCKING_TRANSPORT_MASK (1<<7) 00345 00346 `define TLM_ANALYSIS_MASK (1<<8) 00347 00348 `define TLM_MASTER_BIT_MASK (1<<9) 00349 `define TLM_SLAVE_BIT_MASK (1<<10) 00350 // combination interfaces 00351 `define TLM_PUT_MASK (`TLM_BLOCKING_PUT_MASK | `TLM_NONBLOCKING_PUT_MASK) 00352 `define TLM_GET_MASK (`TLM_BLOCKING_GET_MASK | `TLM_NONBLOCKING_GET_MASK) 00353 `define TLM_PEEK_MASK (`TLM_BLOCKING_PEEK_MASK | `TLM_NONBLOCKING_PEEK_MASK) 00354 00355 `define TLM_BLOCKING_GET_PEEK_MASK (`TLM_BLOCKING_GET_MASK | `TLM_BLOCKING_PEEK_MASK) 00356 `define TLM_BLOCKING_MASTER_MASK (`TLM_BLOCKING_PUT_MASK | `TLM_BLOCKING_GET_MASK | `TLM_BLOCKING_PEEK_MASK | `TLM_MASTER_BIT_MASK) 00357 `define TLM_BLOCKING_SLAVE_MASK (`TLM_BLOCKING_PUT_MASK | `TLM_BLOCKING_GET_MASK | `TLM_BLOCKING_PEEK_MASK | `TLM_SLAVE_BIT_MASK) 00358 00359 `define TLM_NONBLOCKING_GET_PEEK_MASK (`TLM_NONBLOCKING_GET_MASK | `TLM_NONBLOCKING_PEEK_MASK) 00360 `define TLM_NONBLOCKING_MASTER_MASK (`TLM_NONBLOCKING_PUT_MASK | `TLM_NONBLOCKING_GET_MASK | `TLM_NONBLOCKING_PEEK_MASK | `TLM_MASTER_BIT_MASK) 00361 `define TLM_NONBLOCKING_SLAVE_MASK (`TLM_NONBLOCKING_PUT_MASK | `TLM_NONBLOCKING_GET_MASK | `TLM_NONBLOCKING_PEEK_MASK | `TLM_SLAVE_BIT_MASK) 00362 00363 `define TLM_GET_PEEK_MASK (`TLM_GET_MASK | `TLM_PEEK_MASK) 00364 `define TLM_MASTER_MASK (`TLM_BLOCKING_MASTER_MASK | `TLM_NONBLOCKING_MASTER_MASK) 00365 `define TLM_SLAVE_MASK (`TLM_BLOCKING_SLAVE_MASK | `TLM_NONBLOCKING_SLAVE_MASK) 00366 `define TLM_TRANSPORT_MASK (`TLM_BLOCKING_TRANSPORT_MASK | `TLM_NONBLOCKING_TRANSPORT_MASK) 00367 00368 `define SEQ_ITEM_GET_NEXT_ITEM_MASK (1<<0) 00369 `define SEQ_ITEM_TRY_NEXT_ITEM_MASK (1<<1) 00370 `define SEQ_ITEM_ITEM_DONE_MASK (1<<2) 00371 `define SEQ_ITEM_HAS_DO_AVAILABLE_MASK (1<<3) 00372 `define SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK (1<<4) 00373 `define SEQ_ITEM_PUT_RESPONSE_MASK (1<<5) 00374 `define SEQ_ITEM_PUT_MASK (1<<6) 00375 `define SEQ_ITEM_GET_MASK (1<<7) 00376 `define SEQ_ITEM_PEEK_MASK (1<<8) 00377 00378 `define SEQ_ITEM_PULL_MASK (`SEQ_ITEM_GET_NEXT_ITEM_MASK | `SEQ_ITEM_TRY_NEXT_ITEM_MASK | \ 00379 `SEQ_ITEM_ITEM_DONE_MASK | `SEQ_ITEM_HAS_DO_AVAILABLE_MASK | \ 00380 `SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK | `SEQ_ITEM_PUT_RESPONSE_MASK | \ 00381 `SEQ_ITEM_PUT_MASK | `SEQ_ITEM_GET_MASK | `SEQ_ITEM_PEEK_MASK) 00382 00383 `define SEQ_ITEM_UNI_PULL_MASK (`SEQ_ITEM_GET_NEXT_ITEM_MASK | `SEQ_ITEM_TRY_NEXT_ITEM_MASK | \ 00384 `SEQ_ITEM_ITEM_DONE_MASK | `SEQ_ITEM_HAS_DO_AVAILABLE_MASK | \ 00385 `SEQ_ITEM_WAIT_FOR_SEQUENCES_MASK | `SEQ_ITEM_GET_MASK | \ 00386 `SEQ_ITEM_PEEK_MASK) 00387 00388 `define SEQ_ITEM_PUSH_MASK (`SEQ_ITEM_PUT_MASK) 00389 00390 `include "tlm/tlm_imps.svh"
![]() Intelligent Design Verification Project: OVM, Revision: 2.0.1 |
Copyright (c) 2008 Intelligent Design Verification. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included here: http://www.intelligentdv.com/licenses/fdl.txt |
![]() Doxygen Version: 1.5.5 Wed Jan 7 19:27:18 2009 |