Crash Course on Everything

This page provides a high-level overview of what you need to know in order to accelerate ML models with the CFU Playground.

Hint: Broad knowledge over the whole stack is more useful than deep knowledge of any one part. Although each of these topics is very interesting in itself, it is better to learn the basics for each area and start applying them, and later work out where the gaps in your knowledge may be.

  • Tensorflow Lite for Microcontrollers

  • RISCV and CFUs

  • Writing gateware with Verilog and Amaranth

  • LiteX and SoCs.

  • Getting help.

Required Background Knowledge

We assume you have some knowledge of:

C and C++ for Microcontrollers

C and C++ are the languages used in for programming microcontrollers in the CFU Playground, and you will need a basic understanding of these languages.

We recommend playing with Arduino as an excellent way to learn how to program microcontrollers with C and C++.

Advanced understanding is not needed, since you’ll be reading and modifying a lot more code than you’ll be writing.


The Amaranth framework uses Python. It is remarkably easy to learn the basics of Python. If you have a couple of days, we recommend working through chapters 0 to 11 of Dive Into Python 3. Dive Into Python 3 is well paced and provides many practical exercises.

It is also helpful to have some knowledge of:

General Linux fu

Including GNU make and general bash scripting.


How to make branches and commits, fork a github respository and submit PRs.

The Crash Course

Tensorflow Lite for Microcontrollers

The technology we use for evaluating ML models, and the accelerators in the CFU-Playground fit into this model.

Building FPGA Gateware with Verilog and Amaranth: A Tutorial

At the lowest level, accelerators are built from gateware, and you’ll need to know how to write Verilog and/or Amaranth.

LiteX System on Chip

LiteX is a framework for defining FPGA SoCs. CFU-Playground accelerators work inside a LiteX SoC.

RISCV and Custom Function Units

The CFU-Playground accelerators are implemented as Custom Function Units for a RISCV CPU.

How To Get Help

Building accelerators is hard. It is essential to know how to ask for help.