Stream graph display and navigation

 

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