Transparent Linking of Compiled Software and Synthesized Hardware
David B. Thomas1,a, Shane T. Fleming1,b, George A. Constantinides1,c and Dan R. Ghica2
1Department of Electrical and Electronic Engineering, Imperial College London, UK.
2School of Computer Science, University of Birmingham, UK.
Modern heterogeneous devices contain tightly coupled CPU and FPGA logic, allowing low latency access to accelerators. However, designers of the system need to treat accelerated functions specially, with device specific code for instantiating, configuring, and executing accelerators. We present a system level linker, which allows functions in hardware and software to be linked together to create heterogeneous systems. The linker works with post-compilation and post-synthesis components, allowing the designer to transparently move functions between devices simply by linking in either hardware or software object files. The linker places no special emphasis on the software, allowing computation to be initiated from within hardware, with function calls to software to provide services such as file access. A strong type-system ensures that individual code artifacts can be written using the conventions of that domain (C, HLS, VHDL), while allowing direct and transparent linking.
Full Text (PDF)