NeuroSoC combined a phase-change-memory analog in-memory computing unit with RISC-V cores in a 28 nm FD-SOI system-on-chip. Fourteen partners took part, including IBM, STMicroelectronics, Bosch, Thales, and ETH Zurich. At Leiden I worked on the security assessment, in a work package shared with IBM and the STMicroelectronics teams in France and Italy: measuring what the analog tiles and their ADCs leak through power, recovering model weights from that leakage, and turning the findings into guidance for protecting models on the chip.
Thermal management and task scheduling for multicore systems
Connected gem5 performance simulation, McPAT power modelling, and HotSpot thermal simulation into one workflow to study how scheduling decisions move heat around a multicore chip and what that costs in performance and power.
Python
gem5
McPAT
HotSpot
0x0206Dec 2020 – Dec 2020
Reinforcement-learning DVFS manager for multicore platforms
Designed a learning-based controller that picks voltage and frequency levels per core to trade performance, power, and temperature, and evaluated it on a simulated multicore platform built from Sniper, McPAT, and HotSpot.
Python
Reinforcement learning
Sniper
McPAT
HotSpot
Engineering
Prototypes built to understand a system end to end.
0x0203Feb 2020 – Feb 2020
Distributed Keras inference over gRPC
Split Keras model inference across several Python processes and used gRPC to coordinate prediction requests between them, as a study of distributed inference plumbing.
Python
Keras
gRPC
Distributed systems
Course and lab work
Smaller implementations from the bachelor’s and master’s programmes.
0x0208May 2021 – May 2021
Complex-number ALU on FPGA
Designed and verified a VHDL arithmetic logic unit for complex-number operations through a full FPGA development flow.
VHDL
Xilinx ISE
0x0207Jan 2021 – Jan 2021
Neural-network inference on FPGA
Explored an RTL implementation of neural-network inference in Verilog for resource-constrained edge hardware, with Python tooling for model preparation.
Verilog
Vivado
Python
0x0205Nov 2020 – Nov 2020
Distributed VSOP87 planetary positions with MPI
Parallelised the VSOP87 planetary-position calculation across MPI workers to explore distributed numerical computing in C.
C
MPI
0x0204Apr 2020 – Apr 2020
FPGA CNN for ECG classification
Implemented a convolutional-neural-network inference pipeline for ECG classification, combining TensorFlow model work with an RTL hardware implementation in Verilog.
Verilog
Python
TensorFlow
0x0202Oct 2019 – Oct 2019
Facial attribute editing with a GAN
Explored controlled facial-attribute editing with a generative adversarial network implemented in TensorFlow.
Python
TensorFlow
GAN
0x0201Aug 2019 – Aug 2019
Sentiment analysis of social-media comments
Built and evaluated machine-learning models for sentiment classification of social-media comments using TensorFlow.