hlslib: Software Engineering for Hardware Design
ETH Zurich
arXiv:1910.04436 [cs.AR], (10 Oct 2019)
@misc{licht2019hlslib,
title={hlslib: Software Engineering for Hardware Design},
author={Johannes de Fine Licht and Torsten Hoefler},
year={2019},
eprint={1910.04436},
archivePrefix={arXiv},
primaryClass={cs.AR}
}
High-level synthesis (HLS) tools have brought FPGA development into the mainstream, by allowing programmers to design architectures using familiar languages such as C, C++, and OpenCL. While the move to these languages has brought significant benefits, many aspects of traditional software engineering are still unsupported, or not exploited by developers in practice. Furthermore, designing reconfigurable architectures requires support for hardware constructs, such as FIFOs and shift registers, that are not native to CPU-oriented languages. To address this gap, we have developed hlslib, a collection of software tools, plug-in hardware modules, and code samples, designed to enhance the productivity of HLS developers. The goal of hlslib is two-fold: first, create a community-driven arena of bleeding edge development, which can move quicker, and provides more powerful abstractions than what is provided by vendors; and second, collect a wide range of example codes, both minimal proofs of concept, and larger, real-world applications, that can be reused directly or inspire other work. hlslib is offered as an open source library, containing CMake files, C++ headers, convenience scripts, and examples codes, and is receptive to any contribution that can benefit HLS developers, through general functionality or examples.
October 13, 2019 by hgpu