Configuration register randomization is used in the self-testing framework's architecture-specific extensions for vector instruction generation. In this context, the vector co-processor exposes several special configuration registers whose settings affect instruction behavior, and the framework emits random register configurations for each executed test sequence.[1][2]
Configurations covered
The evidence describes three configuration areas that are randomized:[1]
- Result shift for multiply vector instructions
- Reset data source for multiply-and-accumulate vector instructions, such as an immediate value, constant zero, or a register file address
- Reset condition for the accumulation register while long vertical vectors are processed sequentially, such as resetting once or when the x-, y-, or z-iterator increments
Testing purpose
The stated purpose of this randomization is to improve coverage of both:
- configuration register states, and
- the correct functionality of configured execution modes.[2]
The execution modes explicitly called out in the evidence are:
- multiplication shift amounts,
- multiply-accumulate reset modes, and
- multiply-accumulate reset value configurations.[2]
Reference-model support
Because these randomized register settings affect execution semantics, the framework also extends the RISC-V twin used for reference calculation with corresponding code snippets so the expected results reflect the selected configurations.[3]
Relationship to vector instruction generation
The evidence places configuration register randomization inside an architecture-specific extension for vector instruction generation, indicating that it is one of the mechanisms used when generating randomized test sequences for the vector co-processor.[4]
References
- [1] Special vector co-processor configuration registers and what they control
- [2] Per-test-sequence random configuration emission for coverage
- [3] RISC-V twin/reference-calculation support for configuration features
- [4] Placement within architecture-specific vector instruction generation