Introduction

 

            The StreamIt Development Tool is an application for debugging and visualizing programs written in StreamIt [1], a novel language for the streaming application domain developed at MIT’s Computer Science and Artificial Intelligence Laboratory [2].  As a graphical programming environment, the tool can simply and intuitively convey the hierarchical and structured nature of the StreamIt language by interpreting and visually representing the stream graph and the dynamic behavior of a StreamIt program.  Built in a visual, independent development environment (IDE) with a human-computer interface (HCI), the tool is composed of the following modules:  an IDE-integrated debugger, graphical text editor, a runtime stream graph view, and a corresponding graph overview.  The debugger is implemented in Java as an Eclipse[3] plug-in.  As such, the StreamIt Program Development Guide assumes a working knowledge of Eclipse.

 

Background

 

Streaming systems are characterized by concurrent computation kernels that process potentially infinite sequences of data [4].  These systems are prevalent in desktop applications such as streaming media, software radio, real-time encryption, and graphics packages; hand-held computers, cell phones, and DSPs in the embedded domain; and high-performance systems such as internet routers, cell phone base stations, and multimedia editing consoles.  StreamIt is a programming language and a compilation infrastructure, specifically engineered for modern streaming systems.

 

Modeled as a hierarchical graph, a StreamIt program consists of stream elements (graph nodes) representing computation kernels.  There are four core types of stream elements—filters, pipelines, split-joins, and feedback loops.  Channels (graph edges) connect these stream elements.  Currently, programmers who code in StreamIt compile and run their programs on a UNIX command line, while analysis of StreamIt graphs (generated as separate files by the StreamIt compiler) is done separately from program execution.  Consequently, because there are no StreamIt-specific tools that offer simultaneous code and graph-based debugging and program visualization (e.g. observing stream graphs, data flow and values, current state, filter execution status, channel data, and filter input/output rates, etc), the StreamIt Development Tool aims to facilitate the coding and debugging of large-scale stream programs.