ovm_exports.svh

Go to the documentation of this file.
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
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
Doxygen Version: 1.4.6
Mon Sep 29 14:20:12 2008
Find a documentation bug? Report bugs to: bugs.intelligentdv.com Project: DoxygenFilterSV