Preface |
|
xi | |
I Preliminaries |
|
1 | (80) |
|
Introduction to Design Methodologies |
|
|
3 | (8) |
|
|
3 | (2) |
|
|
5 | (2) |
|
|
7 | (1) |
|
Design Methods and Technologies |
|
|
8 | (1) |
|
|
9 | (2) |
|
A Quick Tour of VLSI Design Automation Tools |
|
|
11 | (10) |
|
Algorithmic and System Design |
|
|
11 | (2) |
|
Structural and Logic Design |
|
|
13 | (2) |
|
|
15 | (1) |
|
|
15 | (2) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
19 | (2) |
|
Algorithmic Graph Theory and Computational Complexity |
|
|
21 | (20) |
|
|
22 | (2) |
|
Data Structures for the Representation of Graphs |
|
|
24 | (2) |
|
|
26 | (3) |
|
Examples of Graph Algorithms |
|
|
29 | (10) |
|
|
30 | (2) |
|
|
32 | (2) |
|
Dijkstra's Shortest-path Algorithm |
|
|
34 | (3) |
|
Prim's Algorithm for Minimum Spanning Trees |
|
|
37 | (2) |
|
|
39 | (1) |
|
|
40 | (1) |
|
Tractable and Intractable Problems |
|
|
41 | (12) |
|
Combinatorial Optimization Problems |
|
|
41 | (2) |
|
|
43 | (2) |
|
|
45 | (1) |
|
NP-completeness and NP-hardness |
|
|
46 | (3) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
51 | (2) |
|
General-purpose Methods for Combinatorial Optimization |
|
|
53 | (28) |
|
The Unit-size Placement Problem |
|
|
54 | (1) |
|
Backtracking and Branch-and-bound |
|
|
55 | (7) |
|
|
56 | (3) |
|
|
59 | (3) |
|
|
62 | (3) |
|
Integer Linear Programming |
|
|
65 | (4) |
|
|
65 | (1) |
|
Integer Linear Programming |
|
|
65 | (4) |
|
|
69 | (2) |
|
|
71 | (2) |
|
|
73 | (2) |
|
|
75 | (3) |
|
A Few Final Remarks on General-purpose Methods |
|
|
78 | (1) |
|
|
79 | (2) |
II Selected Design Problems and Algorithms |
|
81 | (194) |
|
|
83 | (18) |
|
|
83 | (2) |
|
|
85 | (1) |
|
|
86 | (5) |
|
Applications of Compaction |
|
|
86 | (1) |
|
Informal Problem Formulation |
|
|
86 | (1) |
|
Graph-theoretical Formulation |
|
|
87 | (3) |
|
Maximum-distance Constraints |
|
|
90 | (1) |
|
Algorithms for Constraint-graph Compaction |
|
|
91 | (6) |
|
A Longest-path Algorithm for DAGs |
|
|
91 | (1) |
|
The Longest Path in Graphs with Cycles |
|
|
92 | (1) |
|
|
93 | (2) |
|
The Bellman-Ford Algorithm |
|
|
95 | (1) |
|
Discussion: Shortest Paths, Longest Paths and Time Complexity |
|
|
96 | (1) |
|
|
97 | (2) |
|
|
99 | (1) |
|
|
99 | (2) |
|
Placement and Partitioning |
|
|
101 | (18) |
|
|
102 | (3) |
|
|
105 | (1) |
|
Types of Placment Problem |
|
|
106 | (2) |
|
|
108 | (4) |
|
|
108 | (1) |
|
|
109 | (3) |
|
|
112 | (5) |
|
The Kernighan-Lin Partitioning Algorithm |
|
|
112 | (5) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
119 | (14) |
|
|
121 | (4) |
|
Terminology and Floorplan Representation |
|
|
121 | (3) |
|
Optimization Problems in Floorplanning |
|
|
124 | (1) |
|
Shape Functions and Floorplan Sizing |
|
|
125 | (5) |
|
|
130 | (1) |
|
|
131 | (2) |
|
|
133 | (34) |
|
Types of Local Routing Problems |
|
|
133 | (1) |
|
|
134 | (4) |
|
|
138 | (12) |
|
|
139 | (1) |
|
The Vertical Constraint Graph |
|
|
140 | (3) |
|
Horizontal Contraints and the Left-edge Algorithm |
|
|
143 | (3) |
|
Channel Routing Algorithms |
|
|
146 | (4) |
|
Introduction to Global Routing |
|
|
150 | (4) |
|
|
151 | (2) |
|
Building-block Layout and Channel Ordering |
|
|
153 | (1) |
|
Algorithms for Global Routing |
|
|
154 | (9) |
|
Problem Definition and Discussion |
|
|
155 | (2) |
|
Efficient Rectilinear Steiner-tree Construction |
|
|
157 | (6) |
|
Local Transformations for Global Routing |
|
|
163 | (1) |
|
|
163 | (3) |
|
|
166 | (1) |
|
|
167 | (28) |
|
General Remarks on VLSI Simulation |
|
|
167 | (2) |
|
Gate-level Modeling and Simulation |
|
|
169 | (11) |
|
|
170 | (1) |
|
|
171 | (1) |
|
|
171 | (1) |
|
|
172 | (1) |
|
Compiler-driven Simulation |
|
|
173 | (3) |
|
|
176 | (4) |
|
Switch-level Modeling and Simulation |
|
|
180 | (11) |
|
Connectivity and Signal Modeling |
|
|
181 | (2) |
|
|
183 | (8) |
|
|
191 | (1) |
|
|
192 | (3) |
|
Logic Synthesis and Verification |
|
|
195 | (40) |
|
Introduction to Combinational Logic Synthesis |
|
|
195 | (6) |
|
Basic Issues and Terminology |
|
|
195 | (4) |
|
|
199 | (2) |
|
|
201 | (21) |
|
|
201 | (5) |
|
ROBDD Implementation and Construction |
|
|
206 | (2) |
|
|
208 | (7) |
|
|
215 | (2) |
|
Applications to Verification |
|
|
217 | (2) |
|
Applications to Combinatorial Optimization |
|
|
219 | (3) |
|
Two-level Logic Synthesis |
|
|
222 | (8) |
|
Problem Definition and Analysis |
|
|
222 | (3) |
|
A Heuristic Based on ROBDDs |
|
|
225 | (5) |
|
|
230 | (2) |
|
|
232 | (3) |
|
|
235 | (40) |
|
Hardware Models for High-level Synthesis |
|
|
235 | (4) |
|
Hardware for Computations, Data Storage, and Interconnection |
|
|
236 | (2) |
|
Data, Control, and Clocks |
|
|
238 | (1) |
|
Internal representation of the Input Algorithm |
|
|
239 | (8) |
|
|
239 | (2) |
|
|
241 | (2) |
|
|
243 | (2) |
|
Data-flow Graph Representation |
|
|
245 | (2) |
|
Allocation, Assignment and Scheduling |
|
|
247 | (6) |
|
|
247 | (1) |
|
|
248 | (3) |
|
|
251 | (2) |
|
Some Scheduling Algorithms |
|
|
253 | (8) |
|
|
253 | (1) |
|
Mobility-based Scheduling |
|
|
254 | (2) |
|
Force-directed Scheduling |
|
|
256 | (3) |
|
|
259 | (2) |
|
Some Aspects of the Assignment Problem |
|
|
261 | (5) |
|
|
261 | (1) |
|
Graph Theoretical problem Formulation |
|
|
262 | (2) |
|
Assignment by Interval and Circular-arc Graph Coloring |
|
|
264 | (1) |
|
Assignment by Clique Partitioning |
|
|
265 | (1) |
|
High-level Transformations |
|
|
266 | (5) |
|
|
271 | (2) |
|
|
273 | (2) |
III Appendices |
|
275 | (22) |
|
Appendix A CMOS Technology |
|
|
277 | (10) |
|
A.1 The MOS Transistor and CMOS Logic Design |
|
|
278 | (4) |
|
A.2 Transistor Layout in CMOS and Related Issues |
|
|
282 | (3) |
|
|
285 | (2) |
|
Appendix B About and Pseudo-code Notation |
|
|
287 | (8) |
|
B.1 Data Structures and Declarations |
|
|
288 | (1) |
|
B.2 C-language Constructs |
|
|
289 | (3) |
|
B.3 Pseudo-code Constructs |
|
|
292 | (2) |
|
|
294 | (1) |
|
Appendix C List of Acronyms |
|
|
295 | (2) |
References |
|
297 | (18) |
Index |
|
315 | |