Impulse C has its philisophical roots in
research carried out at Los Alamos National Laboratories under the
direction of Dr. Maya Gokhale. This research, which culminated in
the publicly available Streams-C compiler (www.streams-c.lanl.gov), provided a method of expressing applications for implementation
on FPGA-based, board-level platforms for the purpose of
high-performance, hardware- accelerated computing. Applications
developed using Streams-C have been in the domains of data
encryption, image processing, astrophysics, and others.
Impulse C borrows its programming model and
general philosophy from the Streams-C programming environment but
differs from Streams-C in a number of respects, the most important
being its focus on maintaining compatibility with standard C
programming environments. By using the Impulse C libraries it's
possible to describe applications consisting of many (perhaps
hundreds) of communicating processes and simulate their collective
behavior using standard C development tools including Microsoft
Visual Studio and gccand gdb-based environments.
To allow the compilation and simulation of
highly parallel applications consisting of independently
synchronized processes, the Impulse C libraries include functions
that define process interconnections (typically streams and/or
signals) and emulate the behavior of multiple processes (for the
purpose of desktop simulation) using threads.
Monitoring functions included with the Impulse C library allow
specific processes in a large, parallel application to be
instrumented with special debugging functions. The results of
computations are displayed in multiple windowed views, most often
while the application is running under the control of a standard C
debugger. This capability is introduced in this chapter and is
described in more detail in subsequent chapters.
For hardware generation, the Impulse tools include a C language
compiler flow that is based in part on the publicly available SUIF
(Stanford Universal Intermediate Format) tools, which are combined
with proprietary optimization and code generation tools developed
at Impulse Accelerated Technologies.