TNN FPGA Accelerator

Ternary Neural Networks enable very efficient implementation on FPGAs.
For more information, please read our initial paper on Ternary Neural Networks:

This page contains our demonstration hardware implementation of a Ternary Neural Network, targeting the Xilinx VC709 FPGA board.

Adrien Prost-Boucle
Frédéric Pétrot


Our designs targets GNU/Linux operating systems.
It uses the RIFFA framework to interface the hardware design with the software application.
The RIFFA driver must be installed on your machine.

You may also need root rights to ask the Linux kernel to scan/remove PCI-Express devices, when programming or re-programming the board.

To program the board, you will need either the Xilinx Vivado tool suite, or the open-source program xc3sprog (this is the default command in the provided Makefile).

To program the board and/or to use UART, you may need to install a library to talk to FTDI chips: libftdi and libftd2xx. Check what packages are provided by your distribution.

The power consumption is measured with the on-board PMBus, a bus based on I2C that enables to read the power directly from the on-board power converters.
To enable users to monitor the power consumption without interfering with PCI-Express workloads, our hardware design includes a simple UART-to-PMBus interface.
You need rights to use the UART ports, probably over USB.

You also need one VC709 board!

IJCNN 2017 paper

This section provides demonstration configurations for our IJCNN 2017 paper (presentation on May 16th). The draft can be obtained here:

Download the archive (14.6 MB, format tar.gz)
For instructions, see the file README inside the archive.

Link to training software: see this project:

Note: our designs have been improved since the initial paper submission.
FPGA power is now much lower than in the paper.