PULP: The Open-Source Parallel Ultra-Low-Power Processing Platform
The Parallel Ultra Low Power (PULP) Platform started as a joint effort started by ETH Zürich and University of Bologna in 2013 to explore new and efficient architectures for ultra-low-power processing. From the onset, it was clear to us to use an open-source approach for this project and we have released efficient implementations of RISC-V cores (both 32 and 64 bit), peripherals and complete systems from simple micro-controllers, to state-of-the art OPENPULP release which sets a new bar for low-power multicore processor for the IoT on our GitHub page.
Open hardware, the way it should be!
Sourcecode for PULP based systems are available on github, see https://github.com/pulp-platform under a permissible SolderPad open source license. This means it is free: no registration, no strings attached, you can use it, change it, adapt it, add it to your own chip, use it for classes, research, projects, products… We just ask you to acknowledge the source, and if possible, let us know what you like and what you don’t like.
… and there is even more to come… Stay tuned !!!!
Your PULP team
- RI5CY is our workhorse 4-stage core that implements, the RV32-IMC, has an optional 32-bit FPU supporting the F extension and instruction set extensions for DSP operations, including hardware loops, SIMD extensions, bit manipulation and post increment instructions.
- Zero-riscy is an area optimized 2-stage 32-bit core for control applications implementing RV32-IMC
- Micro-riscy is a minimal area 2-stage 32-bit core with 16 registers and no hardware multiplier implementing RV32-EC
- Ariane is a 6-stage, single issue, in-order 64-bit CPU which fully implements I, M and C extensions as specified in Volume I: User-Level ISA V 2.1 as well as the draft privilege extension 1.10. It implements three privilege levels M, S, U to fully support a Unix-like (Linux, BSD, etc.) operating system. It has configurable size, separate TLBs, a hardware PTW and branch-prediction (branch target buffer, branch history table and a return address stack). The primary design goal was on reducing critical path length to about 20 gate delays.
While the cores are all great, you can not build a system without the help of peripherals. We have developed customized accelerators, AXI compatible interconnect solutions, different DMA engines and various peripherals to communicate with the environment including GPIO, SPI, I2S, JTAG and many more.
The simplest PULP based systems are our micro-controllers that can be configured to use any 32-bit RISC-V cores we have developed (RI5CY, Zero-riscy, Micro-riscy) add memory and some peripherals. Advanced versions also allow Accelerators to be added to the system.
- PULPino: is our first love, our first open source release. It is a simple microcontroller structure that has attracted a lot of attention.
- PULPissimo: is an advanced version of our microcontroller. The main change is the presence of the logarithmic interconnect between the core and the memory subsystem allowing multiple access ports. These are then used by an integrated uDMA that is able to copy data directly between peripherals and memory, as well as optional accelerators that we call Hardware Processing Engines (HWPEs).
Our more advanced systems are based on clusters of 32-bit RISC-V cores with direct access to a small and fast scratchpad memory (Tightly Coupled Data Memory). The cluster is supported by an SoC that houses a larger second level memory, peripherals for input and output, and in later versions a complete PULPissimo class microcontroller for power management and basic operations. Most of our research is based on development of architectures based on these systems. Mia Wallace, Honey Bunny, Fulmine and finally Mr. Wolf are all such systems, and the source code for the latest system has been released as OPENPULP on our GitHub page.
PULP as a multi-cluster accelerator
We have also expanded our work for larger workloads, where a PULP system that contains multiple clusters is connected to a regular computing node. In this scenario, the PULP cluster is used as an energy-efficient accelerator for DSP loads. Our HERO platform release will be a development such a system.
Silicon Proven designs
We have a long tradition of taping out ASICs at, ETH Zürich, just check our Chip Gallery. We have designed and tested more than 20 PULP related designs in several technologies, while current NDAs we have signed does not allow us to share the design databases, all these designs are based on the source code of the PULP systems we have openly released.
- GF 22FDX: Poseidon
- STM 28FDSOI: PULP, PULPv2, PULPv3
- GF 28SLP: Honey Bunny
- TSMC40LP: Mr. Wolf
- UMC65LL: Imperio, Patronus, Mia Wallace, Fulmine, Artemis, Hecate, Selene, Diana, Phoebe
- SMIC130/110: VivoSoc, VivoSoC2, VivoSoC2.001, VivoSoC3
- UMC180: Or10n,Sir10us
- ALP180: Manny, Sid, Diego
And there is much more to come, watch this space...