| |
| |
Acknowledgments | |
| |
| |
| |
Introduction | |
| |
| |
| |
Synchronous design basics | |
| |
| |
| |
Challenges in synchronous design | |
| |
| |
| |
Asynchronous design basics | |
| |
| |
| |
Asynchronous design flows | |
| |
| |
| |
Potential advantages of asynchronous design | |
| |
| |
| |
Challenges in asynchronous design | |
| |
| |
| |
Organization of the book | |
| |
| |
| |
Channel-based asynchronous design | |
| |
| |
| |
Asynchronous channels | |
| |
| |
| |
Sequencing and concurrency | |
| |
| |
| |
Asynchronous memories and holding state | |
| |
| |
| |
Arbiters | |
| |
| |
| |
Design examples | |
| |
| |
| |
Exercises | |
| |
| |
| |
Modeling channel-based designs | |
| |
| |
| |
Communicating sequential processes | |
| |
| |
| |
Using asynchronous-specific languages | |
| |
| |
| |
Using software programming languages | |
| |
| |
| |
Using existing hardware design languages | |
| |
| |
| |
Modeling channel communication in Verilog | |
| |
| |
| |
Implementing VerilogCSP macros | |
| |
| |
| |
Debugging in VerilogCSP | |
| |
| |
| |
Summary of VerilogCSP macros | |
| |
| |
| |
Exercises | |
| |
| |
| |
Pipeline performance | |
| |
| |
| |
Block metrics | |
| |
| |
| |
Linear pipelines | |
| |
| |
| |
Pipeline loops | |
| |
| |
| |
Forks and joins | |
| |
| |
| |
More complex pipelines | |
| |
| |
| |
Exercises | |
| |
| |
| |
Performance analysis and optimization | |
| |
| |
| |
Petri nets | |
| |
| |
| |
Modeling pipelines using channel nets | |
| |
| |
| |
Performance analysis | |
| |
| |
| |
Performance optimization | |
| |
| |
| |
Advanced topic: stochastic performance analysis | |
| |
| |
| |
Exercises | |
| |
| |
| |
Deadlock | |
| |
| |
| |
Deadlock caused by incorrect circuit design | |
| |
| |
| |
Deadlock caused by architectural token mismatch | |
| |
| |
| |
Deadlock caused by arbitration | |
| |
| |
| |
A taxonomy of design styles | |
| |
| |
| |
Delay models | |
| |
| |
| |
Timing constraints | |
| |
| |
| |
Input-output mode versus fundamental mode | |
| |
| |
| |
Logic styles | |
| |
| |
| |
Datapath design | |
| |
| |
| |
Design flows: an overview of approaches | |
| |
| |
| |
Exercises | |
| |
| |
| |
Synthesis-based controller design | |
| |
| |
| |
Fundamental-mode Huffman circuits | |
| |
| |
| |
STG-based design | |
| |
| |
| |
Exercises | |
| |
| |
| |
Micropipeline design | |
| |
| |
| |
Two-phase micropipelines | |
| |
| |
| |
Four-phase micropipelines | |
| |
| |
| |
True-four-phase pipelines | |
| |
| |
| |
Delay line design | |
| |
| |
| |
Other micropipeline techniques | |
| |
| |
| |
Exercises | |
| |
| |
| |
Syntax-directed translation | |
| |
| |
| |
Tangram | |
| |
| |
| |
Handshake components | |
| |
| |
| |
Translation algorithm | |
| |
| |
| |
Control component implementation | |
| |
| |
| |
Datapath component implementations | |
| |
| |
| |
Peephole optimizations | |
| |
| |
| |
Self-initialization | |
| |
| |
| |
Testability | |
| |
| |
| |
Design examples | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
| |
Quasi-delay-insensitive pipeline templates | |
| |
| |
| |
Weak-conditioned half buffer | |
| |
| |
| |
Precharged half buffer | |
| |
| |
| |
Precharged full buffer | |
| |
| |
| |
Why input-completion sensing? | |
| |
| |
| |
Reduced-stack precharged half buffer (RSPCHB) | |
| |
| |
| |
Reduced-stack precharged full buffer (RSPCFB) | |
| |
| |
| |
Quantitative comparisons | |
| |
| |
| |
Token insertion | |
| |
| |
| |
Arbiter | |
| |
| |
| |
Exercises | |
| |
| |
| |
Timed pipeline templates | |
| |
| |
| |
Williams' PS0 pipeline | |
| |
| |
| |
Lookahead pipelines overview | |
| |
| |
| |
Dual-rail lookahead pipelines | |
| |
| |
| |
Single-rail lookahead pipelines | |
| |
| |
| |
High-capacity pipelines (single-rail) | |
| |
| |
| |
Designing non-linear pipeline structures | |
| |
| |
| |
Lookahead pipelines (single-rail) | |
| |
| |
| |
Lookahead pipelines (dual-rail) | |
| |
| |
| |
High-capacity pipelines (single-rail) | |
| |
| |
| |
Conditionals | |
| |
| |
| |
Loops | |
| |
| |
| |
Simulation results | |
| |
| |
| |
Summary | |
| |
| |
| |
Single-track pipeline templates | |
| |
| |
| |
Introduction | |
| |
| |
| |
GasP bundled data | |
| |
| |
| |
Pulsed logic | |
| |
| |
| |
Single-track full-buffer template | |
| |
| |
| |
STFB pipeline stages | |
| |
| |
| |
STFB standard-cell implementation | |
| |
| |
| |
Back-end design flow and library development | |
| |
| |
| |
The evaluation and demonstration chip | |
| |
| |
| |
Conclusions and open questions | |
| |
| |
| |
Exercises | |
| |
| |
| |
Asynchronous crossbar | |
| |
| |
| |
Fulcrum's Nexus asynchronous crossbar | |
| |
| |
| |
Clock domain converter | |
| |
| |
| |
Design example: the Fano algorithm | |
| |
| |
| |
The Fano algorithm | |
| |
| |
| |
The asynchronous Fano algorithm | |
| |
| |
| |
An asynchronous semi-custom physical design flow | |
| |
| |
Index | |