System-level Linking of Synthesised Hardware and Compiled Software Using a Higher-order Type System

Shane Fleming, David Thomas, George Constantinides, Dan Ghica

Research output: Chapter in Book/Report/Conference proceedingConference contribution

2 Citations (Scopus)

Abstract

Devices with tightly coupled CPUs and FPGA logic allow for the implementation of heterogeneous applications which combine multiple components written in hardware and software languages, including first-party source code and third-party IP. Flexibility in component relationships is important, so that the system designer can move components between software and hardware as the application design evolves. This paper presents a system-level type system and linker, which allows functions in software and hardware components to be directly linked at link time, without requiring any modification or recompilation of the components. The type system is designed to be language agnostic, and exhibits higher-order features, to enables design patterns such as notifications and callbacks to software from within hardware functions. We demonstrate the system through a number of case studies which link compiled software against synthesised hardware in the Xilinx Zynq platform.
Original languageEnglish
Title of host publicationProceedings of the 2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA '15)
PublisherAssociation for Computing Machinery
Pages214-217
ISBN (Print)9781450333153
DOIs
Publication statusPublished - 22 Feb 2015
Event2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays - Monterey, California, United Kingdom
Duration: 22 Feb 201524 Feb 2015

Conference

Conference2015 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays
Country/TerritoryUnited Kingdom
CityMonterey, California
Period22/02/1524/02/15

Fingerprint

Dive into the research topics of 'System-level Linking of Synthesised Hardware and Compiled Software Using a Higher-order Type System'. Together they form a unique fingerprint.

Cite this