Pseudorandom Generator (PRG) Stimulus Generation
Pseudorandom Generator (PRG) stimulus generation is a technique used in simulation-based processor verification in which pseudorandom generators create input stimuli for a processor design, those stimuli are applied to processor inputs, and functional coverage is monitored to assess verification completeness.[1][2]
Overview
In processor verification, PRG stimulus generation is part of a coverage-driven simulation workflow. The general process is:
- Generate test stimuli using pseudorandom generators.
- Apply the generated stimuli to the processor under verification.
- Monitor achieved functional coverage.
- Use coverage results to determine how complete the verification effort is.[1][2]
This approach reflects a common trend in simulation-based processor verification, where automatically generated randomized stimuli are used to explore the design’s functional behavior.[1]
Stimulus Forms
PRG-generated stimuli can take multiple forms. The cited processor-verification work identifies two examples:
- Bit-vector stimuli applied directly to the processor’s input ports.
- Program-based stimuli loaded directly into the processor’s program memory.[1][2]
These forms allow PRG stimulus generation to target different abstraction levels of processor behavior: direct interface-level excitation through input vectors, or instruction/program-level behavior through generated programs.
Coverage-Driven Verification Role
The primary purpose of PRG stimulus generation is to help evaluate and improve verification completeness. After generated stimuli are simulated on the design under verification, the resulting coverage is measured to determine how much of the processor functionality has been exercised.[1][2]
Coverage therefore acts as feedback on the effectiveness of generated tests. In the referenced work, this feedback is also used as an input to a recurrent neural network that dynamically alters PRG constraints.[1][2]
Constraint Adaptation
A PRG may be governed by constraints that influence the kinds of stimuli it produces. Fajčík, Zachariasova, and Smrž proposed dynamically altering PRG constraints using a recurrent neural network. The neural network receives coverage feedback from simulations of the design under verification and adjusts the PRG constraints accordingly.[1][2]
The stated goal of this adaptive method is to improve the efficiency of coverage closure. Experimental results reported in the source indicate that coverage closure was achieved sooner, and that the method could isolate a small set of high-coverage stimuli suitable for regression testing.[1][2]
Use in Regression Testing
An important outcome of PRG-based verification is the identification of useful stimuli for later reuse. The cited work reports that, beyond accelerating coverage closure, the approach could identify a small set of high-coverage stimuli that can be used in regression tests.[1][2]
Such a reduced stimulus set is valuable because regression testing often benefits from compact test suites that still exercise significant functionality.
Applicability
The demonstration in the cited research used processors provided by Codasip, selected because their coverage state spaces were reasonably large and differed across processor types.[1][2] The authors state that the techniques are nevertheless widely applicable.[1]
See Also
- Simulation-based processor verification
- Coverage-driven verification
- Functional coverage
- Constrained-random verification
- Regression testing
- Recurrent neural networks in verification
References
[1]: Evidence item b481fd7c-c07b-4df8-a860-a1483f971867, arXiv metadata for Automation of Processor Verification Using Recurrent Neural Networks, including abstract statement that simulation-based processor verification commonly generates stimuli using PRGs, applies them to processor inputs, and monitors coverage.
[2]: Evidence item 994827fa-090a-491a-ad92-b89fa9ddbf00, arXiv abstract for Automation of Processor Verification Using Recurrent Neural Networks, arXiv:1803.09810, DOI: 10.48550/arXiv.1803.09810.