??? 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.