ELECH505 Project
ELECH505 Project
1 Context
You will design and test an accelerator using Chisel. Below we provide a few
ideas for such accelerators but we leave you with the option to propose your own
ideas. If you wish to develop an alternative idea, please send us an email with a
concrete outline of the proposed accelerator. As Chipyard already implements
a few accelerators, you can look at them to have an idea of how they implement
it. The project can be done individually or in teams of two students, depending
on the project (see section 4.)
The goal of this project is to first design an accelerator and evaluate its per-
formance. Then, you will be able to connect it to a RISC-V CPU using the
peripherals (or as a co-processor). Based on this design, you will test the cor-
rect functioning of the accelerator coupled to the CPU.
2 Requirements
• Design of a Chisel accelerator
• Simulation of the accelerator using testbenches & waveforms
• MMIO or RoCC (co-processor) connection to the processor (can be Rocket
or BOOM)
• Simulation of the complete system (processor, accelerator, peripherals,
. . . ) using different kind of tests.
• Using waveform and schematics, explain how the processor and the accel-
erator communicate.
• Compare the performance of the accelerator vs software implementation
(with a single core). Discuss the potential impact on the PPA (you don’t
need to implement it, just be critical about the design.)
1
• Always consider security implications e.g, scenarios where distrusting ap-
plications would share the accelerator without revealing confidential or
meta data to each other.
• Optional: Physical implementation of your design using OpenRoad
3.3 Defense
The project defense will be held as an oral exam during the exams period, after
02/06.2025. In a presentation of about 10 minutes, you are expected to explain
each step of the project, specifically the functioning and implementation of your
accelerator, and how you could improve it. In the questioning part of the exam,
we will discuss your design and link your work to concepts developed across the
lectures and exercises of the course. You may prepare a few slides or bring your
project report to the exam.
4 Project Ideas
4.1 Neural Network Accelerator
This project idea aims at developing processor support to accelerate the oper-
ations required for neural network computations. As this kind of application is
highly data driven, computations within a general purpose processor are slow
and power consuming. To reach fast computation (for self driving car, virtual
2
reality, . . . ), accelerators such as systolic arrays are commonly used.
For this project, you will design an accelerator depending on the specific kind of
neural network you want to accelerate. We recommend you to focus on Convolu-
tional Neural Network (CNN) using systolic arrays. Some references of systolic
arrays can be found on the UV page. You can choose to focus on training or
inference or both.
Some References
• C source code for different types of neural network with a dataset. For
CNN acceleration, you can look at cnn.c and mnist.c. In this repository,
you also have some source codes you can use for testing.
• Systolic Array Based Convolutional Neural Network Inference on FPGA
• A High-Performance Systolic Array Accelerator Dedicated for CNN
We recommend a team of 2 students for this project. Security aspect
must be discussed but no implementations are required.
Some References
• The Advanced Encryption Standard (AES) Cipher Algorithm
• Cryptographic Algorithm Validation Program
3
4.3 Image or Signal Processing
Currently, a lot of accelerators focuses on signal or image processing. For this
project, we expect you to build one type of accelerator to do at least 2 of the
following features: