Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: FNXPCIEXactorBuilder.vr | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | #include <vera_defines.vrh> | |
36 | ||
37 | // XactorFmwork and XactorComponents libraries | |
38 | #include "XactorBaseBuilder.vrh" | |
39 | #include "XactorBasePacket.vrh" | |
40 | #include "XactorBaseSignalInterface.vrh" | |
41 | #include "XactorBaseManager.vrh" | |
42 | #include "XactorManager.vrh" | |
43 | #include "XactorHash.vrh" | |
44 | #include "XactorBinTree.vrh" | |
45 | #include "XactorList.vrh" | |
46 | #include "XactorListWildCard.vrh" | |
47 | #include "XactorCtrl.vrh" | |
48 | #include "XactorUtilities.vrh" | |
49 | #include "XactorDefines.vri" | |
50 | #include "XactorClk.port.vri" | |
51 | ||
52 | // DenaliPCIE libary | |
53 | #include "DenaliPCIE.vri" | |
54 | ||
55 | // FNXPCIEXactor library | |
56 | #include "FNXPCIEXactorDefines.vri" | |
57 | #include "FNXPCIEXactorPorts.vri" | |
58 | ||
59 | // report library | |
60 | #include "cReport.vrh" | |
61 | #include "FNXPCIEXactorReportMacros.vri" | |
62 | ||
63 | class FNXPCIEXactorBuilder extends XactorBaseBuilder { | |
64 | ||
65 | // Inherited Members | |
66 | // MyReport declared in XactorBaseBuilder | |
67 | ||
68 | // Base Class and Method Names For QR Macros | |
69 | local string ClassName = "FNXPCIEXactorBuilder"; | |
70 | local string MethodName = null; | |
71 | ||
72 | local FNXPCIEXactorManager Manager; | |
73 | FNXPCIEXactorSignalInterface SignalInterface; | |
74 | ||
75 | local string XactorName; // Name of transactor | |
76 | local integer PortNum; // PCIE Port Number | |
77 | ||
78 | local XactorClk ClkPort; // Clock port | |
79 | local FNXPCIEXactorDenaliClkPort DenaliClkPort; // Denali PCIE Clocks | |
80 | FNXPCIEXactorMiscPort MiscPort; // 3/4/04 | |
81 | ||
82 | local bit AssertCovEnabled; | |
83 | local FNXPCIEXactorAssertCovDatabase AssertCovDatabase; | |
84 | ||
85 | // Denali PCIE Device Reference For This Transactor | |
86 | FNXPCIEXactorDenaliDevice PCIEDevice; | |
87 | ||
88 | // Flow Control Engine | |
89 | FNXPCIEXactorFCEngine FCEngine; | |
90 | ||
91 | // Utilities | |
92 | static FNXPCIEXactorUtilities Util; | |
93 | ||
94 | // SelfExpect members | |
95 | bit SelfExpectEnable; | |
96 | integer MinSelfExpectDly; | |
97 | integer MaxSelfExpectDly; | |
98 | ||
99 | task new( ReportClass _Report, | |
100 | XactorClk _ClkPort, | |
101 | FNXPCIEXactorDenaliClkPort _DenaliClkPort, | |
102 | FNXPCIEXactorDenaliDevice _PCIEDevice, | |
103 | FNXPCIEXactorMiscPort _MiscPort, | |
104 | integer _PortNum, | |
105 | string _XactorName = FNX_PCIE_XTR_XACTOR_NAME ); | |
106 | ||
107 | // public methods | |
108 | virtual function string CreateName(); | |
109 | virtual function XactorBasePacket CreatePacket(); | |
110 | virtual function XactorBaseManager CreateManager(); | |
111 | virtual function XactorBaseSignalInterface CreateSignalInterface(); | |
112 | virtual function XactorBaseExpectDataStruct CreateExpectDataStruct(); | |
113 | virtual function XactorBaseExpectDataStruct CreateXExpectDataStruct(); | |
114 | virtual function XactorBaseExpectDataStruct CreateHashElement(); | |
115 | virtual function ReportClass CreateReport(); | |
116 | virtual function XactorClk CreateClock(); | |
117 | virtual task AddDenaliCbk( denaliPcieCbReasonT DenCbk ); | |
118 | virtual task EnableAssertCov(); | |
119 | virtual function bit GetAssertCovEnabled(); | |
120 | virtual task ResetAssertCov(); | |
121 | virtual task AddAssertPt( denaliPcieErrorTypeT covPt ); | |
122 | virtual function bit IsAssertPtCovered( denaliPcieErrorTypeT covPt ); | |
123 | virtual function integer GetAssertPtCnt( denaliPcieErrorTypeT covPt ); | |
124 | virtual task DisplayAssertCov( ReportType rptType ); | |
125 | virtual task SetUnexpectedTLPErr(); | |
126 | virtual task SuppressUnexpectedTLPErr(); | |
127 | virtual task SomaSet( string somaParm, string somaValue ); | |
128 | virtual task Epilogue( ReportType rptType ); | |
129 | ||
130 | //Made Public since all errors need to be supressed if a Denali reset is asserted | |
131 | task DenaliMemoryModelInit(); | |
132 | // protected methods | |
133 | local task EnableDefaultDenaliCbks(); | |
134 | ||
135 | } // end of builder sub-class | |
136 | ||
137 | // constructor | |
138 | task FNXPCIEXactorBuilder::new( ReportClass _Report, | |
139 | XactorClk _ClkPort, | |
140 | FNXPCIEXactorDenaliClkPort _DenaliClkPort, | |
141 | FNXPCIEXactorDenaliDevice _PCIEDevice, | |
142 | FNXPCIEXactorMiscPort _MiscPort, | |
143 | integer _PortNum, | |
144 | string _XactorName = FNX_PCIE_XTR_XACTOR_NAME ) | |
145 | { | |
146 | sprintf( XactorName, "%s_%0d", _XactorName, _PortNum ); | |
147 | ClkPort = _ClkPort; | |
148 | DenaliClkPort = _DenaliClkPort; | |
149 | MyReport = _Report; | |
150 | PCIEDevice = _PCIEDevice; | |
151 | PortNum = _PortNum; | |
152 | MiscPort = _MiscPort; | |
153 | ||
154 | if ( Util == null ) | |
155 | Util = new( MyReport, XactorName ); | |
156 | ||
157 | // Create Xactor Manager | |
158 | Manager = new( this, | |
159 | ClkPort ); | |
160 | ||
161 | // Create Assertion Coverage Database and Default Assertion Coverage to Disabled | |
162 | AssertCovDatabase = new( MyReport, XactorName ); | |
163 | AssertCovEnabled = 0; | |
164 | ||
165 | // Create Signal Interface | |
166 | SignalInterface = new( Manager.ExpectFifo, // incoming TLP transactions Fifo | |
167 | Manager.DllpExpectFifo, // incoming DLLP transactions Fifo | |
168 | Manager.DriveFifo, // outgoing TLP/DLLP transactions Fifo | |
169 | Manager.RetryPktFifo, // retried TLP transactions Fifo | |
170 | MyReport, // Report reference | |
171 | XactorName, // Name of transactor | |
172 | Manager._XactorCtrl, // control (Enable/Disable xactor) | |
173 | ClkPort, // Transactor clock port | |
174 | DenaliClkPort, // Denali PCIE Clock Port | |
175 | PCIEDevice, // Denali PCIE Device reference | |
176 | MiscPort, // Port for Denali reset and Receive Detect signals | |
177 | Util, // Xactor Utilities | |
178 | AssertCovDatabase, // Assertion Coverage Database | |
179 | PortNum, // PCIE Port Number (only used for reporting) | |
180 | Manager.Bluntend_TX_fifo // EP blunt end data transmit fifo | |
181 | ); | |
182 | ||
183 | // Flow Control Engine | |
184 | FCEngine = new( MyReport, SignalInterface, DenaliClkPort, Util, XactorName ); | |
185 | ||
186 | // Default Self-Expect Members | |
187 | SelfExpectEnable = 1'b0; | |
188 | MinSelfExpectDly = 0; | |
189 | MaxSelfExpectDly = 50; | |
190 | ||
191 | // Register Default Denali Callbacks For This PCIE Device | |
192 | EnableDefaultDenaliCbks(); | |
193 | ||
194 | // Initialize ReqID and BAR Setup of Denali Memory Model | |
195 | DenaliMemoryModelInit(); | |
196 | } | |
197 | ||
198 | function string FNXPCIEXactorBuilder::CreateName() | |
199 | { | |
200 | CreateName = XactorName; | |
201 | } | |
202 | ||
203 | function XactorBasePacket FNXPCIEXactorBuilder::CreatePacket() | |
204 | { | |
205 | FNXPCIEXactorPacket Packet = new( MyReport, | |
206 | XactorName, | |
207 | Util, | |
208 | PortNum ); | |
209 | CreatePacket = Packet; | |
210 | } | |
211 | ||
212 | function XactorBaseManager FNXPCIEXactorBuilder::CreateManager() | |
213 | { | |
214 | CreateManager = Manager; | |
215 | } | |
216 | ||
217 | function XactorBaseSignalInterface FNXPCIEXactorBuilder::CreateSignalInterface() | |
218 | { | |
219 | CreateSignalInterface = SignalInterface; | |
220 | } | |
221 | ||
222 | function XactorBaseExpectDataStruct FNXPCIEXactorBuilder::CreateExpectDataStruct() | |
223 | { | |
224 | XactorList DataStruct = new; | |
225 | CreateExpectDataStruct = DataStruct; | |
226 | } | |
227 | ||
228 | function XactorBaseExpectDataStruct FNXPCIEXactorBuilder::CreateXExpectDataStruct() | |
229 | { | |
230 | XactorListWildCard XDataStruct = new; | |
231 | CreateXExpectDataStruct = XDataStruct; | |
232 | } | |
233 | ||
234 | function XactorBaseExpectDataStruct FNXPCIEXactorBuilder::CreateHashElement() | |
235 | { | |
236 | XactorList HashElement = new; | |
237 | CreateHashElement = HashElement; | |
238 | } | |
239 | ||
240 | function ReportClass FNXPCIEXactorBuilder::CreateReport() | |
241 | { | |
242 | CreateReport = MyReport; | |
243 | } | |
244 | ||
245 | function XactorClk FNXPCIEXactorBuilder::CreateClock() | |
246 | { | |
247 | CreateClock = ClkPort; | |
248 | } | |
249 | ||
250 | task FNXPCIEXactorBuilder::AddDenaliCbk( denaliPcieCbReasonT DenCbk ) | |
251 | { | |
252 | string MethodName = "AddDenaliCbk"; | |
253 | integer status; | |
254 | status = PCIEDevice.addCb( DenCbk ); | |
255 | if (status < 0) | |
256 | PCIEX_QR_ERR( "%s-> Failed to Add Callback=%s", | |
257 | XactorName, DenCbk ); | |
258 | else { | |
259 | PCIEX_QR_I( "AC: %s-> Add Callback=%s", | |
260 | XactorName, DenCbk ); | |
261 | } | |
262 | } | |
263 | ||
264 | // This task should enabled all Denali callback points for which | |
265 | // this Xactor has handlers for in the Signal Interface | |
266 | task FNXPCIEXactorBuilder::EnableDefaultDenaliCbks() | |
267 | { | |
268 | // User Queue Callbacks (Packets Generated By Model) | |
269 | AddDenaliCbk( PCIE_CB_TL_user_queue_enter ); | |
270 | AddDenaliCbk( PCIE_CB_TL_user_queue_exit ); | |
271 | ||
272 | // Transaction Layer Xmit Callbacks | |
273 | // AddDenaliCbk( PCIE_CB_TL_transmit_queue_enter ); | |
274 | // AddDenaliCbk( PCIE_CB_TL_transmit_queue_exit ); | |
275 | AddDenaliCbk( PCIE_CB_TL_to_DL ); | |
276 | ||
277 | // DLL Xmit Callbacks | |
278 | // AddDenaliCbk( PCIE_CB_DL_TX_queue_enter ); | |
279 | // AddDenaliCbk( PCIE_CB_DL_TX_queue_exit ); | |
280 | AddDenaliCbk( PCIE_CB_DL_to_PL ); | |
281 | ||
282 | // Physical Layer Xmit Callbacks | |
283 | AddDenaliCbk( PCIE_CB_PL_TX_start_packet ); // Drive Start | |
284 | AddDenaliCbk( PCIE_CB_PL_TX_end_packet ); // Drive End | |
285 | ||
286 | // Transmission Related Callbacks | |
287 | // AddDenaliCbk( PCIE_CB_TX_trans_done ); | |
288 | ||
289 | // DLL Replay Callbacks | |
290 | // AddDenaliCbk( PCIE_CB_DL_TX_retry_buffer_enter ); | |
291 | AddDenaliCbk( PCIE_CB_DL_TX_retry_buffer_exit ); | |
292 | // AddDenaliCbk( PCIE_CB_DL_TX_retry_buffer_purge ); | |
293 | ||
294 | // Physical Layer Recv Callbacks | |
295 | AddDenaliCbk( PCIE_CB_PL_RX_start_packet ); | |
296 | AddDenaliCbk( PCIE_CB_PL_RX_end_packet ); | |
297 | AddDenaliCbk( PCIE_CB_PL_to_DL ); | |
298 | ||
299 | // DLL Recv Callbacks | |
300 | AddDenaliCbk( PCIE_CB_DL_RX_queue_enter ); | |
301 | AddDenaliCbk( PCIE_CB_DL_RX_queue_exit ); | |
302 | // AddDenaliCbk( PCIE_CB_DL_to_TL ); | |
303 | ||
304 | // Transaction Layer Recv Callbacks | |
305 | // AddDenaliCbk( PCIE_CB_TL_RX_packet ); | |
306 | ||
307 | // Reception Related Callbacks | |
308 | // AddDenaliCbk( PCIE_CB_RX_trans_done ); | |
309 | ||
310 | // Completion Related Callbacks | |
311 | // AddDenaliCbk( PCIE_CB_TL_TX_completion_queue_enter ); | |
312 | // AddDenaliCbk( PCIE_CB_TL_TX_completion_queue_exit ); | |
313 | // AddDenaliCbk( PCIE_CB_TL_RX_completion_queue_enter ); | |
314 | // AddDenaliCbk( PCIE_CB_TL_RX_completion_queue_exit ); | |
315 | ||
316 | // Error Related Callbacks | |
317 | AddDenaliCbk( PCIE_CB_TX_error ); | |
318 | AddDenaliCbk( PCIE_CB_RX_error ); | |
319 | AddDenaliCbk( PCIE_CB_error ); | |
320 | AddDenaliCbk( PCIE_CB_unknown ); | |
321 | } | |
322 | ||
323 | task FNXPCIEXactorBuilder::EnableAssertCov() | |
324 | { | |
325 | string MethodName = "EnableAssertCov"; | |
326 | AssertCovEnabled = 1; | |
327 | AddDenaliCbk( PCIE_CB_assert_pass ); | |
328 | PCIEX_QR_I( "%s-> Denali Assertion Coverage Enabled.", XactorName ); | |
329 | } | |
330 | ||
331 | function bit FNXPCIEXactorBuilder::GetAssertCovEnabled() | |
332 | { | |
333 | GetAssertCovEnabled = AssertCovEnabled; | |
334 | } | |
335 | ||
336 | task FNXPCIEXactorBuilder::DenaliMemoryModelInit() | |
337 | { | |
338 | // Setup Default ReqID for Denali Model in DEV_CTRL Register | |
339 | // NOTE: The FNX PCIE Xactor Does Not Make Use of the Denali Memory Model So The Value | |
340 | // Set For a Xactor's ReqID is Unimportant Other Than to Make The Model Happy | |
341 | SignalInterface.SetReqID( FNX_PCIE_XTR_DEFAULT_BUS_NUM, | |
342 | PCIEDevice.getId(), // uniquify across Xactor instances | |
343 | FNX_PCIE_XTR_DEFAULT_FUNC_NUM ); | |
344 | ||
345 | // Setup Default 64-bit BAR for Denali Model in REG0_BASE_0 and REG0_BASE_1 Registers | |
346 | SignalInterface.SetupBAR64( PCIE_REG0_BASE_0, | |
347 | PCIE_REG0_BASE_1, | |
348 | FNX_PCIE_XTR_DEFAULT_BAR_64_SIZE, // NOTE: Should match width in default SOMA file | |
349 | FNX_PCIE_XTR_DEFAULT_BAR_64_OFFSET ); | |
350 | ||
351 | ||
352 | ///////////////////////////////////////////////////////// | |
353 | // Begin -> Suppress Denali Error Checks | |
354 | // | |
355 | // Disable Self-Addressing TLP Check | |
356 | SignalInterface.SuppressDenaliErr( PCIE_TL_COR_TLP_ADDRSELF_2); | |
357 | ||
358 | // Disable Device Number Matches Stored Device Number Check | |
359 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlRidDev ); | |
360 | ||
361 | // Disable Bus Number Matches Stored Bus Number Check | |
362 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlRidBus ); | |
363 | ||
364 | // Disable Function Number Matches Stored Function Number Check | |
365 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlRidFunc ); | |
366 | ||
367 | // Disable Completion's BCM must not be set by PCI Express completer. | |
368 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlCplBCM0 ); | |
369 | ||
370 | // Disable BAR Address Check For a Device in Specified Memory/IO Range | |
371 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_ADNON_1 ); | |
372 | ||
373 | // Disable Check For a Device with Specified ID | |
374 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_IDNON_2 ); | |
375 | ||
376 | // Disable Check For 64-bit Addresses That Are Below 4GB | |
377 | //SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlAddr4GB ); // somePerson | |
378 | ||
379 | // Disable Check That Received Cpl/CplD Packets Have a Matching Request | |
380 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_CPLQ0_1 ); | |
381 | ||
382 | // Disable Check That Request Is Not Supported By Device | |
383 | SignalInterface.SuppressDenaliErr( PCIE_TL_COR_TLP_UR_1 ); | |
384 | ||
385 | // Disable Check That Request Address/Length Combination Crosses 4K Boundary | |
386 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlLen4KB ); | |
387 | ||
388 | // Discard the data embedded in CplD for an earlier CfgRd, because the RequesterID | |
389 | // was changed unexpectedly after the request packet [transId=0x%06x] was sent. | |
390 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_CPLUDN ); | |
391 | ||
392 | // Disable Check That Completer ID Is Not Same As Requester ID | |
393 | SignalInterface.SuppressDenaliErr( PCIE_TL_COR_TLP_IDSELF_2 ); | |
394 | ||
395 | // Disable Check That Port Function is defined as Configuration 0. | |
396 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlCfg1 ); | |
397 | ||
398 | // Disable Check That Completion is Supplied For Every Driven Request | |
399 | SignalInterface.SuppressDenaliErr( PCIE_TL_COR_TLP_CPLTO_2 ); | |
400 | ||
401 | // Disable Check two different devices write the same data to a config. register | |
402 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_CPLUN ); | |
403 | ||
404 | // Allow FNXPCIEXtr to send any ReqID in Cfg requests. Added by RFT. Approved by JCB. | |
405 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlCfgBus); | |
406 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlCfgDev); | |
407 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlCfgFun); | |
408 | ||
409 | // Allow usage of any requester ID by Xactor regardless of pending | |
410 | // requests in Denali's User/TX Queues | |
411 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_DID_TXQ); | |
412 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_DID_USERQ); | |
413 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_DID_RXCPLQ); | |
414 | ||
415 | // Transactions pending in various Denali Q's need not conform to the BAR | |
416 | // configuration associated with new requests since the Xactor is being | |
417 | // used as a traffic generator | |
418 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_TXCPLQ); | |
419 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_TXCPLQ0); | |
420 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_RXCPLQ); | |
421 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_RXCPLQ0); | |
422 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_TXQ ); | |
423 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_TXQ0); | |
424 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_USERQ); | |
425 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_CFG_MID_USERQ0); | |
426 | ||
427 | // [review jcb 2/9/04] [DEN #17235] Workaround For Issue w/ Denali v1.000-14, Denali Claims CplH/CplD | |
428 | // Credits Advertised During FC Init by an EP Must be Infinite | |
429 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_FCPE_INI_CPLH ); | |
430 | SignalInterface.SuppressDenaliErr( PCIE_TL_FATAL_FCPE_INI_CPLD ); | |
431 | ||
432 | // Request size is greater than Max_Read_Request_Size in Device Control Register. | |
433 | SignalInterface.SuppressDenaliErr( PCIE_TL_NONFATAL_TLP_MF_vlLenMRR); | |
434 | // | |
435 | // End -> Suppress Denali Error Checks | |
436 | ///////////////////////////////////////////////////////// | |
437 | } | |
438 | ||
439 | task FNXPCIEXactorBuilder::ResetAssertCov() | |
440 | { | |
441 | AssertCovDatabase.Reset(); | |
442 | } | |
443 | ||
444 | task FNXPCIEXactorBuilder::AddAssertPt( denaliPcieErrorTypeT covPt ) | |
445 | { | |
446 | AssertCovDatabase.Add( covPt ); | |
447 | } | |
448 | ||
449 | function bit FNXPCIEXactorBuilder::IsAssertPtCovered( denaliPcieErrorTypeT covPt ) | |
450 | { | |
451 | IsAssertPtCovered = AssertCovDatabase.Covered( covPt ); | |
452 | } | |
453 | ||
454 | function integer FNXPCIEXactorBuilder::GetAssertPtCnt( denaliPcieErrorTypeT covPt ) | |
455 | { | |
456 | GetAssertPtCnt = AssertCovDatabase.Count( covPt ); | |
457 | } | |
458 | ||
459 | task FNXPCIEXactorBuilder::DisplayAssertCov( ReportType rptType ) | |
460 | { | |
461 | AssertCovDatabase.Display( rptType ); | |
462 | } | |
463 | ||
464 | task FNXPCIEXactorBuilder::Epilogue( ReportType rptType ) | |
465 | { | |
466 | string MethodName = "Epilogue"; | |
467 | ||
468 | PCIEX_QR_Type( rptType, "%s -> Begin\n%s", XactorName, SignalInterface.GetEpilogueStr() ); | |
469 | PCIEX_QR_Type( rptType, "%s -> End", XactorName ); | |
470 | } | |
471 | ||
472 | task FNXPCIEXactorBuilder::SetUnexpectedTLPErr() | |
473 | { | |
474 | string MethodName = "SetUnexpectedTLPErr"; | |
475 | ||
476 | Manager.UnexpectedTLPIsErr = 1; | |
477 | PCIEX_QR_I( "%s -> Unexpected TLP Errors Enabled.", XactorName ); | |
478 | } | |
479 | ||
480 | task FNXPCIEXactorBuilder::SuppressUnexpectedTLPErr() | |
481 | { | |
482 | string MethodName = "SuppressUnexpectedTLPErr"; | |
483 | ||
484 | Manager.UnexpectedTLPIsErr = 0; | |
485 | PCIEX_QR_I("%s -> Unexpected TLP Errors Suppressed.", XactorName ); | |
486 | } | |
487 | ||
488 | task FNXPCIEXactorBuilder::SomaSet( string somaParm, string somaValue ) | |
489 | { | |
490 | string MethodName = "SomaSet"; | |
491 | string somaSetStr; | |
492 | integer status; | |
493 | ||
494 | status = DenaliDDVTclEval( { "mmsomaset", " ", PCIEDevice.GetInstanceName(), " ", somaParm, " ", somaValue } ); | |
495 | if (status >= 0) | |
496 | PCIEX_QR_I( "Inst=%s Parm=%s Val=%s", | |
497 | PCIEDevice.GetInstanceName(), somaParm, somaValue ); | |
498 | else | |
499 | PCIEX_QR_ERR( "mmsomaset Failed. Inst=%s Parm=%s Val=%s", | |
500 | PCIEDevice.GetInstanceName(), somaParm, somaValue ); | |
501 | } |