Skip to content

emanueledelsozzo/awesome-fpga-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 

Repository files navigation

Awesome

awesome-fpga-programming

A curated list of awesome languages and tools to program FPGAs. This list builds upon this survey:

E. Del Sozzo, D. Conficconi, A. Zeni, M. Salaris, D. Sciuto, and M. D. Santambrogio. Pushing the Level of Abstraction of Digital System Design: a Survey on How to Program FPGAs. ACM Computing Surveys (April 2022). https://doi.org/10.1145/3532989

and follows the same taxonomy to cluster state-of-the-art Hardware Description Languages (HDLs), High-Level Synthesis (HLS) tools, and Domain-Specific Languages (DSLs).

Please feel free to contribute and help maintain this list updated.

Hardware Description Languages (HDLs)

The HDL taxonomy is based on the characteristics of the programming model employed in the embedded languages exploited as input. Here, we report high-level HDLs that, eventually, translates into standard HDLs, namely, VHDL/(System)Verilog.

Functional-based HDLs

HDLs embedding the characteristics of the functional languages from which they derive (e.g., SML, Haskell, and Scala).

Imperative-based HDLs

HDLs embedding the characteristics of the imperative languages from which they derive (e.g., Java, Python, and C++).

SystemVerilog Extension HDLs

HDLs extending SystemVerilog.


High-Level Synthesis (HLS) Tools

The HLS taxonomy is based on the target application and synthesis flow.

High-Level Synthesis (HLS)

These tools generate RTL for generic IPs described using high-level languages (e.g., C and C++). Here we report only “pure” HLS tools, i.e., tools that do perform the HLS process without delegating it to third-party software.

Accelerator-Centric Synthesis (ACS)

These tools focus on hardware acceleration of algorithms and automatize the whole design flow, from the HLS process to the bitstream generation.


Domain-Specific Languages (DSLs)

We cluster DSLs based on their domain of interest: single application domain, architectural models, intermediate languages and infrastructure for DSLs.

Application Domain

DSLs concentrating on a given application domain (e.g., image processing and packet processing).

Architectural Domain

DSLs concentrating on a given architectural model (e.g., spatial architecture and systolic array).

  • Spatial

    Year: 2018

    Paper: D. Koeplinger, M. Feldman, R. Prabhakar, Y. Zhang, S. Hadjis, R. Fiszel, T. Zhao, L. Nardi, A. Pedram, C. Kozyrakis, , and K. Olukotun. 2018. Spatial: A language and compiler for application accelerators. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation. 296–311. https://doi.org/10.1145/3192366.3192379

    Repository: https://github.com/stanford-ppl/spatial

    Website: https://spatial-lang.org

  • SPGen

    Year: 2020

    Paper: Y. Watanabe, J. Lee, K. Sano, T. Boku, and M. Sato. 2020. Design and preliminary evaluation of openacc compiler for fpga with opencl and stream processing dsl. In Proceedings of the International Conference on High Performance Computing in Asia-Pacific Region Workshops. 10–16. https://doi.org/10.1145/3373271.3373274

  • SuSy

    Year: 2020

    Paper: Y. Lai, H. Rong, S. Zheng, W. Zhang, X. Cui, Y. Jia, J. Wang, B. Sullivan, Z. Zhang, Y. Liang, Y. Zhang, J. Cong, N. George, J. Alvarez, C. Hughes, and P. Dubey 2020. SuSy: a programming model for productive construction of high-performance systolic arrays on FPGAs. In 2020 IEEE/ACM International Conference On Computer Aided Design (ICCAD). IEEE, 1–9. https://doi.org/10.1145/3400302.3415644

    Repository: https://github.com/IntelLabs/t2sp

Intermediate Infrastructure

Solutions proposing an intermediate layer lying between the DSL and the RTL/HLS code.

About

An awesome curated list of languages and tools to program FPGAs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published