tlm_defines.svh

Go to the documentation of this file.
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
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
Doxygen Version: 1.5.5
Wed Jan 7 19:27:18 2009
Find a documentation bug? Report bugs to: bugs.intelligentdv.com Project: DoxygenFilterSV