Overview
Random Sequence Generation is a technique for creating verification stimulus by randomly assembling sequences under a structured set of rules and scenarios. In the microprocessor-verification context described by the evidence, SystemVerilog language features such as the SystemVerilog random sequence generator can be used to create random instruction sequences and improve stimulus quality relative to manually authored directed tests. [Random sequence generation definition and purpose]
Use in processor verification
Microprocessor verification presents a large stimulus space because designs may include complex instruction sets, multiple pipeline stages, in-order or out-of-order execution, instruction parallelism, scalar and vector operations, and many corner cases. The cited source argues that the effort required to create traditional directed tests for this space can become unreasonable. [Processor verification challenge]
A random-sequence approach can be used to build program traces from one or more instruction scenarios. Example scenarios include boot code with an exception handler, configuration-register programming, and instruction groups containing load/store, arithmetic, and branch operations. Exception conditions may also be introduced randomly inside such scenarios. [Scenario-based program traces]
Limitations
Random Sequence Generation is not the same as fully constrained, object-oriented randomization. The cited source describes SystemVerilog random-sequence generation schemes as procedural and states that they do not take full advantage of object-based randomization using constraints. [Procedural limitation]
The same source also cautions that simple random stimulus is not sufficient to fully verify a processor. Pure random instructions rarely create useful stimulus for important design functionality such as branches, jumps, and exceptions. To be effective, the stimulus-generation infrastructure needs intelligence about the processor instruction-set architecture and processor state. [Pure random limitation]
Relationship to constraint-based randomization
Random Sequence Generation can be compared with Constraint-Based Randomization. The evidence distinguishes procedural random-sequence generation from object-based randomization using constraints, and presents constrained-random verification as a way to create more useful stimulus when supported by adequate modeling of processor architecture, state, exception causes, and occurrence probabilities. [Comparison with constraint-based randomization]