Overview
Microprocessor design verification is the discipline of confirming that a processor implementation conforms to its intended functional specification prior to tape-out and manufacture. Its importance is widely acknowledged in the hardware design community, because defects that escape pre-silicon verification can be extremely costly to remediate after a chip has been produced in volume and shipped to customers [1].
Historical methodology gap
As of the late 1990s, despite broad recognition of its importance, no rigorous methodology was commonly followed for microprocessor design verification [1]. Verification efforts were often ad hoc, and the complexity of modern instruction-set architectures made exhaustive testing infeasible. The resulting gaps in coverage were highlighted by high-profile escape bugs, most notably the two infamous Pentium Floating Point bugs, which served as cautionary examples of the consequences of insufficient verification rigor [1].
Plan-driven verification methodology
A methodology that has been proposed to address this gap is built around a verification plan — a structured artifact that induces "smart sets" of tests which systematically carry out the verification tasks [1]. Rather than relying on unconstrained stimulus, the plan directs the generation of tests toward corners of the design that are most likely to harbor defects, while still leveraging randomness to cover a broad state space.
Automated test-program generation with Genesys
This plan-driven approach is operationalized through automated pseudo-random test-program generation. The Genesys test-program generator, developed at IBM Research, is an example of such a tool: it consumes a verification plan and automatically produces test programs that exercise the design in a targeted yet randomized fashion [1]. Genesys thus serves as the execution engine for the verification plan, scaling the methodology to the size and complexity of real industrial microprocessor designs.
Application to the x86 microprocessor family
The methodology has been applied to verify designs in the x86 microprocessor family [1]. In the reported IBM Research work, Genesys was used to drive verification of an x86 design, and the authors analyzed how the plan-driven methodology would have changed the coverage characteristics of the test campaign. In particular, the paper argued that the approach could have helped to detect or avoid known escape bugs such as the Pentium Floating Point defects [1].
Two-phase evolution of variable-length tests
An alternative, evolutionary approach to microprocessor design verification was introduced by Smith, Bartley, and Fogarty in 1997 under the title "Microprocessor design verification by two-phase evolution of variable length tests" [2]. This paper applies the technique of two-phase evolution of variable length tests to the verification problem: an outer search loop evolves test programs whose length is itself a variable under evolution, while an inner phase evolves the contents of each candidate program. The technique falls within the broader family of evolutionary test program generation methods that have subsequently been explored for processor verification, including later work by Corno, Cumani, Reorda, and Squillero on evolutionary test program induction [3].
Significance
The work demonstrated that microprocessor design verification can be elevated from an ad hoc activity to a rigorous, repeatable engineering discipline by combining three elements: (1) an explicit verification plan, (2) pseudo-random stimulus generation guided by that plan, and (3) application of the resulting methodology to real, commercially significant processor families such as x86 [1]. Concurrently and subsequently, evolutionary techniques — beginning with two-phase evolution of variable-length tests and continuing through broader evolutionary test program generation — have offered an alternative paradigm for automating stimulus synthesis when explicit verification plans are not available [2][3].
See also
- Genesys — automatic pseudo-random test-program generator used to operationalize the verification plan methodology.
- Two-phase evolution of variable length tests — evolutionary technique applied to microprocessor design verification by Smith, Bartley, and Fogarty.
- Evolutionary test program generation — broader family of evolutionary approaches to synthesizing test programs for processor verification.