Overview
Constraint satisfaction for random test program generation is a verification-oriented technique in which the construction of random test programs is formulated and solved as a constraint satisfaction problem. Rather than producing test programs by unrestricted randomness, the approach imposes formal constraints that capture architectural and semantic requirements of the design under test, and then uses constraint solvers to produce programs that satisfy those constraints while still exhibiting randomized characteristics.
Origin and Citation
The technique is introduced and named in the paper:
- Bin E., Emek R., Shurek G., et al. Using a constraint satisfaction formulation and solution techniques for random test program generation. IBM Systems Journal, 2002, 41(3): 386–402. DOI: 10.1147/sj.413.0386.
The work is referenced (as reference [17]) in later test-program-generation literature, including work on RISC-V test sequence generation, where it serves as a baseline technique for generating instruction sequences that respect processor semantics.
Related References
- Reference [18] in the same citing literature: Herdt V., Große D., Le H. M., et al. Verifying instruction set simulators using coverage-guided fuzzing. DATE 2019, 360–365 — represents an alternative, fuzzing-based approach to instruction-set verification that is often compared with constraint-based random generation.
- Reference [19]: Xi Y., Zhang Z., Wang Y., et al. A heterogeneous RISC-V SoC for confidential computing and password recovery. ICICM 2022, 500–504 — an unrelated application paper that nevertheless appears in the same bibliography.
Applications
The technique is associated with processor and instruction-set verification, where generating valid yet randomized instruction sequences is critical for exercising corner cases of the microarchitecture while avoiding trivially invalid programs that waste simulation cycles.