Overview
Robert N. M. Watson is identified in the provided evidence as one of the authors of the paper "Randomized Testing of RISC-V CPUs using Direct Instruction Injection", published in IEEE Design & Test in 2023. [C1]
Associated technical work
The associated paper presents TestRIG — short for Testing with Random Instruction Generation — as a testing framework for RISC-V implementations. The framework is positioned as a pragmatic way to compare an implementation with the RISC-V Sail model by generating random instruction sequences, executing the same sequences on both the model and implementation under test, and comparing execution traces in tandem execution. [C2]
The paper explains that the RISC-V community has standardized a formal model of the architecture in the Sail language, which is described as a human-readable specification that can also be used for simulation and verification. It further notes that full-processor proof automation is not yet routine, motivating TestRIG as a practical equivalence-checking approach that can demonstrate divergence even though it does not prove equivalence. [C3]
Direct Instruction Injection and observation interface
A central technique described in the paper is Direct Instruction Injection (DII). In ordinary execution, a CPU fetches the next instruction from program memory at an address determined by the program counter; with DII, the next instruction is supplied by the test harness regardless of the CPU program counter. [C4]
The paper also states that TestRIG uses the RISC-V Formal Interface (RVFI) standard to observe the change in implementation state after each instruction. [C5]
Testing scope and reported results
The paper clarifies that the work tests executable formal models, software ISA simulators, and simulated execution of hardware designs, rather than completed fabricated chips. [C6]
The authors report using TestRIG to test many standard RISC-V extensions as well as the experimental CHERI security extension. They further report that TestRIG was easier to use than unit tests, provided more thorough test coverage through random generation, detected issues not only in instruction semantics but also in pipelines and data caches, and replaced their instruction-set-level unit testing for development. [C7]