When a
StreamIt program is suspended at a breakpoint or watchpoint, the corresponding
stream graph is displayed the Stream Graph and Overview of Stream Graph windows
(Figure 12). The Stream Graph window is
the primary, interactive stream graph that displays runtime characteristics of
stream elements (stream element type, input/output types and rates, filter
execution status, etc) and can expand and collapse the stream hierarchy. In contrast, the Overview of Stream Graph
window reflects the contents of the main graph window scaled down 75%.
Figure 12:
A primary, interactive stream graph (left) and an overview stream graph
(right).
The shapes
of the stream elements and channels of the graph were chosen to suggest the
type of stream the element was: As seen
in Figure 13, a filter is meant to look like a funnel, while a feedback loop is
rounded to suggest a loop. A split-join
is drawn as a blunted diamond, trying to suggest that channels are split and
then joined together. Channels are drawn
as skinny rectangles to convey that small data can pass through them. In contrast, pipelines are depicted as flat
rectangles, indicating that they can contain more than just data. Furthermore, yellow arrow icons (Figure 14)
are displayed in every stream element to convey the direction that data flows
within the element (i.e., the arrow points from input to output).
Figure 13:
A collapsed filter, pipeline, split-join, and feedback loop (left to
right) in the Graph Window.
Figure 14:
Yellow arrow icons indicating data flow.
The stream
overview graph reflects the contents of the graph window scaled down by
75%. When the user clicks in the graph
overview window, the corresponding location in the graph window will be
scrolled to, facilitating faster navigation of large streaming
applications. For example, in Figure 15,
the graph window is too small to show any more than the first split-join. Instead of repeatedly scrolling to the bottom
of the graph, the user can make one click to get there. The graph overview window is in a separate
window that the user has the option of closing, which may be desirable when the
graph is small. The overview graph is
meant to be a miniaturized version of the graph, such that everything else but
size is the same for the sake of consistency.
Figure 15:
A large(r) StreamIt graph.
In order to view more specific parts
of a large graph (the entire graph will initially be shown by the debugger),
the primary stream graph can expand and collapse its hierarchical structures
(pipelines, split-joins, and feedback loops).
A stream graph can be navigated in several ways. The plus and minus boxes, as seen in Figure
16, allow a user to expand and collapse stream elements: clicking a plus box on a filter expands to
show (hide) filter characteristics, while clicking a plus (minus) box on a
non-filter element expands (collapses) the element to show (hide) its children
(Figure 17). The children may or may not
also be expanded, depending on whether the user had previously expanded these
children. Double-clicking on a stream
element toggles the element between an expanded and collapsed state. A “Collapse All” button in the top right of
the window collapses the entire graph to the top level pipeline (Figure
16). The various ways to navigate the
graph are provided for scalability (when the graph is large, navigating takes
on more importance), flexibility, and efficiency.
Figure 16:
Plus and minus boxes for expanding and collapsing a stream graph (far
left and middle). A button for
collapsing the entire graph (far right).
Figure 17:
An expanded filter, pipeline, split-join, and feedback loop (left to
right).