TinyCoDesign
Minimal FPGA hardware/software co-design demo with UART protocol, scratchpad memory, and an int8 dot-product accelerator, plus Python/C++ runtimes.
A minimal teaching demo showing how a PC program can send commands over a serial link to an FPGA that runs a small dot-product accelerator.
TinyCoDesign is a teaching demo that shows how to connect a computer program to a piece of programmable hardware (an FPGA — a chip you can configure to do custom tasks). The specific board used is the DaVinci Pro 100T, which contains an Xilinx Artix-7 chip. The goal is deliberately small: show the complete loop from a software command on a PC all the way through to a hardware calculation and back, without the complexity of large AI chips or full-scale deep learning systems.
The hardware side implements a scratchpad memory (a simple scratch space for storing numbers) and a dot-product accelerator, which multiplies two lists of small integers element-by-element and sums the results — a building block of neural-network math. Communication between the PC and the FPGA happens over UART, a basic serial protocol running at 115200 baud, which is the same standard used by many microcontrollers and USB-serial adapters. The software side has two runtimes: one in Python and one in C++, each able to talk to either the real board or a software simulator for testing without hardware.
You would use this project if you are learning FPGA-based hardware acceleration, studying how software and programmable hardware cooperate on a task, or exploring how to send commands over a serial link and get results back. The code is written in Verilog for the hardware description and Python plus C++ for the host software. Vivado (Xilinx's design tool) is required to synthesize and program the hardware.
Where it fits
- Learn how software on a PC communicates with programmable hardware over a serial link.
- Study a minimal example of a hardware dot-product accelerator used in neural-network math.
- Test the full hardware and software workflow using a simulator without owning the FPGA board.
- Explore FPGA hardware and software co-design using Verilog, Python, and C++.