Track 2 - Customizing RISC-V Based Microcontrollers
Hands on tutorials to demonstrate how to add your own extensions to an existing 32bit RISC-V microcontroller system, running on an FPGA.
You will learn:
- An introduction to microcontroller architectures (RISC-V, Peripherals, Memories)
- Open source microcontroller architectures available through the PULP eco-system
- FPGA design flow for FPGAs, mapping the RTL code to FPGA
- Getting your code run on the system, cross compiling, RTL simulation, emulation
- Alternatives to expand the capabilities, accelerators, instruction set extensions
- Cost benefit analysis of extensions
Course will be in English with support from UNIBO, ETH Zurich
Nine 2-hour modules with > 50% hands on exercises in computer laboratory.
Limited to 25 participants
Prerequisites: General knowledge on RTL design, basics of computer architectures/programming
Preliminary Agenda:
This Track aims at bringing you up to speed with the development of your own modified flavor of RISC-V based technology – specifically, based on PULPissimo. We focus in particular on the design of extended computation units both inside the core (ISA extensions) and outside it (cooperative or loosely-coupled accelerators), and on delivering all the tools necessary for a productive research environment using PULPissimo as a starting point.
- PULP platform & PULPissimo microcontroller architecture (4h Mon)
- Lecture: Introduction to the PULPissimo microcontroller architecture
- Hands-on:
- Introduction to the PULPissimo simulation environment
- Plugging an APB timer into the PULPissimo MCU
- Introduction to the software environment and development of a FIR filter
- Room: ETZ E8 (morning), ETZ D96.1 (afternoon)
- Extending RISC-V cores and the RISC-V LLVM compiler (6h Tue)
- Lecture: In-depth RISC-V ISA, microarchitecture of CV32E40X, and CV-XIF specification
- Hands-on: Extending the RISC-V ISA with new instructions for FIR Filter acceleration
- Lecture: LLVM RISC-V compiler and its extension
- Hands-on: Extending LLVM for our FIR instructions, and testing them on the SW FIR filter
- Room: ETZ D96.1 (all sessions)
- Integrating cooperative HW Processing Engines / HWPEs (4h Wed-Thu)
- Lecture: Why should an ISA extension not be enough? PULP cooperative HWPEs and loosely-coupled accelerators
- Hands-on:
- Guided design of a FIR filter HWPE
- Integration of the FIR HWPE in the PULPissimo architecture
- Evaluating acceleration in the PULPissimo environment
- Room: ETZ D96.1 (all sessions)
- Testing extended PULPissimo on FPGA (4h Thu)
- Lecture: PULPissimo FPGA emulation flow and methodology
- Hands-on: Deployment flow on FPGA: synthesis + place & route + bitstream generation
- Hands-on: Testing the design on FPGA with OpenOCD
- Room: ETZ D96.1 (all sessions)
Track organized by:
Francesco Conti (University of Bologna) (coordinator)
Giuseppe Tagliavini (University of Bologna)
Alessandro Nadalini (University of Bologna)
Michael Rogenmoser (ETH Zürich)
Arpan Prasad (ETH Zürich)