Practical Programming of FPGAs with Open Source Tools

This project has evolved from the Practical programming of FPGAs in the data center and on the edge project. Please see that project page for the additional details.

As artificial intelligence and the collection and processing of vast amounts of data continue to revolutionize every aspect of technology, data centers are moving from being “compute-centric” to “data-centric”; from processing data in place, to “compute everywhere” — whether data is stationary (in memory) or on the move (in network). A type of computing device known as the Field Programmable Gate Array (FPGA) is integral to this transformation: FPGAs are simultaneously communication and computation devices. They are also reconfigurable: rather than fitting the application to the hardware, the hardware is modified to best run the application. Currently, however, programming FPGAs requires particular expertise not present with most programmers. In this project we are augmenting common software development tools with machine learning capability so that the tool can learn to transform ordinary programs into high-quality FPGA configurations.

Project Team

Principal Investigator: Martin Herbordt
Red Hat Collaborators: Uli Drepper and Ahmed Sanaullah
PhD Students: Robert Munafo, Hafsah Shahzad, Reza Sajjadi
Undergraduate students: Xiteng Yao, BSEE



  • “Optimizing Custom Hardware Generation for FPGA Using Machine Learning,” UROP Research Presentation, Boston University, October 20, 2022.

Project Poster

Link to full size poster

This project is supported by the Red Hat Collaboratory at Boston University.