OpenCores
URL https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk

Subversion Repositories uart2bus_testbench

[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [tlm1/] [uvm_exports.svh] - Blame information for rev 16

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 HanySalah
//
2
//------------------------------------------------------------------------------
3
//   Copyright 2007-2011 Mentor Graphics Corporation
4
//   Copyright 2007-2010 Cadence Design Systems, Inc.
5
//   Copyright 2010 Synopsys, Inc.
6
//   All Rights Reserved Worldwide
7
//
8
//   Licensed under the Apache License, Version 2.0 (the
9
//   "License"); you may not use this file except in
10
//   compliance with the License.  You may obtain a copy of
11
//   the License at
12
//
13
//       http://www.apache.org/licenses/LICENSE-2.0
14
//
15
//   Unless required by applicable law or agreed to in
16
//   writing, software distributed under the License is
17
//   distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
18
//   CONDITIONS OF ANY KIND, either express or implied.  See
19
//   the License for the specific language governing
20
//   permissions and limitations under the License.
21
//------------------------------------------------------------------------------
22
 
23
//------------------------------------------------------------------------------
24
// Title: TLM Export Classes
25
//------------------------------------------------------------------------------
26
// The following classes define the TLM export classes.
27
//------------------------------------------------------------------------------
28
 
29
 
30
//------------------------------------------------------------------------------
31
//
32
// CLASS: uvm_*_export #(T)
33
//
34
// The unidirectional uvm_*_export is a port that ~forwards~ or ~promotes~
35
// an interface implementation from a child component to its parent.
36
// An export can be connected to any compatible child export or imp port.
37
// It must ultimately be connected to at least one implementation
38
// of its associated interface.
39
//
40
// The interface type represented by the asterisk is any of the following
41
//
42
//|  blocking_put
43
//|  nonblocking_put
44
//|  put
45
//|
46
//|  blocking_get
47
//|  nonblocking_get
48
//|  get
49
//|
50
//|  blocking_peek
51
//|  nonblocking_peek
52
//|  peek
53
//|
54
//|  blocking_get_peek
55
//|  nonblocking_get_peek
56
//|  get_peek
57
//
58
// Type parameters
59
//
60
// T - The type of transaction to be communicated by the export
61
//
62
// Exports are connected to interface implementations directly via
63
//  ports or indirectly via other  exports.
64
//
65
//------------------------------------------------------------------------------
66
 
67
 
68
// Function: new
69
//
70
// The ~name~ and ~parent~ are the standard  constructor arguments.
71
// The ~min_size~ and ~max_size~ specify the minimum and maximum number of
72
// interfaces that must have been supplied to this port by the end of elaboration.
73
//
74
//|  function new (string name,
75
//|                uvm_component parent,
76
//|                int min_size=1,
77
//|                int max_size=1)
78
 
79
 
80
class uvm_blocking_put_export #(type T=int)
81
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
82
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_PUT_MASK,"uvm_blocking_put_export")
83
  `UVM_BLOCKING_PUT_IMP (this.m_if, T, t)
84
endclass
85
 
86
class uvm_nonblocking_put_export #(type T=int)
87
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
88
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_PUT_MASK,"uvm_nonblocking_put_export")
89
  `UVM_NONBLOCKING_PUT_IMP (this.m_if, T, t)
90
endclass
91
 
92
class uvm_put_export #(type T=int)
93
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
94
  `UVM_EXPORT_COMMON(`UVM_TLM_PUT_MASK,"uvm_put_export")
95
  `UVM_PUT_IMP (this.m_if, T, t)
96
endclass
97
 
98
class uvm_blocking_get_export #(type T=int)
99
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
100
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_GET_MASK,"uvm_blocking_get_export")
101
  `UVM_BLOCKING_GET_IMP (this.m_if, T, t)
102
endclass
103
 
104
class uvm_nonblocking_get_export #(type T=int)
105
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
106
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_GET_MASK,"uvm_nonblocking_get_export")
107
  `UVM_NONBLOCKING_GET_IMP (this.m_if, T, t)
108
endclass
109
 
110
class uvm_get_export #(type T=int)
111
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
112
  `UVM_EXPORT_COMMON(`UVM_TLM_GET_MASK,"uvm_get_export")
113
  `UVM_GET_IMP (this.m_if, T, t)
114
endclass
115
 
116
class uvm_blocking_peek_export #(type T=int)
117
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
118
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_PEEK_MASK,"uvm_blocking_peek_export")
119
  `UVM_BLOCKING_PEEK_IMP (this.m_if, T, t)
120
endclass
121
 
122
class uvm_nonblocking_peek_export #(type T=int)
123
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
124
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_PEEK_MASK,"uvm_nonblocking_peek_export")
125
  `UVM_NONBLOCKING_PEEK_IMP (this.m_if, T, t)
126
endclass
127
 
128
class uvm_peek_export #(type T=int)
129
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
130
  `UVM_EXPORT_COMMON(`UVM_TLM_PEEK_MASK,"uvm_peek_export")
131
  `UVM_PEEK_IMP (this.m_if, T, t)
132
endclass
133
 
134
class uvm_blocking_get_peek_export #(type T=int)
135
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
136
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_GET_PEEK_MASK,"uvm_blocking_get_peek_export")
137
  `UVM_BLOCKING_GET_PEEK_IMP (this.m_if, T, t)
138
endclass
139
 
140
class uvm_nonblocking_get_peek_export #(type T=int)
141
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
142
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_GET_PEEK_MASK,"uvm_nonblocking_get_peek_export")
143
  `UVM_NONBLOCKING_GET_PEEK_IMP (this.m_if, T, t)
144
endclass
145
 
146
class uvm_get_peek_export #(type T=int)
147
  extends uvm_port_base #(uvm_tlm_if_base #(T,T));
148
  `UVM_EXPORT_COMMON(`UVM_TLM_GET_PEEK_MASK,"uvm_get_peek_export")
149
  `UVM_GET_PEEK_IMP (this.m_if, T, t)
150
endclass
151
 
152
//------------------------------------------------------------------------------
153
//
154
// CLASS: uvm_*_export #(REQ,RSP)
155
//
156
// The bidirectional uvm_*_export is a port that ~forwards~ or ~promotes~
157
// an interface implementation from a child component to its parent.
158
// An export can be connected to any compatible child export or imp port.
159
// It must ultimately be connected to at least one implementation
160
// of its associated interface.
161
//
162
// The interface type represented by the asterisk is any of the following
163
//
164
//|  blocking_transport
165
//|  nonblocking_transport
166
//|  transport
167
//|
168
//|  blocking_master
169
//|  nonblocking_master
170
//|  master
171
//|
172
//|  blocking_slave
173
//|  nonblocking_slave
174
//|  slave
175
//
176
// Type parameters
177
//
178
// REQ - The type of request transaction to be communicated by the export
179
//
180
// RSP - The type of response transaction to be communicated by the export
181
//
182
// Exports are connected to interface implementations directly via
183
//  ports or indirectly via other
184
//  exports.
185
//
186
//------------------------------------------------------------------------------
187
 
188
// Function: new
189
//
190
// The ~name~ and ~parent~ are the standard  constructor arguments.
191
// The ~min_size~ and ~max_size~ specify the minimum and maximum number of
192
// interfaces that must have been supplied to this port by the end of elaboration.
193
//
194
//|  function new (string name,
195
//|                uvm_component parent,
196
//|                int min_size=1,
197
//|                int max_size=1)
198
 
199
 
200
class uvm_blocking_master_export #(type REQ=int, type RSP=REQ)
201
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
202
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_MASTER_MASK,"uvm_blocking_master_export")
203
  `UVM_BLOCKING_PUT_IMP (this.m_if, REQ, t)
204
  `UVM_BLOCKING_GET_PEEK_IMP (this.m_if, RSP, t)
205
endclass
206
 
207
class uvm_nonblocking_master_export #(type REQ=int, type RSP=REQ)
208
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
209
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_MASTER_MASK,"uvm_nonblocking_master_export")
210
  `UVM_NONBLOCKING_PUT_IMP (this.m_if, REQ, t)
211
  `UVM_NONBLOCKING_GET_PEEK_IMP (this.m_if, RSP, t)
212
endclass
213
 
214
class uvm_master_export #(type REQ=int, type RSP=REQ)
215
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
216
  `UVM_EXPORT_COMMON(`UVM_TLM_MASTER_MASK,"uvm_master_export")
217
  `UVM_PUT_IMP (this.m_if, REQ, t)
218
  `UVM_GET_PEEK_IMP (this.m_if, RSP, t)
219
endclass
220
 
221
class uvm_blocking_slave_export #(type REQ=int, type RSP=REQ)
222
  extends uvm_port_base #(uvm_tlm_if_base #(RSP, REQ));
223
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_SLAVE_MASK,"uvm_blocking_slave_export")
224
  `UVM_BLOCKING_PUT_IMP (this.m_if, RSP, t)
225
  `UVM_BLOCKING_GET_PEEK_IMP (this.m_if, REQ, t)
226
endclass
227
 
228
class uvm_nonblocking_slave_export #(type REQ=int, type RSP=REQ)
229
  extends uvm_port_base #(uvm_tlm_if_base #(RSP, REQ));
230
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_SLAVE_MASK,"uvm_nonblocking_slave_export")
231
  `UVM_NONBLOCKING_PUT_IMP (this.m_if, RSP, t)
232
  `UVM_NONBLOCKING_GET_PEEK_IMP (this.m_if, REQ, t)
233
endclass
234
 
235
class uvm_slave_export #(type REQ=int, type RSP=REQ)
236
  extends uvm_port_base #(uvm_tlm_if_base #(RSP, REQ));
237
  `UVM_EXPORT_COMMON(`UVM_TLM_SLAVE_MASK,"uvm_slave_export")
238
  `UVM_PUT_IMP (this.m_if, RSP, t)
239
  `UVM_GET_PEEK_IMP (this.m_if, REQ, t)
240
endclass
241
 
242
class uvm_blocking_transport_export #(type REQ=int, type RSP=REQ)
243
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
244
  `UVM_EXPORT_COMMON(`UVM_TLM_BLOCKING_TRANSPORT_MASK,"uvm_blocking_transport_export")
245
  `UVM_BLOCKING_TRANSPORT_IMP (this.m_if, REQ, RSP, req, rsp)
246
endclass
247
 
248
class uvm_nonblocking_transport_export #(type REQ=int, type RSP=REQ)
249
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
250
  `UVM_EXPORT_COMMON(`UVM_TLM_NONBLOCKING_TRANSPORT_MASK,"uvm_nonblocking_transport_export")
251
  `UVM_NONBLOCKING_TRANSPORT_IMP (this.m_if, REQ, RSP, req, rsp)
252
endclass
253
 
254
class uvm_transport_export #(type REQ=int, type RSP=REQ)
255
  extends uvm_port_base #(uvm_tlm_if_base #(REQ, RSP));
256
  `UVM_EXPORT_COMMON(`UVM_TLM_TRANSPORT_MASK,"uvm_transport_export")
257
  `UVM_TRANSPORT_IMP (this.m_if, REQ, RSP, req, rsp)
258
endclass
259
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.