Foreword |
|
xiii | |
Preface to the Third Edition |
|
xv | |
Acknowledgements |
|
xvii | |
|
|
1 | (8) |
|
|
2 | (2) |
|
|
3 | (1) |
|
|
3 | (1) |
|
Virtual Socket Interface Alliance |
|
|
4 | (1) |
|
Design for Reuse: The Challenge |
|
|
4 | (2) |
|
|
5 | (1) |
|
|
5 | (1) |
|
The Emerging Business Model for Reuse |
|
|
6 | (3) |
|
The System-on-Chip Design Process |
|
|
9 | (14) |
|
|
9 | (2) |
|
|
11 | (6) |
|
|
11 | (4) |
|
|
15 | (1) |
|
|
15 | (1) |
|
|
16 | (1) |
|
The Specification Problem |
|
|
17 | (2) |
|
Specification Requirements |
|
|
17 | (1) |
|
|
18 | (1) |
|
The System Design Process |
|
|
19 | (4) |
|
System-Level Design Issues: Rules and Tools |
|
|
23 | (40) |
|
|
23 | (5) |
|
|
25 | (2) |
|
The Role of Full-Custom Design in Reuse |
|
|
27 | (1) |
|
Design for Timing Closure: Logic Design Issues |
|
|
28 | (10) |
|
Interfaces and Timing Closure |
|
|
28 | (5) |
|
Synchronous vs. Asynchronous Design Style |
|
|
33 | (2) |
|
|
35 | (1) |
|
|
36 | (1) |
|
Timing Exceptions and Multicycle Paths |
|
|
37 | (1) |
|
Design for Timing Closure: Physical Design Issues |
|
|
38 | (2) |
|
|
38 | (1) |
|
Synthesis Strategy and Timing Budgets |
|
|
39 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
Design for Verification: Verification Strategy |
|
|
40 | (2) |
|
System Interconnect and On-Chip Buses |
|
|
42 | (9) |
|
|
43 | (4) |
|
|
47 | (1) |
|
Synchronous Design of Buses |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
48 | (3) |
|
Design for Bring-Up and Debug: On-Chip Debug Structures |
|
|
51 | (1) |
|
|
52 | (5) |
|
Lowering the Supply Voltage |
|
|
53 | (1) |
|
Reducing Capacitance and Switching Activity |
|
|
54 | (2) |
|
Sizing and Other Synthesis Techniques |
|
|
56 | (1) |
|
|
57 | (1) |
|
Design for Test: Manufacturing Test Strategies |
|
|
57 | (3) |
|
|
57 | (1) |
|
|
58 | (1) |
|
|
58 | (1) |
|
|
59 | (1) |
|
|
59 | (1) |
|
|
60 | (3) |
|
|
60 | (1) |
|
|
61 | (2) |
|
|
63 | (18) |
|
|
63 | (5) |
|
Characteristics of Good IP |
|
|
64 | (1) |
|
Implementation and Verification IP |
|
|
65 | (2) |
|
Overview of Design Process |
|
|
67 | (1) |
|
|
68 | (1) |
|
Planning and Specification |
|
|
69 | (4) |
|
|
69 | (2) |
|
Verification Specification |
|
|
71 | (1) |
|
|
71 | (1) |
|
|
71 | (1) |
|
High-Level Models as Executable Specifications |
|
|
72 | (1) |
|
Macro Design and Verification |
|
|
73 | (5) |
|
|
77 | (1) |
|
Soft Macro Productization |
|
|
78 | (3) |
|
|
78 | (1) |
|
|
78 | (3) |
|
|
81 | (56) |
|
Overview of the Coding Guidelines |
|
|
81 | (1) |
|
|
82 | (15) |
|
General Naming Conventions |
|
|
82 | (2) |
|
Naming Conventions for VITAL Support |
|
|
84 | (1) |
|
|
85 | (1) |
|
Include Informational Headers in Source Files |
|
|
85 | (2) |
|
|
87 | (1) |
|
Keep Commands on Separate Lines |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
Do Not Use HDL Reserved Words |
|
|
89 | (1) |
|
|
89 | (3) |
|
Port Maps and Generic Maps |
|
|
92 | (1) |
|
VHDL Entity, Architecture, and Configuration Sections |
|
|
93 | (1) |
|
|
93 | (1) |
|
|
94 | (2) |
|
|
96 | (1) |
|
|
97 | (4) |
|
Use Only IEEE Standard Types (VHDL) |
|
|
97 | (1) |
|
Do Not Use Hard-Coded Numeric Values |
|
|
98 | (1) |
|
|
98 | (1) |
|
Constant Definition Files (Verilog) |
|
|
98 | (1) |
|
Avoid Embedding Synthesis Commands |
|
|
99 | (1) |
|
Use Technology-Independent Libraries |
|
|
99 | (1) |
|
|
100 | (1) |
|
Guidelines for Clocks and Resets |
|
|
101 | (7) |
|
|
102 | (1) |
|
|
103 | (1) |
|
|
103 | (1) |
|
Avoid Internally Generated Clocks |
|
|
104 | (1) |
|
Gated Clocks and Low-Power Designs |
|
|
105 | (1) |
|
Avoid Internally Generated Resets |
|
|
106 | (1) |
|
|
107 | (1) |
|
|
108 | (1) |
|
Multiple-Bit Synchronizers |
|
|
108 | (1) |
|
|
108 | (17) |
|
|
109 | (1) |
|
|
110 | (3) |
|
|
113 | (1) |
|
Avoid Combinational Feedback |
|
|
113 | (1) |
|
Specify Complete Sensitivity Lists |
|
|
114 | (3) |
|
Blocking and Nonblocking Assignments (Verilog) |
|
|
117 | (2) |
|
Signal vs. Variable Assignments (VHDL) |
|
|
119 | (1) |
|
Case Statements vs. if-then else Statements |
|
|
120 | (2) |
|
|
122 | (2) |
|
|
124 | (1) |
|
|
124 | (1) |
|
Avoid full case and parallel_case Pragmas |
|
|
124 | (1) |
|
Partitioning for Synthesis |
|
|
125 | (10) |
|
|
125 | (1) |
|
Locate Related Combinational Logic in a Single Module |
|
|
126 | (1) |
|
Separate Modules That Have Different Design Goals |
|
|
127 | (1) |
|
|
128 | (1) |
|
Arithmetic Operators: Merging Resources |
|
|
128 | (2) |
|
Partitioning for Synthesis Runtime |
|
|
130 | (1) |
|
|
130 | (3) |
|
Eliminate Glue Logic at the Top Level |
|
|
133 | (1) |
|
|
134 | (1) |
|
|
135 | (1) |
|
|
136 | (1) |
|
Macro Synthesis Guidelines |
|
|
137 | (16) |
|
Overview of the Synthesis Problem |
|
|
137 | (1) |
|
|
138 | (6) |
|
|
139 | (1) |
|
Subblock Timing Constraints |
|
|
139 | (1) |
|
Synthesis in the Design Process |
|
|
140 | (1) |
|
Subblock Synthesis Process |
|
|
141 | (1) |
|
|
141 | (1) |
|
|
142 | (1) |
|
Preserve Clock and Reset Networks |
|
|
142 | (1) |
|
Code Checking Before Synthesis |
|
|
143 | (1) |
|
Code Checking After Synthesis |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
144 | (1) |
|
|
145 | (1) |
|
Physical Synthesis Deliverables |
|
|
145 | (1) |
|
RAM and Datapath Generators |
|
|
145 | (5) |
|
|
146 | (1) |
|
|
147 | (1) |
|
|
148 | (2) |
|
Coding Guidelines for Synthesis Scripts |
|
|
150 | (3) |
|
Macro Verification Guidelines |
|
|
153 | (26) |
|
Overview of Macro Verification |
|
|
153 | (6) |
|
|
154 | (1) |
|
|
155 | (4) |
|
Inspection as Verification |
|
|
159 | (1) |
|
|
160 | (1) |
|
|
161 | (8) |
|
Transaction-Based Verification |
|
|
161 | (2) |
|
Component-Based Verification |
|
|
163 | (2) |
|
Automated Response Checking |
|
|
165 | (1) |
|
Verification Suite Design |
|
|
166 | (3) |
|
Design of Verification Components |
|
|
169 | (3) |
|
|
169 | (2) |
|
|
171 | (1) |
|
|
171 | (1) |
|
Verification Component Usage |
|
|
172 | (1) |
|
|
172 | (5) |
|
Functional and Code Coverage |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
173 | (1) |
|
|
173 | (1) |
|
|
174 | (3) |
|
|
177 | (2) |
|
|
179 | (28) |
|
|
179 | (2) |
|
Why and When to Use Hard Macros |
|
|
180 | (1) |
|
Design Process for Hard vs. Soft Macros |
|
|
181 | (1) |
|
Design Issues for Hard Macros |
|
|
181 | (9) |
|
|
181 | (1) |
|
|
182 | (1) |
|
|
183 | (1) |
|
|
184 | (1) |
|
|
185 | (1) |
|
|
186 | (1) |
|
|
187 | (1) |
|
|
187 | (1) |
|
|
188 | (2) |
|
The Hard Macro Design Process |
|
|
190 | (1) |
|
Productization of Hard Macros |
|
|
190 | (4) |
|
|
190 | (3) |
|
|
193 | (1) |
|
Model Development for Hard Macros |
|
|
194 | (10) |
|
|
194 | (5) |
|
|
199 | (1) |
|
|
200 | (1) |
|
|
201 | (3) |
|
|
204 | (1) |
|
|
204 | (3) |
|
Macro Deployment: Packaging for Reuse |
|
|
207 | (10) |
|
Delivering the Complete Product |
|
|
207 | (7) |
|
|
208 | (2) |
|
|
210 | (2) |
|
|
212 | (1) |
|
|
213 | (1) |
|
Contents of the User Guide |
|
|
214 | (3) |
|
System Integration with Reusable Macros |
|
|
217 | (22) |
|
|
217 | (1) |
|
Integrating Macros into an SoC Design |
|
|
218 | (3) |
|
Problems in Integrating IP |
|
|
218 | (1) |
|
Strategies for Managing Interfacing Issues |
|
|
219 | (1) |
|
Interfacing Hard Macros to the Rest of the Design |
|
|
220 | (1) |
|
|
221 | (2) |
|
|
221 | (1) |
|
|
221 | (1) |
|
|
222 | (1) |
|
|
223 | (1) |
|
|
223 | (1) |
|
|
223 | (1) |
|
|
224 | (15) |
|
Design Planning and Synthesis |
|
|
226 | (4) |
|
|
230 | (4) |
|
|
234 | (3) |
|
Verifying the Physical Design |
|
|
237 | (1) |
|
|
238 | (1) |
|
System-Level Verification Issues |
|
|
239 | (26) |
|
The Importance of Verification |
|
|
239 | (1) |
|
The Verification Strategy |
|
|
240 | (1) |
|
|
241 | (3) |
|
|
241 | (1) |
|
Data or Behavioral Verification |
|
|
242 | (2) |
|
|
244 | (1) |
|
|
244 | (3) |
|
|
247 | (2) |
|
Application-Based Verification |
|
|
249 | (4) |
|
Software-Driven Application Testbench |
|
|
250 | (1) |
|
Rapid Prototyping for Testing |
|
|
251 | (2) |
|
|
253 | (3) |
|
|
253 | (1) |
|
|
254 | (1) |
|
Gate-Level Simulation with Full Timing |
|
|
255 | (1) |
|
Specialized Hardware for System Verification |
|
|
256 | (9) |
|
Accelerated Verification Overview |
|
|
258 | (1) |
|
|
259 | (1) |
|
Software Driven Verification |
|
|
260 | (1) |
|
Traditional In-Circuit Verification |
|
|
260 | (1) |
|
Design Guidelines for Emulation |
|
|
261 | (1) |
|
Testbenches for Emulation |
|
|
261 | (4) |
|
Data and Project Management |
|
|
265 | (6) |
|
|
265 | (4) |
|
|
265 | (2) |
|
|
267 | (1) |
|
|
267 | (1) |
|
|
267 | (1) |
|
|
268 | (1) |
|
|
269 | (2) |
|
|
269 | (1) |
|
|
269 | (1) |
|
|
270 | (1) |
|
Implementing Reuse-Based SoC Designs |
|
|
271 | (14) |
|
|
272 | (2) |
|
|
274 | (2) |
|
|
276 | (2) |
|
|
278 | (2) |
|
|
280 | (2) |
|
|
282 | (2) |
|
|
284 | (1) |
Bibliography |
|
285 | (2) |
Index |
|
287 | |