Comparison of High-Level Synthesis and Hardware Construction Tools
https://doi.org/10.15514/ISPRAS-2022-34(5)-1
Abstract
Application-specific systems with FPGA accelerators are often designed using high-level synthesis or hardware construction tools. Nowadays, there are many frameworks available, both open-source and commercial. In this work, we attempt to fairly compare several existing solutions (languages and tools), including Verilog (our baseline), Chisel, Bluespec SystemVerilog (Bluespec Compiler), DSLX (XLS), MaxJ (MaxCompiler), and C (Bambu and Vivado HLS). Our analysis has been carried out using a representative example of 8×8 inverse discrete cosine transform (IDCT), a widely used algorithm engaged in, among others, JPEG and MPEG decoders. The metrics under consideration include: (a) the degree of automation (how much less code is required compared to Verilog), (b) the controllability (possibility to achieve given design characteristics, namely a given ratio of the performance and area), and (c) the flexibility (ease of design modification to achieve certain characteristics). Rather than focusing on computational kernels only, we have developed AXI-Stream wrappers for the synthesized implementations, which allows adequately evaluating characteristics of the designs when they are used as parts of real computer systems. Our study shows clear examples of what impact specific optimizations (tool settings and source code modifications) have on the overall system performance and area. It emphasizes how important is to be able to control the balance between the communication interface utilization and the computational kernel performance and delivers clear guidelines for the next generation tools for designing FPGA accelerator based systems.
About the Authors
Alexander Sergeevich KAMKINRussian Federation
Leading Researcher at the Software Engineering Department of ISP RAS, Leading Researcher at the Heterogeneous Computing Systems research lab of Plekhanov RUE. He is also a Lecturer at MSU, MIPT, and HSE
Mikhail Mikhaylovich CHUPILKO
Russian Federation
Senior Researcher at the Software Engineering Department of ISP RAS, Senior Researcher at the Heterogeneous Computing Systems research lab of Plekhanov RUE
Mikhail Sergeevich LEBEDEV
Russian Federation
Researcher at ISP RAS and the “Heterogeneous computer systems” laboratory of Plekhanov RUE
Sergey Aleksandrovich SMOLOV
Russian Federation
Researcher at the Software Engineering Department of Ivannikov Institute for System Programming of the Russian Academy of Sciences (ISP RAS), Senior Researcher at the Heterogeneous Computing Systems research lab of Plekhanov RUE
Georgi GAYDADJIEV
Netherlands
Full Professor in Innovative Computer Architectures at the University of Groningen and an Honorary Visiting Professor at Imperial College. Head of the Heterogeneous Computing Systems research lab of Plekhanov RUE
References
1. Botros N.M. HDL Programming Fundamentals: VHDL and Verilog. Charles River Media, 2005, 506 p.
2. Coussy P., Gajski D.D. et al. An introduction to high-level synthesis. IEEE Design & Test of Computers, vol. 26, issue 4, 2009, pp. 8-17.
3. Bachrach J., Vo H. et al. Chisel: constructing hardware in a Scala embedded language. In Proc. of the Design Automation Conference (DAC), 2012, pp. 1216-1225.
4. IEEE Standard Specifications for the Implementations of 8x8 Inverse Discrete Cosine Transform. In IEEE Std 1180-1990, 1991, pp. 1-12.
5. Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF) – Part 5: ISO/IEC 10918-5:2013, 2013.
6. MPEG-2 decoder from ISO/IEC 13818-4:2004. Available at: https://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_IEC_13818-4_2004_Conformance_Testing/Video/verifier/mpeg2decode_960109.tar.gz, accessed 02.11.2022.
7. XLS. Available at: https://github.com/google/xls, accessed 02.11.2022.
8. Bluespec Compiler. Available at: https://github.com/B-Lang-org/bsc, accessed 02.11.2022.
9. IDCT algorithm implementations. Available at: https://github.com/ispras/hls-idct, accessed 02.11.2022.
10. de Dinechin F., Pasca B. Designing custom arithmetic data paths with FloPoCo. IEEE Design & Test of Computers, vol. 28, issue 4, 2011, pp. 18-27.
11. Chisel. Available at: https://github.com/chipsalliance/chisel3, accessed 02.11.2022.
12. MyHDL. Available at: https://www.myhdl.org, accessed 02.11.2022.
13. Bellows P., Hutchings B. JHDL-an HDL for reconfigurable systems. In Proc. of the IEEE Symposium on FPGAs for Custom Computing Machines, 1998, pp. 175-184.
14. Bluespec SystemVerilog Reference Guide, Bluespec, Inc., 2017, 421 p.
15. Berry G., Gonthier G. The ESTEREL synchronous programming language: design, semantics, implementation. Science of Computer Programming, vol. 19, issue 2, 1992, pp. 87-152.
16. Goldstein S., Budiu M. Fast compilation for pipelined reconfigurable fabrics. In Proc. of the ACM/SIGDA Seventh International Symposium on Field Programmable Gate Arrays, 1999, pp. 195-205.
17. Bambu. Available at: https://github.com/ferrandi/PandA-bambu, accessed 02.11.2022.
18. LegUp. Available at: http://legup.eecg.utoronto.ca, accessed 02.11.2022,
19. SmartHLS Compiler. Available at: https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/smarthls-compiler, accessed 02.11.2022.
20. Vivado Design Suite User Guide Implementation. UG904 (v2021.1), August 30, 2021. Available at: https://www.xilinx.com/content/dam/xilinx/support/documents/sw_manuals/xilinx2021_1/ug904-vivado-implementation.pdf, accessed 02.11.2022.
21. Vitis High-Level Synthesis User Guide. UG1399 (v2021.2), December 15, 2021. Available at: https://www.xilinx.com/content/dam/xilinx/support/documents/sw_manuals/xilinx2021_2/ug1399-vitis-hls.pdf, accessed 02.11.2022.
22. Intel FPGA SDK for OpenCL. Available at: https://www.intel.com/content/www/us/en/software/programmable/sdk-for-opencl/overview.html, accessed 02.11.2022.
23. Intel oneAPI. Available at: https://www.intel.com/content/www/us/en/developer/tools/oneapi/overview.html, accessed 02.11.2022.
24. MaxCompiler. Available at: https://www.maxeler.com/products/software/maxcompiler, accessed 02.11.2022.
25. HDL Coder. Available at: https://www.mathworks.com/products/hdl-coder.html, accessed 02.11.2022.
26. Vitis AI. Available at: https://www.xilinx.com/products/design-tools/vitis/vitis-ai.html, accessed 02.11.2022.
27. Kalms L., Podlubne A., Göhringer D. HiFlipVX: an Open Source High-Level Synthesis FPGA Library for Image Processing. Lecture Notes in Computer Science, vol. 11444, 2019, pp. 149-164.
28. Meeus W., Van Beeck K. et al. An overview of today’s high-level synthesis tools. Design Automation for Embedded Systems, vol. 16, 2012, pp. 31-51.
29. Daoud L., Zydek D., Selvaraj H. A survey of high level synthesis languages, tools, and compilers for reconfigurable high performance computing. Advances in Intelligent Systems and Computing, vol. 240, 2014, pp. 483-492.
30. Nane R., Sima V.-M. et al. A survey and evaluation of FPGA high-level synthesis tools. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 35, issue 10, 2016, pp. 1591-1604.
31. Hara Y., Tomiyama H. et al. CHStone: A benchmark program suite for practical C-based high-level synthesis. In Proc. of the IEEE International Symposium on Circuits and Systems (ISCAS), 2008, pp. 1192–1195.
32. Chen W.H., Smith C.H., Fralick S.C. A fast computational algorithm for the discrete cosine transform. IEEE Transactions on Communications, vol. 25, issue 9, 1977, pp. 1004-1009.
33. Wang Z. Fast algorithm for the discrete W transform and for the discrete Fourier transform. IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 32, issue 4, 1984, pp. 803-816.
34. Information technology – Generic coding of moving pictures and associated audio information – Part 4: Conformance testing, ISO/IEC 13818-4:2004, December 2004.
35. AMBA 4 AXI4-Stream Protocol Specification. ARM, Cambridge, UK, ARM IHI 0051A (ID030610), March 03, 2010. Available at: https://developer.arm.com/documentation/ihi0051/a/, accessed 02.11.2022.
36. Vivado Design Suite User Guide: Model-Based DSP. Design Using System Generator. UG897 (v2020.2), November 18, 2020. Available at: https://www.xilinx.com/content/dam/xilinx/support/documents/sw_manuals/xilinx2020_2/ug897-vivado-sysgen-user.pdf, accessed 02.11.2022.
37. IEEE Standard for Verilog Hardware Description Language, IEEE Std 1364-2005, April 7, 2006, 509 p.
38. FIRRTL. Available at: https://github.com/chipsalliance/firrtl, accessed 02.11.2022.
39. DSLX Reference. Available at: https://google.github.io/xls/dslx_reference, accessed 02.11.2022.
40. Multiscale Dataflow Programming. Maxeler Technologies, London, UK, Version 2021.1, May 14, 2021.
41. Information technology – Programming languages – C, ISO/IEC 9899:2018, June 2018.
Review
For citations:
KAMKIN A.S., CHUPILKO M.M., LEBEDEV M.S., SMOLOV S.A., GAYDADJIEV G. Comparison of High-Level Synthesis and Hardware Construction Tools. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2022;34(5):7-22. (In Russ.) https://doi.org/10.15514/ISPRAS-2022-34(5)-1