Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / verif / env / fc / vera / classes / fcShadowScanClass.vr
CommitLineData
86530b38
AT
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T2 Processor File: fcShadowScanClass.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// defines
37#include "defines.vri"
38#include "std_display_defines.vri"
39
40#include "std_display_class.vrh"
41#include "fc_top_defines.vri"
42
43#include "fc_shadow_scan.if.vrh"
44
45#define CLASSNAME fcShadowScanClass
46
47class CLASSNAME {
48
49 local string className = "fcShadowScanClass";
50 local StandardDisplay gDbg;
51
52 fc_shadow_scan__port fc_shadow_scan_port = fc_shadow_scan_bind;
53 integer spcThreadId;
54
55 bit [117:0] spc0_shadow_scan;
56#ifndef RTL_NO_SPC1
57 bit [117:0] spc1_shadow_scan;
58#endif
59#ifndef RTL_NO_SPC2
60 bit [117:0] spc2_shadow_scan;
61#endif
62#ifndef RTL_NO_SPC3
63 bit [117:0] spc3_shadow_scan;
64#endif
65#ifndef RTL_NO_SPC4
66 bit [117:0] spc4_shadow_scan;
67#endif
68#ifndef RTL_NO_SPC5
69 bit [117:0] spc5_shadow_scan;
70#endif
71#ifndef RTL_NO_SPC6
72 bit [117:0] spc6_shadow_scan;
73#endif
74#ifndef RTL_NO_SPC7
75 bit [117:0] spc7_shadow_scan;
76#endif
77
78 bit [141:0] l2t0_shadow_scan;
79 bit [141:0] l2t1_shadow_scan;
80 bit [141:0] l2t2_shadow_scan;
81 bit [141:0] l2t3_shadow_scan;
82 bit [141:0] l2t4_shadow_scan;
83 bit [141:0] l2t5_shadow_scan;
84 bit [141:0] l2t6_shadow_scan;
85 bit [141:0] l2t7_shadow_scan;
86
87 task new(StandardDisplay dbgHndl);
88 function string getShadowScanValue(string cluster);
89 function integer getSpcThreadId();
90}
91
92task CLASSNAME::new(StandardDisplay dbgHndl) {
93 this.gDbg = dbgHndl;
94 fork
95 {
96 spcThreadId = fc_shadow_scan_port.$spc_shadow_scan_id;
97 while (1) {
98 @(posedge fc_shadow_scan_port.$spc_shadow_scan_en async);
99 spcThreadId = fc_shadow_scan_port.$spc_shadow_scan_id;
100 spc0_shadow_scan = fc_shadow_scan_port.$spc0_shadow_scan_bits;
101 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC0 Thread %d Shadow scan bits", spcThreadId));
102 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc0_shadow_scan[2:0]));
103 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc0_shadow_scan[11:3]));
104 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc0_shadow_scan[57:12]));
105 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc0_shadow_scan[60:58]));
106 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc0_shadow_scan[61]));
107 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc0_shadow_scan[62]));
108 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc0_shadow_scan[63]));
109 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc0_shadow_scan[64]));
110 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc0_shadow_scan[65]));
111 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc0_shadow_scan[66]));
112 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc0_shadow_scan[67]));
113 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc0_shadow_scan[68]));
114 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc0_shadow_scan[69]));
115 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc0_shadow_scan[70]));
116 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc0_shadow_scan[71]));
117 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc0_shadow_scan[117:72]));
118#ifndef RTL_NO_SPC1
119 spc1_shadow_scan = fc_shadow_scan_port.$spc1_shadow_scan_bits;
120 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC1 Thread %d Shadow scan bits", spcThreadId));
121 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc1_shadow_scan[2:0]));
122 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc1_shadow_scan[11:3]));
123 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc1_shadow_scan[57:12]));
124 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc1_shadow_scan[60:58]));
125 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc1_shadow_scan[61]));
126 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc1_shadow_scan[62]));
127 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc1_shadow_scan[63]));
128 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc1_shadow_scan[64]));
129 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc1_shadow_scan[65]));
130 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc1_shadow_scan[66]));
131 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc1_shadow_scan[67]));
132 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc1_shadow_scan[68]));
133 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc1_shadow_scan[69]));
134 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc1_shadow_scan[70]));
135 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc1_shadow_scan[71]));
136 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc1_shadow_scan[117:72]));
137#endif
138#ifndef RTL_NO_SPC2
139 spc2_shadow_scan = fc_shadow_scan_port.$spc2_shadow_scan_bits;
140 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC2 Thread %d Shadow scan bits", spcThreadId));
141 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc2_shadow_scan[2:0]));
142 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc2_shadow_scan[11:3]));
143 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc2_shadow_scan[57:12]));
144 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc2_shadow_scan[60:58]));
145 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc2_shadow_scan[61]));
146 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc2_shadow_scan[62]));
147 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc2_shadow_scan[63]));
148 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc2_shadow_scan[64]));
149 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc2_shadow_scan[65]));
150 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc2_shadow_scan[66]));
151 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc2_shadow_scan[67]));
152 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc2_shadow_scan[68]));
153 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc2_shadow_scan[69]));
154 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc2_shadow_scan[70]));
155 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc2_shadow_scan[71]));
156 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc2_shadow_scan[117:72]));
157#endif
158#ifndef RTL_NO_SPC3
159 spc3_shadow_scan = fc_shadow_scan_port.$spc3_shadow_scan_bits;
160 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC3 Thread %d Shadow scan bits", spcThreadId));
161 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc3_shadow_scan[2:0]));
162 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc3_shadow_scan[11:3]));
163 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc3_shadow_scan[57:12]));
164 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc3_shadow_scan[60:58]));
165 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc3_shadow_scan[61]));
166 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc3_shadow_scan[62]));
167 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc3_shadow_scan[63]));
168 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc3_shadow_scan[64]));
169 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc3_shadow_scan[65]));
170 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc3_shadow_scan[66]));
171 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc3_shadow_scan[67]));
172 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc3_shadow_scan[68]));
173 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc3_shadow_scan[69]));
174 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc3_shadow_scan[70]));
175 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc3_shadow_scan[71]));
176 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc3_shadow_scan[117:72]));
177#endif
178#ifndef RTL_NO_SPC4
179 spc4_shadow_scan = fc_shadow_scan_port.$spc4_shadow_scan_bits;
180 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC4 Thread %d Shadow scan bits", spcThreadId));
181 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc4_shadow_scan[2:0]));
182 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc4_shadow_scan[11:3]));
183 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc4_shadow_scan[57:12]));
184 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc4_shadow_scan[60:58]));
185 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc4_shadow_scan[61]));
186 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc4_shadow_scan[62]));
187 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc4_shadow_scan[63]));
188 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc4_shadow_scan[64]));
189 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc4_shadow_scan[65]));
190 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc4_shadow_scan[66]));
191 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc4_shadow_scan[67]));
192 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc4_shadow_scan[68]));
193 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc4_shadow_scan[69]));
194 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc4_shadow_scan[70]));
195 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc4_shadow_scan[71]));
196 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc4_shadow_scan[117:72]));
197#endif
198#ifndef RTL_NO_SPC5
199 spc5_shadow_scan = fc_shadow_scan_port.$spc5_shadow_scan_bits;
200 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC5 Thread %d Shadow scan bits", spcThreadId));
201 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc5_shadow_scan[2:0]));
202 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc5_shadow_scan[11:3]));
203 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc5_shadow_scan[57:12]));
204 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc5_shadow_scan[60:58]));
205 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc5_shadow_scan[61]));
206 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc5_shadow_scan[62]));
207 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc5_shadow_scan[63]));
208 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc5_shadow_scan[64]));
209 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc5_shadow_scan[65]));
210 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc5_shadow_scan[66]));
211 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc5_shadow_scan[67]));
212 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc5_shadow_scan[68]));
213 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc5_shadow_scan[69]));
214 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc5_shadow_scan[70]));
215 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc5_shadow_scan[71]));
216 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc5_shadow_scan[117:72]));
217#endif
218#ifndef RTL_NO_SPC6
219 spc6_shadow_scan = fc_shadow_scan_port.$spc6_shadow_scan_bits;
220 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC6 Thread %d Shadow scan bits", spcThreadId));
221 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc6_shadow_scan[2:0]));
222 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc6_shadow_scan[11:3]));
223 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc6_shadow_scan[57:12]));
224 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc6_shadow_scan[60:58]));
225 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc6_shadow_scan[61]));
226 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc6_shadow_scan[62]));
227 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc6_shadow_scan[63]));
228 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc6_shadow_scan[64]));
229 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc6_shadow_scan[65]));
230 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc6_shadow_scan[66]));
231 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc6_shadow_scan[67]));
232 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc6_shadow_scan[68]));
233 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc6_shadow_scan[69]));
234 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc6_shadow_scan[70]));
235 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc6_shadow_scan[71]));
236 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc6_shadow_scan[117:72]));
237#endif
238#ifndef RTL_NO_SPC7
239 spc7_shadow_scan = fc_shadow_scan_port.$spc7_shadow_scan_bits;
240 PR_NORMAL(className, MON_NORMAL, psprintf("Captured SPC7 Thread %d Shadow scan bits", spcThreadId));
241 PR_NORMAL(className, MON_NORMAL, psprintf("TL for last trap: %h", spc7_shadow_scan[2:0]));
242 PR_NORMAL(className, MON_NORMAL, psprintf("TT for last trap: %h", spc7_shadow_scan[11:3]));
243 PR_NORMAL(className, MON_NORMAL, psprintf("TPC for last trap: %h", spc7_shadow_scan[57:12]));
244 PR_NORMAL(className, MON_NORMAL, psprintf("TL: %b", spc7_shadow_scan[60:58]));
245 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.TLZ: %b", spc7_shadow_scan[61]));
246 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.IE: %b", spc7_shadow_scan[62]));
247 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PRIV: %b", spc7_shadow_scan[63]));
248 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.AM: %b", spc7_shadow_scan[64]));
249 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.PEF: %b", spc7_shadow_scan[65]));
250 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.RED: %b", spc7_shadow_scan[66]));
251 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.HPRIV: %b", spc7_shadow_scan[67]));
252 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TCT: %b", spc7_shadow_scan[68]));
253 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.TLE: %b", spc7_shadow_scan[69]));
254 PR_NORMAL(className, MON_NORMAL, psprintf("PSTATE.CLE: %b", spc7_shadow_scan[70]));
255 PR_NORMAL(className, MON_NORMAL, psprintf("HPSTATE.IBE: %b", spc7_shadow_scan[71]));
256 PR_NORMAL(className, MON_NORMAL, psprintf("VA: %h", spc7_shadow_scan[117:72]));
257#endif
258 }
259 }
260 {
261 while (1) {
262 @(posedge fc_shadow_scan_port.$l2t_shadow_scan_en async);
263 l2t0_shadow_scan = fc_shadow_scan_port.$l2t0_shadow_scan_bits;
264 l2t1_shadow_scan = fc_shadow_scan_port.$l2t1_shadow_scan_bits;
265 l2t2_shadow_scan = fc_shadow_scan_port.$l2t2_shadow_scan_bits;
266 l2t3_shadow_scan = fc_shadow_scan_port.$l2t3_shadow_scan_bits;
267 l2t4_shadow_scan = fc_shadow_scan_port.$l2t4_shadow_scan_bits;
268 l2t5_shadow_scan = fc_shadow_scan_port.$l2t5_shadow_scan_bits;
269 l2t6_shadow_scan = fc_shadow_scan_port.$l2t6_shadow_scan_bits;
270 l2t7_shadow_scan = fc_shadow_scan_port.$l2t7_shadow_scan_bits;
271
272 PR_NORMAL(className, MON_NORMAL, psprintf("Captured L2T Shadow scan bits"));
273 PR_NORMAL(className, MON_NORMAL, psprintf("L2T0 Error Address Register: %h", l2t0_shadow_scan[35:0]));
274 PR_NORMAL(className, MON_NORMAL, psprintf("L2T0 Notdata Error Register: %h", l2t0_shadow_scan[83:36]));
275 PR_NORMAL(className, MON_NORMAL, psprintf("L2T0 Error Status Register: %h", l2t0_shadow_scan[141:84]));
276 PR_NORMAL(className, MON_NORMAL, psprintf("L2T1 Error Address Register: %h", l2t1_shadow_scan[35:0]));
277 PR_NORMAL(className, MON_NORMAL, psprintf("L2T1 Notdata Error Register: %h", l2t1_shadow_scan[83:36]));
278 PR_NORMAL(className, MON_NORMAL, psprintf("L2T1 Error Status Register: %h", l2t1_shadow_scan[141:84]));
279 PR_NORMAL(className, MON_NORMAL, psprintf("L2T2 Error Address Register: %h", l2t2_shadow_scan[35:0]));
280 PR_NORMAL(className, MON_NORMAL, psprintf("L2T2 Notdata Error Register: %h", l2t2_shadow_scan[83:36]));
281 PR_NORMAL(className, MON_NORMAL, psprintf("L2T2 Error Status Register: %h", l2t2_shadow_scan[141:84]));
282 PR_NORMAL(className, MON_NORMAL, psprintf("L2T3 Error Address Register: %h", l2t3_shadow_scan[35:0]));
283 PR_NORMAL(className, MON_NORMAL, psprintf("L2T3 Notdata Error Register: %h", l2t3_shadow_scan[83:36]));
284 PR_NORMAL(className, MON_NORMAL, psprintf("L2T3 Error Status Register: %h", l2t3_shadow_scan[141:84]));
285 PR_NORMAL(className, MON_NORMAL, psprintf("L2T4 Error Address Register: %h", l2t4_shadow_scan[35:0]));
286 PR_NORMAL(className, MON_NORMAL, psprintf("L2T4 Notdata Error Register: %h", l2t4_shadow_scan[83:36]));
287 PR_NORMAL(className, MON_NORMAL, psprintf("L2T4 Error Status Register: %h", l2t4_shadow_scan[141:84]));
288 PR_NORMAL(className, MON_NORMAL, psprintf("L2T5 Error Address Register: %h", l2t5_shadow_scan[35:0]));
289 PR_NORMAL(className, MON_NORMAL, psprintf("L2T5 Notdata Error Register: %h", l2t5_shadow_scan[83:36]));
290 PR_NORMAL(className, MON_NORMAL, psprintf("L2T5 Error Status Register: %h", l2t5_shadow_scan[141:84]));
291 PR_NORMAL(className, MON_NORMAL, psprintf("L2T6 Error Address Register: %h", l2t6_shadow_scan[35:0]));
292 PR_NORMAL(className, MON_NORMAL, psprintf("L2T6 Notdata Error Register: %h", l2t6_shadow_scan[83:36]));
293 PR_NORMAL(className, MON_NORMAL, psprintf("L2T6 Error Status Register: %h", l2t6_shadow_scan[141:84]));
294 PR_NORMAL(className, MON_NORMAL, psprintf("L2T7 Error Address Register: %h", l2t7_shadow_scan[35:0]));
295 PR_NORMAL(className, MON_NORMAL, psprintf("L2T7 Notdata Error Register: %h", l2t7_shadow_scan[83:36]));
296 PR_NORMAL(className, MON_NORMAL, psprintf("L2T7 Error Status Register: %h", l2t7_shadow_scan[141:84]));
297 }
298 }
299 join none
300}
301
302function string CLASSNAME::getShadowScanValue(string cluster) {
303 string outStr = "";
304 string tmpStr = "";
305
306 tmpStr = cluster.substr(0,2);
307 if (tmpStr.match("spc")) {
308 sprintf(outStr, "%b",spc0_shadow_scan);
309#ifndef RTL_NO_SPC1
310 sprintf(tmpStr, "%b",spc1_shadow_scan);
311 outStr = {outStr,tmpStr};
312#endif
313#ifndef RTL_NO_SPC2
314 sprintf(tmpStr, "%b",spc2_shadow_scan);
315 outStr = {outStr,tmpStr};
316#endif
317#ifndef RTL_NO_SPC3
318 sprintf(tmpStr, "%b",spc3_shadow_scan);
319 outStr = {outStr,tmpStr};
320#endif
321#ifndef RTL_NO_SPC4
322 sprintf(tmpStr, "%b",spc4_shadow_scan);
323 outStr = {outStr,tmpStr};
324#endif
325#ifndef RTL_NO_SPC5
326 sprintf(tmpStr, "%b",spc5_shadow_scan);
327 outStr = {outStr,tmpStr};
328#endif
329#ifndef RTL_NO_SPC6
330 sprintf(tmpStr, "%b",spc6_shadow_scan);
331 outStr = {outStr,tmpStr};
332#endif
333#ifndef RTL_NO_SPC7
334 sprintf(tmpStr, "%b",spc7_shadow_scan);
335 outStr = {outStr,tmpStr};
336#endif
337 }
338 else if (tmpStr.match("l2t")) {
339 sprintf(outStr, "%b",{l2t0_shadow_scan,l2t1_shadow_scan,l2t2_shadow_scan,l2t3_shadow_scan,l2t4_shadow_scan,l2t5_shadow_scan,l2t6_shadow_scan,l2t7_shadow_scan});
340 }
341 else {
342 PR_ERROR(className, MON_ERROR, psprintf("Given string: %s does not match spc or l2t", cluster));
343 }
344 PR_ALWAYS(className, MON_ALWAYS, psprintf("Captured shadow scan value for %s : %s", cluster, outStr));
345 getShadowScanValue = outStr;
346}
347
348function integer CLASSNAME::getSpcThreadId() {
349 getSpcThreadId = spcThreadId;
350}