High-Level Language Tools for Reconfigurable Computing This paper provides a focused survey of five tools to improve productivity in developing code for FPGAs.

In the past decade or so we have witnessed a steadily increasing interest in FPGAs as hardware accelerators: they provide an excellent mid-point between the reprogramm- ability of software devices (CPUs, DSPs, and GPUs) and the performance and low energy consumption of ASICs. However, the programmability of FPGA-based accelerators remains one of the biggest obstacles to their wider adoption. Developing FPGA programs requires extensive familiarity with hardware design and experience with a tedious and complex tool chain. For half a century, layers of abstractions have been developed that simplify the software development process: languages, compilers, dynamically linked libraries, operating systems, APIs, etc. Very little, if any, such abstractions exist in the devel- opment of FPGA programs. In this paper, we review the history of using FPGAs as hardware accelerators and summarize the challenges facing the raising of the programming abstraction layers. We survey five High-Level Language tools for the de- velopment of FPGA programs: Xilinx Vivado, Altera OpenCL, BluespecBSV,ROCCC,andLegUptoprovideanoverviewoftheir tool flow, the optimizations they provide, and a qualitative analysis of their hardware implementations of high level code.

[1]  Rishiyur S. Nikhil,et al.  Bluespec System Verilog: efficient, correct RTL from high level specifications , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[2]  Mark Shand,et al.  Programmable active memories: reconfigurable systems come of age , 1996, IEEE Trans. Very Large Scale Integr. Syst..

[3]  Arvind,et al.  What is Bluespec? , 2008, SIGD.

[4]  Gary Smith,et al.  High-Level Synthesis: Past, Present, and Future , 2009, IEEE Design & Test of Computers.

[5]  Panu Hämäläinen,et al.  Design and Implementation of Low-Area and Low-Power AES Encryption Hardware Core , 2006, 9th EUROMICRO Conference on Digital System Design (DSD'06).

[6]  Jean Vuillemin,et al.  Introduction to programmable active memories , 1990 .

[7]  Walid A. Najjar,et al.  Input data reuse in compiling window operations onto reconfigurable hardware , 2004, LCTES '04.

[8]  Walid A. Najjar,et al.  Compiler generated systolic arrays for wavefront algorithm acceleration on FPGAs , 2008, 2008 International Conference on Field Programmable Logic and Applications.

[9]  Vassilis J. Tsotras,et al.  A study on parallelizing XML path filtering using accelerators , 2014, ACM Trans. Embed. Comput. Syst..

[10]  Doris Chen,et al.  Invited paper: Using OpenCL to evaluate the efficiency of CPUS, GPUS and FPGAS for information filtering , 2012, 22nd International Conference on Field Programmable Logic and Applications (FPL).

[11]  Walid A. Najjar,et al.  A Compiler Intermediate Representation for Reconfigurable Fabrics , 2006, 2006 International Conference on Field Programmable Logic and Applications.

[12]  Luka Daoud,et al.  A Survey of High Level Synthesis Languages, Tools, and Compilers for Reconfigurable High Performance Computing , 2013, ICSS.

[13]  Marcos R. Vieira,et al.  High performance FPGA and GPU complex pattern matching over spatio-temporal streams , 2014, GeoInformatica.

[14]  John Freeman,et al.  From opencl to high-performance hardware on FPGAS , 2012, 22nd International Conference on Field Programmable Logic and Applications (FPL).

[15]  Marcel Gort,et al.  From software to accelerators with LegUp high-level synthesis , 2013, 2013 International Conference on Compilers, Architecture and Synthesis for Embedded Systems (CASES).

[16]  Jason Helge Anderson,et al.  LegUp: An open-source high-level synthesis tool for FPGA-based processor/accelerator systems , 2013, TECS.

[17]  Bruce A. Draper,et al.  Loop fusion and temporal common subexpression elimination in window-based loops , 2001, Proceedings 15th International Parallel and Distributed Processing Symposium. IPDPS 2001.

[18]  Hideharu Amano,et al.  An FPGA Implementation of Reconfigurable Real-Time Vision Architecture , 2013, 2013 27th International Conference on Advanced Information Networking and Applications Workshops.

[19]  Adrian Park,et al.  Designing Modular Hardware Accelerators in C with ROCCC 2.0 , 2010, 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.

[20]  Doris Chen,et al.  Fractal video compression in OpenCL: An evaluation of CPUs, GPUs, and FPGAs as acceleration platforms , 2013, 2013 18th Asia and South Pacific Design Automation Conference (ASP-DAC).

[21]  Jason Cong,et al.  AutoPilot: A Platform-Based ESL Synthesis System , 2008 .

[22]  Walid A. Najjar,et al.  Impact of high-level transformations within the ROCCC framework , 2010, TACO.

[23]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[24]  Jason Cong,et al.  High-Level Synthesis for FPGAs: From Prototyping to Deployment , 2011, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[25]  D. V. Pryor,et al.  Text searching on Splash 2 , 1993, [1993] Proceedings IEEE Workshop on FPGAs for Custom Computing Machines.

[26]  David F. Bacon,et al.  FPGA programming for the masses , 2013, CACM.

[27]  Dirk Stroobandt,et al.  An overview of today’s high-level synthesis tools , 2012, Design Automation for Embedded Systems.

[28]  Dzung T. Hoang,et al.  Searching genetic databases on Splash 2 , 1993, [1993] Proceedings IEEE Workshop on FPGAs for Custom Computing Machines.

[29]  Amit K. Roy-Chowdhury,et al.  Evaluation and Acceleration of High-Throughput Fixed-Point Object Detection on FPGAs , 2015, IEEE Transactions on Circuits and Systems for Video Technology.

[30]  George A. Constantinides,et al.  High-level synthesis of dynamic data structures: A case study using Vivado HLS , 2013, 2013 International Conference on Field-Programmable Technology (FPT).

[31]  Tom Feist,et al.  Vivado Design Suite , 2012 .

[32]  Steven W. K. Tjiang,et al.  SUIF: an infrastructure for research on parallelizing and optimizing compilers , 1994, SIGP.

[33]  Robert J. Halstead,et al.  High-Level Language Tools for Reconfigurable Computing , 2015, Proceedings of the IEEE.

[34]  Jean Vuillemin,et al.  Programmable Active Memories: A Performance Assessment , 1992, Heinz Nixdorf Symposium.

[35]  Luis Angel Barragan,et al.  High-Level Synthesis for Accelerating the FPGA Implementation of Computationally Demanding Control Algorithms for Power Converters , 2013, IEEE Transactions on Industrial Informatics.

[36]  Jason Helge Anderson,et al.  LegUp: high-level synthesis for FPGA-based processor/accelerator systems , 2011, FPGA '11.

[37]  Pedro C. Diniz,et al.  Compiling for reconfigurable computing: A survey , 2010, CSUR.

[38]  Stephen A. Edwards,et al.  The Challenges of Synthesizing Hardware from C-Like Languages , 2006, IEEE Design & Test of Computers.

[39]  Anil K. Jain,et al.  Convolution on Splash 2 , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[40]  Tarek A. El-Ghazawi,et al.  A Framework for Evaluating High-Level Design Methodologies for High-Performance Reconfigurable Computers , 2011, IEEE Transactions on Parallel and Distributed Systems.

[41]  Duncan A. Buell,et al.  Splash 2 - FPGAs in a custom computing machine , 1996 .