Overview
Piccolo is described in the TestRIG paper as one of several RISC-V CPU implementations used in the TestRIG ecosystem. The paper groups RVBS, Ibex, Piccolo, Flute, and Toooba as implementations written in either SystemVerilog or Bluespec, and specifically characterizes Ibex and Piccolo as simple 32-bit implementations. The paper also gives Piccolo's repository as https://github.com/CTSRD-CHERI/Piccolo. [C1]
Role in TestRIG
TestRIG proposes a standardized verification ecosystem in which verification engines, models, and implementations can be interchangeable and improved independently. Implementations participating in this ecosystem are expected to expose an RVFI-DII interface, provide 8 MiB of memory at address 0x80000000, return access faults for other addresses, and support reset to a known state through a reset DII packet. [C2]
RVFI-DII integration
RVFI-DII combines RVFI trace output with Direct Instruction Injection input. The TestRIG paper states that DII is for instruction input, RVFI is for trace output, and RVFI-DII supports full interactive verification. Existing RISC-V cores that already implement RVFI can be augmented for TestRIG by implementing DII. [C3]
For Piccolo specifically, the paper notes that the simple single-issue design of Piccolo and Flute made it possible to replace the instruction cache entirely with a DII queue. That queue delivered one instruction per cycle, either compressed or uncompressed. This design choice is presented in contrast with the more complex superscalar Toooba integration, which required different handling around instruction picking and 16-bit fragments. [C4]
Technical significance
Within the provided evidence, Piccolo is significant mainly as a simple 32-bit RISC-V implementation that was amenable to RVFI-DII instrumentation. Its single-issue design simplified Direct Instruction Injection because the instruction cache could be replaced by a DII queue that supplied one instruction per cycle. [C1][C4]