PNNL-2019 Workshop

Date and time: February 5-7, 2019
Presenter: Fabrizio Ferrandi, Politecnico di Milano
Venue: Pacific Northwest National Laboratory,902 Battelle Boulevard,PO Box 999,Richland, WA 99352 USA

Bambu: FPGA Programming for Complex Parallel Applications

Accelerators implemented on reconfigurable hardware and, in particular, on Field Programmable Gate Arrays (FPGAs), are experiencing a renewed interest in the High-Performance Computing community. The ability to finely customize the design of the accelerators to the applications can provide interesting benefits in terms of efficiency with respect to fixed accelerators, especially for data-intensive applications. However, FPGAs have traditionally been programmed with hardware description languages, requiring significant engineering efforts and long development times. The availability of new tools to generate accelerators starting from high-level (parallel) specifications provides easier access to FPGAs and preserve programmer productivity.
This talk presents Bambu, an open-source framework for research in high-level synthesis ( It leverages existing software compilers (GCC and CLANG/LLVM) to automatically generate FPGA-based accelerators directly from C/C++ language. The  Bambu high-level synthesis approach will be discussed and put into perspective by comparing its peculiarities with the recent and ongoing research in the HLS community. Bambu is integrated with many logic synthesis and simulations flows and is able to generate parallel accelerators for a variety of FPGA vendors. It also optimizes the memory architectures starting from complex parallel specifications annotated with OpenMP. Presentation slides

Getting started with Bambu in one hour

This tutorial presents Bambu, an open-source framework for research in high-level synthesis. In one hour, hardware or software designers will understand how to accelerate their applications with limited effort starting from a high-level specification based in C/C++ down to the deployment on existing FPGAs. The presentation will go through the Compiler Based Optimizations, the possible BAMBU options, and the synthesis and the optimization of the memory accesses.
Presentation slides

Virtual machine

You can download a VirtualBox virtual machine with a pre-configured version of Bambu. The machine requires about 8GB of free space on your disk. (Username: ubuntu — Password: password).

Instructions to setup the virtual machine can be found in this pdf.

The two files are shared through OneDrive facility and they just require a recent version of VirtualBox software.
VirtualBox virtual machine with a pre-configured version of Bambu running on Ubuntu-desktop 16.04 LTS 32bits – 1.64GB
VirtualBox virtual machine with a pre-configured version of Bambu running on Ubuntu-desktop 18.04 LTS 64bits- 1.61GB

Windows installer

Windows7 64 bit installer is available including bambu, Verilator, GCC8 and Clang7:

Windows 7 64bit installer based on a recent version of Mingw64 – 254Mb

Short Bio

Fabrizio Ferrandi, Associate Professor, Politecnico di Milano, Italy
Fabrizio Ferrandi is an Associate Professor in the Dipartimento di Elettronica, Informazione e Bioingegneria of the Politecnico di Milano. He received the Laurea (cum laude) degree in electronic engineering and the Ph.D. degree in information and automation engineering (computer engineering) from the Politecnico di Milano, Milan, Italy, in 1992 and 1997, respectively. The Ph.D. thesis on a Methodology for supporting the Design of Testable Digital Systems has received the Chorafas Foundation prize (1997). He joined the faculty of Politecnico di Milano in 1999 as “Ricercatore” and later in 2002 as Associate Professor with the Dipartimento di Elettronica, Informazione e Bioingegneria. He has published over 100 peer-reviewed papers in international journals, books, and proceedings of international congresses. According to Google Scholar, he collected more than 2100 citations reaching an h-index of 26. He served in several technical and organizing committees in international conferences and workshops, such as DAC, DATE, FPL, CODES-ISSS, ASP-DAC, Computing Frontier, ISIS, SAMOS, NAS, GVLSI, VIPES, ARCS and ReConFig. He worked as a reviewer of IEEE Transactions on Computers, IEEE Transactions on CAD/ICAS, Transactions on Embedded Computing Systems, Transactions on Reconfigurable Technology and Systems, Transactions on Design Automation of Electronic Systems and of Journal of System Architecture JSA. Fabrizio Ferrandi is a member of the IEEE Computer Society, the Test Technology Technical Committee, HiPEAC Network of Excellence for High-Performance and Embedded Architecture and Compilation, and the European Design and Automation Association. He is one of the maintainers of the PandA/Bambu high-level synthesis tool. His current research interests include synthesis, verification, simulation, and testing of digital circuits and systems. He has managed and worked in several ESA/EU funded projects.

A framework for Hardware-Software Co-Design of Embedded Systems