The Function Views in the System Viewer show the block connections that depend on the loop structures in your design and highlights the block that is an II bottleneck in red.
They also show the interfaces and all stream read/write operation and memory load/store operation points of the component or task and highlight those that are stallable in red.
The diagram of your function starts with an initialization block, called the runOnce block. When a function contains loops, cycles of blocks form, depending on the loop structure. Loops often impose initiation interval (II) bottlenecks and are a main optimization focus when you optimize your component.
A component block has three main parts:
- An input or loop input node
- A set of instructions
- A branch node
The input node and the branch node might not be present depending on if there is branching in or out of the block. The input or loop input node determines the initial value for variables depending on where the branch into this block is from. The rest of the block should ideally be filled with non-stallable instructions and have a minimal amount of stallable instructions, like I/O instructions or memory access instructions.
For an example of the Function View and the blocks it displays, refer to Reviewing Loops and Blocks in Your Component or Task.
Click a function in the Graph List pane to see the function in the Graph View pane.
Use the Function View for the following tasks:
When viewing a function, the Graph View pane shows connections between nodes in a graph:
Control connections are connections between blocks and loops.
Memory connections are connections between global or local memories.
Stream connections are connections to and from read or write streams
By default, all connections are displayed. If you find your view is too cluttered, you can hide connections by clearing the checkbox for the type of connection you want to hide.