00001 // $Id: ovm__exports_8svh-source.html,v 1.1 2008/10/07 21:54:34 alex.marin Exp $ 00002 //---------------------------------------------------------------------- 00003 // Copyright 2007-2008 Mentor Graphics Corporation 00004 // Copyright 2007-2008 Cadence Design Systems, Inc. 00005 // All Rights Reserved Worldwide 00006 // 00007 // Licensed under the Apache License, Version 2.0 (the 00008 // "License"); you may not use this file except in 00009 // compliance with the License. You may obtain a copy of 00010 // the License at 00011 // 00012 // http://www.apache.org/licenses/LICENSE-2.0 00013 // 00014 // Unless required by applicable law or agreed to in 00015 // writing, software distributed under the License is 00016 // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 00017 // CONDITIONS OF ANY KIND, either express or implied. See 00018 // the License for the specific language governing 00019 // permissions and limitations under the License. 00020 //---------------------------------------------------------------------- 00021 00022 00023 class ovm_blocking_put_export #( type T = int ) 00024 extends ovm_port_base #( tlm_if_base #(T,T) ); 00025 00026 function new( string name , ovm_component parent , 00027 int min_size = 1 , int max_size = 1 ); 00028 00029 super.new( name , parent , 00030 OVM_EXPORT , 00031 min_size , max_size ); 00032 m_if_mask = `TLM_BLOCKING_PUT_MASK; 00033 m_if_name = "tlm_blocking_put"; 00034 00035 endfunction 00036 00037 `BLOCKING_PUT_IMP( this.m_if , T , t ) 00038 00039 endclass 00040 00041 class ovm_nonblocking_put_export #( type T = int ) 00042 extends ovm_port_base #( tlm_if_base #(T,T) ); 00043 00044 function new( string name , ovm_component parent , 00045 int min_size = 1 , int max_size = 1 ); 00046 00047 super.new( name , parent , 00048 OVM_EXPORT , 00049 min_size , max_size ); 00050 m_if_mask = `TLM_NONBLOCKING_PUT_MASK; 00051 m_if_name = "tlm_nonblocking_put"; 00052 00053 endfunction 00054 00055 `NONBLOCKING_PUT_IMP( this.m_if , T , t ) 00056 00057 endclass 00058 00059 class ovm_put_export #( type T = int ) 00060 extends ovm_port_base #( tlm_if_base #(T,T) ); 00061 00062 function new( string name , ovm_component parent , 00063 int min_size = 1 , int max_size = 1 ); 00064 00065 super.new( name , parent , 00066 OVM_EXPORT , 00067 min_size , max_size ); 00068 m_if_mask = `TLM_PUT_MASK; 00069 m_if_name = "tlm_put"; 00070 00071 endfunction 00072 00073 `NONBLOCKING_PUT_IMP( this.m_if , T , t ) 00074 `BLOCKING_PUT_IMP( this.m_if , T , t ) 00075 00076 endclass 00077 00078 class ovm_blocking_get_export #( type T = int ) 00079 extends ovm_port_base #( tlm_if_base #(T,T) ); 00080 00081 function new( string name , ovm_component parent , 00082 int min_size = 1 , int max_size = 1 ); 00083 00084 super.new( name , parent , 00085 OVM_EXPORT , 00086 min_size , max_size ); 00087 m_if_mask = `TLM_BLOCKING_GET_MASK; 00088 m_if_name = "tlm_blocking_get"; 00089 00090 endfunction 00091 00092 `BLOCKING_GET_IMP( this.m_if , T , t ) 00093 00094 endclass 00095 00096 class ovm_nonblocking_get_export #( type T = int ) 00097 extends ovm_port_base #( tlm_if_base #(T,T) ); 00098 00099 function new( string name , ovm_component parent , 00100 int min_size = 1 , int max_size = 1 ); 00101 00102 super.new( name , parent , 00103 OVM_EXPORT , 00104 min_size , max_size ); 00105 m_if_mask = `TLM_NONBLOCKING_GET_MASK; 00106 m_if_name = "tlm_nonblocking_get"; 00107 00108 endfunction 00109 00110 `NONBLOCKING_GET_IMP( this.m_if , T , t ) 00111 00112 endclass 00113 00114 class ovm_get_export #( type T = int ) 00115 extends ovm_port_base #( tlm_if_base #(T,T) ); 00116 00117 function new( string name , ovm_component parent , 00118 int min_size = 1 , int max_size = 1 ); 00119 00120 super.new( name , parent , 00121 OVM_EXPORT , 00122 min_size , max_size ); 00123 m_if_mask = `TLM_GET_MASK; 00124 m_if_name = "tlm_get"; 00125 00126 endfunction 00127 00128 `NONBLOCKING_GET_IMP( this.m_if , T , t ) 00129 `BLOCKING_GET_IMP( this.m_if , T , t ) 00130 00131 endclass 00132 00133 class ovm_blocking_peek_export #( type T = int ) 00134 extends ovm_port_base #( tlm_if_base #(T,T) ); 00135 00136 function new( string name , ovm_component parent , 00137 int min_size = 1 , int max_size = 1 ); 00138 00139 super.new( name , parent , 00140 OVM_EXPORT , 00141 min_size , max_size ); 00142 m_if_mask = `TLM_BLOCKING_PEEK_MASK; 00143 m_if_name = "tlm_blocking_peek"; 00144 00145 endfunction 00146 00147 `BLOCKING_PEEK_IMP( this.m_if , T , t ) 00148 00149 endclass 00150 00151 class ovm_nonblocking_peek_export #( type T = int ) 00152 extends ovm_port_base #( tlm_if_base #(T,T) ); 00153 00154 function new( string name , ovm_component parent , 00155 int min_size = 1 , int max_size = 1 ); 00156 00157 super.new( name , parent , 00158 OVM_EXPORT , 00159 min_size , max_size ); 00160 m_if_mask = `TLM_NONBLOCKING_PEEK_MASK; 00161 m_if_name = "tlm_nonblocking_peek"; 00162 00163 endfunction 00164 00165 `NONBLOCKING_PEEK_IMP( this.m_if , T , t ) 00166 00167 endclass 00168 00169 class ovm_peek_export #( type T = int ) 00170 extends ovm_port_base #( tlm_if_base #(T,T) ); 00171 00172 function new( string name , ovm_component parent , 00173 int min_size = 1 , int max_size = 1 ); 00174 00175 super.new( name , parent , 00176 OVM_EXPORT , 00177 min_size , max_size ); 00178 m_if_mask = `TLM_PEEK_MASK; 00179 m_if_name = "tlm_peek"; 00180 00181 endfunction 00182 00183 `NONBLOCKING_PEEK_IMP( this.m_if , T , t ) 00184 `BLOCKING_PEEK_IMP( this.m_if , T , t ) 00185 00186 endclass 00187 00188 class ovm_blocking_get_peek_export #( type T = int ) 00189 extends ovm_port_base #( tlm_if_base #(T,T) ); 00190 00191 function new( string name , ovm_component parent , 00192 int min_size = 1 , int max_size = 1 ); 00193 00194 super.new( name , parent , 00195 OVM_EXPORT , 00196 min_size , max_size ); 00197 m_if_mask = `TLM_BLOCKING_GET_PEEK_MASK; 00198 m_if_name = "tlm_blocking_get_peek"; 00199 00200 endfunction 00201 00202 `BLOCKING_GET_IMP( this.m_if , T , t ) 00203 `BLOCKING_PEEK_IMP( this.m_if , T , t ) 00204 00205 endclass 00206 00207 class ovm_nonblocking_get_peek_export #( type T = int ) 00208 extends ovm_port_base #( tlm_if_base #(T,T) ); 00209 00210 function new( string name , ovm_component parent , 00211 int min_size = 1 , int max_size = 1 ); 00212 00213 super.new( name , parent , 00214 OVM_EXPORT , 00215 min_size , max_size ); 00216 m_if_mask = `TLM_NONBLOCKING_GET_PEEK_MASK; 00217 m_if_name = "tlm_nonblocking_get_peek"; 00218 00219 endfunction 00220 00221 `NONBLOCKING_GET_IMP( this.m_if , T , t ) 00222 `NONBLOCKING_PEEK_IMP( this.m_if , T , t ) 00223 00224 endclass 00225 00226 class ovm_get_peek_export #( type T = int ) 00227 extends ovm_port_base #( tlm_if_base #(T,T) ); 00228 00229 function new( string name , ovm_component parent , 00230 int min_size = 1 , int max_size = 1 ); 00231 00232 super.new( name , parent , 00233 OVM_EXPORT , 00234 min_size , max_size ); 00235 m_if_mask = `TLM_GET_PEEK_MASK; 00236 m_if_name = "tlm_get_peek"; 00237 00238 endfunction 00239 00240 `NONBLOCKING_GET_IMP( this.m_if , T , t ) 00241 `BLOCKING_GET_IMP( this.m_if , T , t ) 00242 00243 `NONBLOCKING_PEEK_IMP( this.m_if , T , t ) 00244 `BLOCKING_PEEK_IMP( this.m_if , T , t ) 00245 00246 endclass 00247 00248 class ovm_blocking_master_export #( type REQ = int , type RSP = int ) 00249 extends ovm_port_base #( tlm_if_base #(REQ, RSP) ); 00250 00251 function new( string name , ovm_component parent , 00252 int min_size = 1 , int max_size = 1 ); 00253 00254 super.new( name , parent , 00255 OVM_EXPORT , 00256 min_size , max_size ); 00257 m_if_mask = `TLM_BLOCKING_MASTER_MASK; 00258 m_if_name = "tlm_blocking_master"; 00259 00260 endfunction 00261 00262 `BLOCKING_PUT_IMP( this.m_if , REQ , t ) // req 00263 00264 `BLOCKING_GET_IMP( this.m_if , RSP , t ) // rsp 00265 `BLOCKING_PEEK_IMP( this.m_if , RSP , t ) // rsp 00266 00267 endclass 00268 00269 class ovm_nonblocking_master_export #( type REQ = int , type RSP = int ) 00270 extends ovm_port_base #( tlm_if_base #(REQ, RSP) ); 00271 00272 function new( string name , ovm_component parent , 00273 int min_size = 1 , int max_size = 1 ); 00274 00275 super.new( name , parent , 00276 OVM_EXPORT , 00277 min_size , max_size ); 00278 m_if_mask = `TLM_NONBLOCKING_MASTER_MASK; 00279 m_if_name = "tlm_nonblocking_master"; 00280 00281 endfunction 00282 00283 `NONBLOCKING_PUT_IMP( this.m_if , REQ , t ) // req 00284 00285 `NONBLOCKING_GET_IMP( this.m_if , RSP , t ) // rsp 00286 `NONBLOCKING_PEEK_IMP( this.m_if , RSP , t ) // rsp 00287 00288 endclass 00289 00290 00291 class ovm_master_export #( type REQ = int , type RSP = int ) 00292 extends ovm_port_base #( tlm_if_base #(REQ, RSP) ); 00293 00294 function new( string name , ovm_component parent , 00295 int min_size = 1 , int max_size = 1 ); 00296 00297 super.new( name , parent , 00298 OVM_EXPORT , 00299 min_size , max_size ); 00300 m_if_mask = `TLM_MASTER_MASK; 00301 m_if_name = "tlm_master"; 00302 00303 endfunction 00304 00305 `BLOCKING_PUT_IMP( this.m_if , REQ , t ) // req 00306 `NONBLOCKING_PUT_IMP( this.m_if , REQ , t ) // req 00307 00308 `BLOCKING_GET_IMP( this.m_if , RSP , t ) // rsp 00309 `BLOCKING_PEEK_IMP( this.m_if , RSP , t ) // rsp 00310 `NONBLOCKING_GET_IMP( this.m_if , RSP , t ) // rsp 00311 `NONBLOCKING_PEEK_IMP( this.m_if , RSP , t ) // rsp 00312 00313 endclass 00314 00315 class ovm_blocking_slave_export #( type REQ = int , type RSP = int ) 00316 extends ovm_port_base #( tlm_if_base #(RSP, REQ) ); 00317 00318 function new( string name , ovm_component parent , 00319 int min_size = 1 , int max_size = 1 ); 00320 00321 super.new( name , parent , 00322 OVM_EXPORT , 00323 min_size , max_size ); 00324 m_if_mask = `TLM_BLOCKING_SLAVE_MASK; 00325 m_if_name = "tlm_blocking_slave"; 00326 00327 endfunction 00328 00329 `BLOCKING_PUT_IMP( this.m_if , RSP , t ) // rsp 00330 00331 `BLOCKING_GET_IMP( this.m_if , REQ , t ) // req 00332 `BLOCKING_PEEK_IMP( this.m_if , REQ , t ) // req 00333 00334 endclass 00335 00336 class ovm_nonblocking_slave_export #( type REQ = int , type RSP = int ) 00337 extends ovm_port_base #( tlm_if_base #(RSP, REQ) ); 00338 00339 function new( string name , ovm_component parent , 00340 int min_size = 1 , int max_size = 1 ); 00341 00342 super.new( name , parent , 00343 OVM_EXPORT , 00344 min_size , max_size ); 00345 m_if_mask = `TLM_NONBLOCKING_SLAVE_MASK; 00346 m_if_name = "tlm_nonblocking_slave"; 00347 00348 endfunction 00349 00350 `NONBLOCKING_PUT_IMP( this.m_if , RSP , t ) // rsp 00351 00352 `NONBLOCKING_GET_IMP( this.m_if , REQ , t ) // req 00353 `NONBLOCKING_PEEK_IMP( this.m_if , REQ , t ) // req 00354 00355 endclass 00356 00357 class ovm_slave_export #( type REQ = int , type RSP = int ) 00358 extends ovm_port_base #( tlm_if_base #(RSP, REQ) ); 00359 00360 function new( string name , ovm_component parent , 00361 int min_size = 1 , int max_size = 1 ); 00362 00363 super.new( name , parent , 00364 OVM_EXPORT , 00365 min_size , max_size ); 00366 m_if_mask = `TLM_SLAVE_MASK; 00367 m_if_name = "tlm_slave"; 00368 00369 endfunction 00370 00371 `BLOCKING_PUT_IMP( this.m_if , RSP , t ) // rsp 00372 `NONBLOCKING_PUT_IMP( this.m_if , RSP , t ) // rsp 00373 00374 `BLOCKING_GET_IMP( this.m_if , REQ , t ) // req 00375 `BLOCKING_PEEK_IMP( this.m_if , REQ , t ) // req 00376 `NONBLOCKING_GET_IMP( this.m_if , REQ , t ) // req 00377 `NONBLOCKING_PEEK_IMP( this.m_if , REQ , t ) // req 00378 00379 endclass 00380 00381 00382 class ovm_blocking_transport_export #( type REQ = int , type RSP = int ) 00383 extends ovm_port_base #( tlm_if_base #(REQ, RSP) ); 00384 00385 function new( string name , ovm_component parent , 00386 int min_size = 1 , int max_size = 1 ); 00387 00388 super.new( name , parent , 00389 OVM_EXPORT , 00390 min_size , max_size ); 00391 m_if_mask = `TLM_BLOCKING_TRANSPORT_MASK; 00392 m_if_name = "tlm_blocking_transport"; 00393 00394 endfunction 00395 00396 `BLOCKING_TRANSPORT_IMP( this.m_if, REQ, RSP, req, rsp) 00397 00398 endclass 00399 00400 class ovm_nonblocking_transport_export #( type REQ = int , type RSP = int ) 00401 extends ovm_port_base #( tlm_if_base #(REQ, RSP) ); 00402 00403 function new( string name , ovm_component parent , 00404 int min_size = 1 , int max_size = 1 ); 00405 00406 super.new( name , parent , 00407 OVM_EXPORT , 00408 min_size , max_size ); 00409 m_if_mask = `TLM_NONBLOCKING_TRANSPORT_MASK; 00410 m_if_name = "tlm_nonblocking_transport"; 00411 00412 endfunction 00413 00414 `NONBLOCKING_TRANSPORT_IMP( this.m_if, REQ, RSP, req, rsp) 00415 00416 endclass 00417 00418 class ovm_transport_export #( type REQ = int , type RSP = int ) 00419 extends ovm_port_base #( tlm_if_base #(REQ, RSP) ); 00420 00421 function new( string name , ovm_component parent , 00422 int min_size = 1 , int max_size = 1 ); 00423 00424 super.new( name , parent , 00425 OVM_EXPORT , 00426 min_size , max_size ); 00427 m_if_mask = `TLM_TRANSPORT_MASK; 00428 m_if_name = "tlm_transport"; 00429 00430 endfunction 00431 00432 `BLOCKING_TRANSPORT_IMP( this.m_if, REQ, RSP, req, rsp) 00433 `NONBLOCKING_TRANSPORT_IMP( this.m_if, REQ, RSP, req, rsp) 00434 00435 endclass 00436 00437 class ovm_analysis_export #( type T = int ) 00438 extends ovm_port_base #( tlm_if_base #(T,T) ); 00439 00440 function new( string name , ovm_component parent = null ); 00441 00442 // check parent is 0 to facilitate hybrid 00443 super.new( name , parent , 00444 OVM_EXPORT , 00445 1 , OVM_UNBOUNDED_CONNECTIONS ); 00446 m_if_mask = `TLM_ANALYSIS_MASK; 00447 m_if_name = "tlm_analysis"; 00448 00449 endfunction 00450 00451 // 00452 // analysis export differs from all other exports 00453 // 00454 // it broadcasts to ALL connections simultaneously, not one by one 00455 // 00456 00457 function void write( input T t ); 00458 tlm_if_base #( T, T ) tif; 00459 00460 for( int i = 0; i < this.size(); i++ ) begin 00461 tif = this.lookup_indexed_if( i ); 00462 assert( tif != null ); 00463 tif.write( t ); 00464 end 00465 endfunction 00466 00467 endclass
![]() Intelligent Design Verification Project: OVM, Revision: 1.1.0 |
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.4.6 Mon Sep 29 14:20:12 2008 |