0x0200Projects

From a European chip project to weekend FPGA builds

The PhD project comes first. The rest is listed because it shows range: simulators, schedulers, distributed inference, and RTL.

Research

Projects that produced published results or fed directly into them.

0x020ANov 2022 – Feb 2026

NeuroSoC: security assessment of an in-memory computing SoC

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.

  • Power side-channel analysis
  • Analog in-memory computing
  • PCM
  • RISC-V SoC
  • Transformers
  • Python
  • PyTorch

0x0209Jun 2021 – Jun 2021

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.

  • Python
  • TensorFlow