: Torben Amtoft, Selly Browning, Jared Davis, Anthony C. J. Fox, David A. Greve, Michael J. C. Gordon
: David S. Hardin
: Design and Verification of Microprocessor Systems for High-Assurance Applications
: Springer-Verlag
: 9781441915399
: 1
: CHF 96.70
:
: Elektronik, Elektrotechnik, Nachrichtentechnik
: English
: 436
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF

Microprocesso s increasingly control and monitor our most critical systems, including automobiles, airliners, medical systems, transportation grids, and defense systems. The relentless march of semiconductor process technology has given engineers exponentially increasing transistor budgets at constant recurring cost. This has encouraged increased functional integration onto a single die, as well as increased architectural sophistication of the functional units themselves. Additionally, design cycle times are decreasing, thus putting increased schedule pressure on engineers. Not surprisingly, this environment has led to a number of uncaught design flaws. Traditional simulation-based design verification has not kept up with the scale or pace of modern microprocessor system design. Formal verification methods offer the promise of improved bug-finding capability, as well as the ability to establish functional correctness of a detailed design relative to a high-level specification. However, widespread use of formal methods has had to await breakthroughs in automated reasoning, integration with engineering design languages and processes, scalability, and usability.

This book presents several breakthrough design and verification techniques that allow these powerful formal methods to be employed in the real world of high-assurance microprocessor system design.

Preface6
Contents9
ACL2 and Its Applications to Digital System Verification13
1 Introduction13
2 Some Basic Decisions13
3 ACL215
3.1 A Programming Language16
3.2 A Logical Theory18
3.3 A Mechanical Theorem Prover and Proof Environment20
3.4 Efficiency22
4 A Simple Microprocessor Model23
5 Variations on the Theme29
6 Summary30
References31
A Mechanically Verified Commercial SRT Divider34
1 Introduction34
2 SRT Division37
3 Quotient Digit Selection42
4 Implementation47
4.1 Analysis of Operands48
4.2 Iteration52
4.3 Final Computation58
References64
Use of Formal Verification at Centaur Technology75
1 Introduction75
1.1 Overview of Verification Methodology75
1.2 Timeline76
1.3 Centaur Media Unit78
2 Modeling Effort79
2.1 Conversion to the EMOD Language80
2.1.1 Unparameterization81
2.1.2 Declaring Implicit and Port Wires81
2.1.3 Standardizing Argument Lists81
2.1.4 Resolving Ranges81
2.1.5 Operator Rewriting82
2.1.6 Sign and Width Computation82
2.1.7 Expression Splitting82
2.1.8 Making Truncation Explicit82
2.1.9 Eliminating Assignments83
2.1.10 Eliminating Instance Arrays83
2.1.11 Eliminating Higher-Arity Gates83
2.2 Modeling Flow84
3 Verification Method84
3.1 Case-Splitting and Parametrization86
3.2 Symbolic Simulation of the Hardware Model86
3.3 Symbolic Simulation of Specification87
3.4 Comparison of Specification to Hardware Model88
4 Mechanisms Used to Achieve the Verification89
4.1 EMOD Symbolic Simulator89
4.2 BDDs and AIGs90
4.3 Parametrization90
4.4 AIG-to-BDD Translation91
4.5 GL Symbolic Execution Framework92
5 Verification Results and Observations95
6 Related Work96
7 Conclusion97
References97
Designing Tunable, Verifiable Cryptographic Hardware Using Cryptol99
1 Introduction99
1.1 Outline100
2 Cryptol Overview100
2.1 Language Features100
2.1.1 Function Values and Anonymous Functions100
2.1.2 Types and Polymorphism101
2.1.3 Type Aliases and Records103
2.1.4 Enumerations104
2.1.5 Index Operators104
2.1.6 Sequence Operations and Transformations105
2.2 Cryptol Interpreter106
2.3 Cryptol Interpreter Modes for Hardware Design107
2.4 Equivalence Checking108
3 Cryptol for Hardware Design109
3.1 Issues and Limitations109
3.1.1 Supported Subset109
3.1.2 Inefficient Sequence Comprehensions110
3.2 Combinatorial and Sequential Circuits in Cryptol111
3.3 Delays and Undelays113
3.4 Space–Time Tradeoffs via par and seq Pragmas114
3.4.1 Example 1: Parallel Sequence Comprehension115
3.4.2 Example 2: Sequential Sequence Comprehension117
3.5 Pipelining118
3.5.1 Example 1: Combinatorial Circuit119
3.5.2 Pipelining via the reg Pragma122
4 AES Specification123
4.1 API123
4.2 Types124
4.3 Conversions Between Types126
4.4 Constructors for the Duo Type126
4.5 Mathematical Preliminaries126
4.5.1 Addition126
4.6 Multiplication127
4.6.1 Multiplication by x127
4.7 Polynomials with Coefficients in GF(28)127
4.8 Algorithm Specification128
4.9 Cipher128
4.9.1 SubBytes() Transformation129
4.9.2 ShiftRows() Transformation130
4.9.3 MixColumns() Transformation130
4.9.4 AddRoundKey() Transformation131
4.10 Key Expansion131
4.11 Inverse Cipher132
4.11.1 InvShiftRows() Transformation132
4.11.2 InvSubBytes() Transformation132
4.11.3 InvMixColumns() Transformation133
4.11.4 Equivalent Inverse Cipher133
4.12 Auxiliary Definitions134
4.13 Key Expansion Example: 12