Spark is a parallelizing high-level synthesis framework that synthesizes a behavioral description using a set of aggressive compiler, parallelizing compiler and synthesis techniques [1, 2, 3]. An overview of the Spark framework is shown in Figure 2.17Introduction to the Spark High-Level Synthesis Frameworkfigure.2.1. Spark takes a behavioral description in ANSI-C as input albeit with no support for pointers, function recursion and gotos. The output of Spark is synthesizable register-transfer level (RTL) VHDL. As shown in Figure 2.17Introduction to the Spark High-Level Synthesis Frameworkfigure.2.1, Spark also takes as input additional information such as a hardware resource library, resource and timing constraints, data type information, and user controlled scripts that guide the various heuristics and transformations.
Figure 2.1: An overview of our High-Level Synthesis Framework