SERV - The SErial RISC-V CPU
A new release of the award-winning SERV, the world's smallest RISC-V CPU is here. Biggest change this time is support for the new RISCOF compliance framework that replaces the old riscv-arch-tests, but there are also a couple of fixes, improved documentation and support for the ICE-V Wireless FPGA board.
The 1.2.0 version of the award-winning SERV, the world's smallest RISC-V CPU focuses on features rather than size reduction as has previously been the case. Most notably, two major ISA extensions are now supported but there are also a number of other new features as can be seen below.
The SERV reference SoC, Servant, has gained support for the following new FPGA boards:
With this, the total number of officially supported boards is 26
As part of Google Summer of Code 2021, Zeeshan Rafique implemented support for the M ISA extension. This was done through an extension interface that allows the MDU (multiplication and division unit) to reside outside of the core and potentially be shared by several SERV cores in the same SoC or integrated into other RISC-V cores for maximum reusability. Zeeshan's report about the project to add the M extension can be read here
As part of the Linux Foundation Mentorship program Spring 2022, Abdul Wadood has implemented support for the C ISA extension. The C extension has been the most requested feature of SERV. Since SERV is so small, the memory typically dominates the area and the C extension has the potential to allow for smaller memories and by extension a smaller system. Abdul's report about the project to add the C extension can be read here
Support for the Virtual Development Board protocol has been added, making it possible to interact with a simulation of an FPGA board running a SERV SoC, just as it would be a real board. This allows anyone to build software for SERV and try it in simulation without access to a real board.
Thanks to the FOSSi OpenLANE toolchain, SERV can be implemented as an ASIC with the SkyWater 130nm library. It has also been fabbed as part of the Subservient SoC but at the time of this release the chips have not yet returned from the fab. Thanks to the combination of a FuseSoC, a FOSSi ASIC toolchain and publicly available CI resources however, a GDS file of SERV is now created on every commit to the repository, making the ASIC process about as agile as it can get.
Documentation continue to improve with more gate-level schematics, written documentation, source code comments and timing diagrams towards the goal of becoming the best documented RISC-V CPU.
Version 2.7.4 of the RISC-V compliance test suite is now supported over the older 1.0 release. A Github CI action has also been created to test the compliance test suites with all valid combinations of ISA extensions for improved test coverage.
Many of the new features of SERV 1.1.0 are described in the latest SERV video SERV : RISC-V for a fistful of gates but below here you will find a complete list of major changes from SERV 1.0
A new helper component called the Serving SoClet has been created to make it easy to integrate SERV into FPGA designs. Serving consisting of SERV+register file+data/instruction memory and exposes a wishbone bus for connecting peripherals.
The SERV reference SoC, Servant, has gained support for the following new FPGA boards:
With this, the total number of officially supported boards is 21
Supports Zephyr 2.4. With this, instructions have been vastly simplified and all SERV-specific support code is contained separately within the SERV repository.
Almost all internal modules have been documented with a functional description and gate-accurate block diagrams. Important internal and external sequences have also been documented with timing diagrams. Source code is also heavily commented.