Part I Introduction |
|
|
|
3 | (24) |
|
|
3 | (1) |
|
|
4 | (10) |
|
1.2.1 Process Technologies |
|
|
4 | (2) |
|
|
6 | (4) |
|
1.2.3 SOC Verification and Validation |
|
|
10 | (4) |
|
1.3 Post-Silicon SOC Debug |
|
|
14 | (6) |
|
|
20 | (1) |
|
1.5 Proposed Approach and Book Organization |
|
|
20 | (1) |
|
|
21 | (1) |
|
|
22 | (1) |
|
|
23 | (4) |
Part II The Complexity of Debugging System Chips |
|
|
2 Post-silicon Debugging of a Single Building Block |
|
|
27 | (10) |
|
2.1 Behavior of a Single Building Block |
|
|
27 | (4) |
|
|
27 | (3) |
|
|
30 | (1) |
|
2.2 Complicating Factors for Debugging |
|
|
31 | (4) |
|
2.2.1 Limited Observability and Controllability |
|
|
31 | (1) |
|
2.2.2 Undefined Substate and Outputs |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
|
35 | (1) |
|
|
35 | (2) |
|
3 Post-silicon Debugging of Multiple Building Blocks |
|
|
37 | (30) |
|
3.1 Communication Between Two Building Blocks |
|
|
37 | (15) |
|
|
37 | (4) |
|
3.1.2 Synchronous Communication |
|
|
41 | (2) |
|
3.1.3 Asynchronous Communication |
|
|
43 | (4) |
|
3.1.4 SOC Communication Protocols |
|
|
47 | (3) |
|
3.1.5 Variable Communication Duration |
|
|
50 | (2) |
|
3.2 Resource Sharing Between Building Blocks |
|
|
52 | (3) |
|
3.3 Complicating Factors for Debugging |
|
|
55 | (7) |
|
3.3.1 Non-determinism at the Clock-Cycle, Handshake, and Transaction Level |
|
|
56 | (2) |
|
|
58 | (2) |
|
3.3.3 No Instantaneous, Distributed, Global Actions |
|
|
60 | (2) |
|
|
62 | (1) |
|
|
63 | (4) |
Part III The CSAR Debug Approach |
|
|
|
67 | (20) |
|
|
67 | (11) |
|
4.1.1 Communication-Centric Debug |
|
|
68 | (2) |
|
|
70 | (3) |
|
4.1.3 Abstraction-Based Debug |
|
|
73 | (2) |
|
4.1.4 Run/Stop-Based Debug |
|
|
75 | (3) |
|
|
78 | (3) |
|
4.3 CSAR Debug Infrastructure Requirements |
|
|
81 | (5) |
|
4.3.1 Communication-Centric Debug |
|
|
81 | (3) |
|
|
84 | (1) |
|
4.3.3 Abstraction-Based Debug |
|
|
84 | (1) |
|
4.3.4 Run/Stop-Based Debug |
|
|
85 | (1) |
|
4.3.5 Debug Requirements Overview |
|
|
85 | (1) |
|
|
86 | (1) |
|
|
86 | (1) |
|
5 On-Chip Debug Architecture |
|
|
87 | (52) |
|
|
87 | (3) |
|
5.2 Debug Control and Status Interconnect |
|
|
90 | (12) |
|
5.2.1 Test Access Port and Associated Controller |
|
|
91 | (3) |
|
|
94 | (2) |
|
5.2.3 Global Mode Control |
|
|
96 | (1) |
|
5.2.4 Test Point Register |
|
|
96 | (5) |
|
|
101 | (1) |
|
5.3 Monitoring the Communication |
|
|
102 | (6) |
|
5.3.1 Overview of a DTL Monitor |
|
|
102 | (1) |
|
|
103 | (1) |
|
|
104 | (2) |
|
|
106 | (1) |
|
|
106 | (2) |
|
5.4 Controlling the Communication |
|
|
108 | (8) |
|
5.4.1 Overview of a DTL Protocol Specific Instrument |
|
|
108 | (1) |
|
|
109 | (3) |
|
5.4.3 DTL PSI Test Point Register |
|
|
112 | (2) |
|
5.4.4 DTL PSI Event Generator |
|
|
114 | (1) |
|
5.4.5 Example DTL PSI Timing Diagram |
|
|
114 | (2) |
|
5.5 Event Distribution Interconnect |
|
|
116 | (4) |
|
|
116 | (1) |
|
|
117 | (1) |
|
5.5.3 EDI Clock Domain Crossing Module |
|
|
118 | (1) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
121 | (7) |
|
|
121 | (1) |
|
5.7.2 Memory Test Wrapper |
|
|
121 | (2) |
|
5.7.3 Primary Input/Output Unit |
|
|
123 | (2) |
|
5.7.4 Scan Input Multiplexer |
|
|
125 | (1) |
|
|
126 | (1) |
|
5.7.6 Protocol-Specific Controller |
|
|
127 | (1) |
|
5.8 Clock and Reset Control |
|
|
128 | (8) |
|
|
128 | (3) |
|
5.8.2 CRGU Test Control Block |
|
|
131 | (1) |
|
5.8.3 Clock Control Slices |
|
|
132 | (3) |
|
5.8.4 Reset Generation Unit |
|
|
135 | (1) |
|
|
136 | (1) |
|
|
137 | (2) |
|
|
139 | (18) |
|
|
139 | (1) |
|
6.2 DID Tool Architecture |
|
|
140 | (7) |
|
|
140 | (2) |
|
|
142 | (1) |
|
6.2.3 CSAR Configuration Classes |
|
|
143 | (2) |
|
6.2.4 CSAR Software Classes |
|
|
145 | (1) |
|
|
146 | (1) |
|
6.3 Module Implementation or Generation |
|
|
147 | (1) |
|
6.4 Debug Wrapper Generation |
|
|
148 | (6) |
|
|
148 | (1) |
|
6.4.2 Debug Wrapper Configuration |
|
|
148 | (3) |
|
6.4.3 Debug Wrapper Generation Process |
|
|
151 | (3) |
|
6.4.4 Executing the Debug Wrapper Generation Process |
|
|
154 | (1) |
|
6.5 Other Tools in the DM Flow |
|
|
154 | (1) |
|
|
155 | (1) |
|
|
155 | (2) |
|
7 Off-Chip Debugger Software |
|
|
157 | (34) |
|
|
157 | (4) |
|
7.1.1 CSARDE Requirements |
|
|
157 | (1) |
|
7.1.2 Software Architecture |
|
|
158 | (1) |
|
7.1.3 CSARDE Design Concepts |
|
|
159 | (2) |
|
|
161 | (7) |
|
|
161 | (1) |
|
7.2.2 SOC Environment Abstraction |
|
|
162 | (2) |
|
7.2.3 SOC Customization Support |
|
|
164 | (1) |
|
|
165 | (2) |
|
|
167 | (1) |
|
7.3 The Abstraction Manager |
|
|
168 | (15) |
|
|
168 | (2) |
|
7.3.2 Structural Abstraction |
|
|
170 | (4) |
|
|
174 | (2) |
|
7.3.4 Behavioral Abstraction |
|
|
176 | (1) |
|
7.3.5 Temporal Abstraction |
|
|
177 | (6) |
|
|
183 | (1) |
|
|
184 | (3) |
|
|
187 | (1) |
|
|
187 | (4) |
Part IV Case Studies |
|
|
|
191 | (44) |
|
8.1 CSAR DfD in Industrial SOCs |
|
|
191 | (9) |
|
8.1.1 Co-Processor Array SOC |
|
|
193 | (1) |
|
8.1.2 PNX8525 and CODEC SOCs |
|
|
194 | (3) |
|
|
197 | (1) |
|
|
198 | (2) |
|
|
200 | (5) |
|
8.2.1 CSAR SOC Application |
|
|
200 | (1) |
|
8.2.2 CSAR SOC Hardware Architecture |
|
|
201 | (2) |
|
8.2.3 CSAR SOC Clock Domains |
|
|
203 | (2) |
|
8.3 Application of the CSAR DfD Flow |
|
|
205 | (4) |
|
|
205 | (1) |
|
8.3.2 DfD and Tool Configuration Effort |
|
|
206 | (1) |
|
8.3.3 DID Flow Execution Time |
|
|
206 | (1) |
|
8.3.4 CSARDE Configuration |
|
|
207 | (2) |
|
8.4 Evaluating the Complicating Factors for Debugging |
|
|
209 | (16) |
|
|
209 | (1) |
|
8.4.2 CSAR SOC Observability and Controllability |
|
|
210 | (6) |
|
8.4.3 Undefined Substate and State Comparison |
|
|
216 | (2) |
|
|
218 | (1) |
|
8.4.5 Non-determinism at Clock-Cycle, Handshake, and Transaction Levels |
|
|
218 | (5) |
|
|
223 | (1) |
|
8.4.7 No Instantaneous, Distributed, Global Actions |
|
|
224 | (1) |
|
|
225 | (6) |
|
|
225 | (1) |
|
8.5.2 Debugging a Permanent, Certain Error |
|
|
225 | (1) |
|
8.5.3 Debugging a Transient, Certain Error |
|
|
226 | (4) |
|
8.5.4 Debugging a Transient, Uncertain Error |
|
|
230 | (1) |
|
|
231 | (1) |
|
|
231 | (4) |
Part V Related Work, Conclusion, and Future Work |
|
|
|
235 | (22) |
|
9.1 Internal Observability and Controllability |
|
|
235 | (7) |
|
9.1.1 Intrinsic Physical and Optical Observability |
|
|
235 | (1) |
|
9.1.2 Intrinsic Functional Observability and Controllability |
|
|
236 | (1) |
|
9.1.3 DfD for Internal Observability and Controllability |
|
|
237 | (5) |
|
|
242 | (3) |
|
9.2.1 Deterministic Architectures |
|
|
242 | (1) |
|
9.2.2 Deterministic Replay |
|
|
243 | (1) |
|
9.2.3 DfD for Execution Control |
|
|
244 | (1) |
|
9.3 Debug Standardization |
|
|
245 | (1) |
|
|
246 | (3) |
|
|
246 | (1) |
|
9.4.2 Debug Application Programmer's Interfaces |
|
|
246 | (1) |
|
|
247 | (2) |
|
|
249 | (1) |
|
|
250 | (7) |
|
10 Conclusion and Future Work |
|
|
257 | (6) |
|
|
257 | (2) |
|
|
259 | (2) |
|
|
261 | (2) |
Appendix A Design-for-Debug Flow (Continued) |
|
263 | (22) |
|
A.1 Test Wrapper Generation |
|
|
263 | (5) |
|
|
263 | (1) |
|
A.1.2 Test Wrapper Configuration |
|
|
263 | (2) |
|
A.1.3 Test Wrapper Generation Process |
|
|
265 | (2) |
|
A.1.4 Executing the Test Wrapper Generation Process |
|
|
267 | (1) |
|
A.2 Top-Level Integration |
|
|
268 | (5) |
|
|
268 | (1) |
|
A.2.2 Top-Level Configuration |
|
|
269 | (1) |
|
A.2.3 Top-Level Integration Process |
|
|
270 | (2) |
|
A.2.4 Executing the Top-Level Integration Process |
|
|
272 | (1) |
|
A.3 Chip-Level Integration |
|
|
273 | (4) |
|
|
273 | (1) |
|
A.3.2 Chip-Level Configuration |
|
|
273 | (2) |
|
A.3.3 Chip-Level Integration Process |
|
|
275 | (2) |
|
A.3.4 Executing the Chip-Level Integration Process |
|
|
277 | (1) |
|
A.4 Boundary-Scan Level Integration |
|
|
277 | |
|
|
277 | (1) |
|
A.4.2 Bofundary-Scan-Level Configuration |
|
|
277 | (3) |
|
A.4.3 Boundary-Scan-Level Integration Process |
|
|
280 | (1) |
|
A.4.4 Executing the Boundary-Scan-Level Integration Process |
|
|
281 | |
|
A.5 DfD Configuration Files |
|
|
28 | (256) |
|
|
284 | (1) |
Appendix B CSAR SOC |
|
285 | (8) |
|
|
285 | (2) |
|
|
287 | (1) |
|
|
288 | (3) |
|
B.4 Module Implementation Parameters |
|
|
291 | (2) |
Appendix C CSARDE Grammars and Scripts |
|
293 | (12) |
|
C.1 CSARDE Tool Control Language Grammar |
|
|
293 | (2) |
|
C.2 CSARDE Event Sequencer Grammar |
|
|
295 | (1) |
|
|
295 | (8) |
|
|
303 | (2) |
Glossary |
|
305 | (2) |
Index |
|
307 | |