Definition
Simulation-based testing is the traditional approach to verifying a hardware design by running many simulations. For microprocessors, this typically means writing a suite of test programs that exercise the processor's operations and check the results.[Traditional hardware verification]
Use in microprocessor verification
In microprocessor testing, the test suite must exercise many operations and validate the resulting behavior. For pipelined implementations, testing must also cover sequences of operations because multiple instructions are processed simultaneously and can interact in many ways.[Pipelined testing requirements]
Exceptional behavior is also an important part of the test burden. The evidence specifically identifies invalid instructions and out-of-bounds memory accesses as exceptional conditions that require special attention during testing.[Exceptional-condition testing]
Execution model
Traditional simulation-based testing is characterized as starting the system in a reset state and then running it for many cycles so that the execution can exhibit the system's range of possible states.[Traditional simulation execution model]
Limitations
A central difficulty of simulation-based testing is coverage. Microprocessor developers may find it challenging to design a comprehensive suite of tests that truly exercises the many corner cases of the design.[Corner-case coverage challenge]
Contrast with symbolic and formal approaches
The evidence contrasts traditional simulation-based testing with symbolic simulation in the Burch-Dill style. Burch-Dill symbolic simulation operates the machine over all possible states, but only for a short simulation sequence; traditional simulation instead starts from reset and runs for many cycles to expose possible states.[Traditional versus symbolic simulation]
The same source also contrasts simulation-based testing with formal verification. Formal verification tools aim to generate a mathematical proof, or something close to a proof, that a processor operates correctly for all possible programs, and more automated tools can rely on symbolic forms of simulation and reasoning to exhaustively analyze possible system behaviors.[Formal verification contrast]
Practical implication
Simulation-based testing is useful as a direct, execution-oriented verification method, but its effectiveness depends on the quality and completeness of the test suite. In complex microprocessors, especially pipelined ones, the number of operation sequences, simultaneous instruction interactions, exceptional cases, and corner cases makes comprehensive simulation testing difficult.[Pipelined testing requirements][Exceptional-condition testing][Corner-case coverage challenge]