aiSee: Dhrystone Call Graph

Dhrystone call graph

Call graph of the Dhrystone benchmark application for the C16x/ST10 family of microcontrollers. It shows the calling relationships between routines, represented by nodes. An edge represents a call to a routine. External routines are shown in a different color, enabling interfaces to modules to be easily identified (see larger picture, 10kB). The GDL source (350kB) was automatically generated by the software visualization tool aiCall.


Using aiSee’s subgraph nesting operations enables the content of a routine, i.e. the routine's control flow graph, to be visualized. The nodes within a routine represent basic blocks and the edges represent the control flow between the basic blocks.

Control flow graph

Again, the subgraph nesting operations enable the content of a basic block, i.e. the corresponding sequence of assembly instructions, to be viewed. The actual control flow graph contains 674 nodes, 705 edges, and 115 nested subgraphs (see picture, 64kB, or GDL source, 350kB).

Control flow graph

aiSee allows up to three pieces of additional information to be associated with a node. Thus, for example, it is possible to view internal addresses of instructions or source code comments.

Node tooltips

aiCall supports labelling basic blocks with the corresponding C source code snippets.

C source code visualization

aiCall also automatically determines system stack usage and user stack usage of the application's tasks. Stack height differences can be shown as annotations in the call graph and control flow graph. Critical program sections can then be easily recognized thanks to color coding.

Stack usage analysis results