New targets
GUI
- Grouping of views in navigation bar has changed.
Instead of being grouped by view types, the views are now grouped
with respect to the analysis they belong to.
- New “Results” view in the “Analysis”
section in the main navigation bar. This view shows the global
analysis results for all analyses that have been run. The resulting
graph is no longer displayed automatically when an analysis has finished.
To view the graph, double-click on the corresponding analysis ID.
- Handling of source files improved
- Changes of source-code visualization in Graph and Code view:
- If no debug information is present in the executable, the block address
is displayed in basic blocks of the control flow graph (previously, all blocks
were marked by <no source available> in this case).
If a basic block cannot be associated with a source line,
this basic block is labeled by its address in the control flow
graph (previously, these blocks were marked by <empty>).
If the source file mentioned in the debug information cannot
be located by a³, basic blocks are labeled by
<filename:line number> (previously, all blocks
were marked by <empty> in this case).
- Clicking on a source line in code view opens the source editor view.
- When performing some action with an analysis item, the view “Source
files” containing a list of involved source files is assigned to
the selected analysis item. This list shows if a source file
was found (green flag) or not (red flag).
- The former views “Include paths” and
“Path replacements” have been combined merged into
the “Source files” view. Additionally, heuristics
that compute include path proposals have been integrated.
- New link between source-code variables in the “Variables”
and “Source files” views.
- Perform a right mouse click on a variable name in the analysis
variables view.
- A context menu with the entry “Source for variable name”
will be displayed.
- Selecting this context menu entry will open the corresponding
source file that contains the definition of the variable. The
connected source code line is highlighted.
- New link between results graph and the “Source files” view:
- Right-click on a basic block node in the graph.
- Select the entry “Show source code” (shortcut: R).
- The corresponding source file that contains the selected basic block is opened.
- Source code in call graph and disassembly view is now displayed
correctly even if multiple executables are analyzed.
- Source-file view extensions for WCET analysis:
- WCET and Infeasible Contribution on Source Level
The source file view presents the list of all source files involved
in the WCET analysis. The source file view is extended by two
columns: WCET and Infeasible
- The WCET column visualizes with a red bar the percentage of
source file lines contributing to the overall WCET analysis
result.
- The Infeasible column visualizes the percentage of source file
lines that have been classified as infeasible.
- Visualization of WCET Path and Infeasible Code in Source Files
After a double click on the source file name, the source file is
opened in the editor and the "WCET path" is visualized in light
red color, i.e. the source file lines contributing to the WCET are
marked in red.
Analogously the source lines that are classified as infeasible are
marked with light gray color.
- aiT WCET Analysis and Interactive Value Analysis connected
Now the interactive value analysis results can be accessed from
within the WCET analysis result graph:
There is a new context menu entry 'Show value analysis results'
(shortcut: V). With this menu entry the value analysis results
at an instruction node can be displayed and explored without the need
for a separate value analysis item with the same configuration (only
available with license feature ValueAnalyzer).
- Added option “Show relative addresses” in the Code view.
When activated, instead of the absolute addresses of instructions, their
offset to the start address of the routine is displayed.
- Extension of Code view for paged architectures. As before, the paged
address is displayed. The corresponding linear address can be seen in a
newly added tooltip.
- Added Symbols view that shows the symbol table entries of the analyzed
executables and information about which section they belong to, start and end
addresses and classification as routine or not.
- Improvements in the views regarding debug information:
- Copying variables and functions out of debug view is possible now.
- The component responsible for extracting the debug information from
the executable has been optimized to require significantly less
memory.
- AIS Editor:
- Replacement functionality now available.
- Improved syntax highlighting.
- Improvements in the AIS Wizard.
- Syntax completion extended.
- AIS Wizard improved:
- AIS Wizard is now accessible via toolbar (magic wand icon) and
via context menu (“AIS generation wizard…”)
- The compiler can be now selected in the “General”
specification selection in the AIS Wizard.
- AIS wizard dialog is non-blocking now and the wizard window can be
moved around freely, i.e. while using the wizard window, source code
and AIS files can be browsed and watched to create the annotations
with the wizard.
- XML result file in files view:
The XML result file has moved from the analysis items to the files
view. The XML result file has to be specified in the 'Files' view now.
It contains the results for all analysis runs when several analyses
have been run in a row successfully.
The XML result file for a stack analysis result shows the result
interval, i.e. the minimum and the maximum global stack usage.
- Graph Viewer Changes:
- Improved usability of search dialog in the graph viewer.
- Color in the search list updated after unfold operation
(from gray to black).
- Direct jump to searched node after 'Expose and recursive box node'
operation from context menu is performed.
- Improved print dialogue for graph viewer in a³:
Now it is possible to print any visualization, i.e. gdl graphs, from
within the a³ GUI.
- Shortcut keys for exploring graphs in the graph viewer tool
can be customized via 'Preferences' dialog (opened via
Windows->Preferences).
- Minor Changes:
- Context menu entry of analysis items changed from 'Close'
to 'Remove analysis'. With this entry the analysis is
completely removed from the project, whereas the 'Close'
entries for other views just close the view and can be
opened with a click on the appropriate button again.
- Analysis items without corresponding license feature are marked
with a yellow attention triangle. A tool tip at the triangle shows
the missing feature.
- Tool tips for analysis specification problems:
In general, all problematic analysis specifications are marked
with a yellow attention triangle to the right of the analysis item
in the navigation bar.
Holding the mouse pointer over the yellow triangle causes a tool tip
to appear that contains information on the cause of the problems.
- A change in an analysis configuration line by textual editing does
immediately cause the change mark (a '*' character in the title
line) and activates the 'Save' button.
- Analysis handling improved:
In the analysis overview 'Managing existing analyses'
multiple analyses can be selected (by holding the ctrl key pressed)
in order to delete more than one analysis item at a time.
- Improved APF import in a³ GUI:
APF files with multiple executables specified can be imported now.
- Improved context menu entries:
All keyboard short cut keys are shown in capital letters. If a
capital key should be pressed it is written with the 'Shift' prefix.
- Click on error/warning/info message and jump to corresponding file
and line has been improved.
- Analysis Start dialog improved:
- The “Analysis Start” dialog to select an entry point for
an analysis item is pre-filled with the function list when it is opened
for the first time.
- Analysis start point in the “Analysis Start” dialog
can be chosen by double-clicking a function name in the list.
- Visualization preview is presented with maximum aspect on start up,
so that the entire graph is visible.
- User interaction with verbosity slider improved.
- Improved output of interactive value analysis results:
the output shows “?” for accesses that could
not be determined by the value analysis.
- New default names for analysis items: “aiT_<number>”,
“StackAnalyzer_<number>”,
“ValueAnalyzer_<number>”,
“TimingExplorer_<number>”, and
“TimeWeaver_<number>”.
- Register view for a³ C16x changed.
The registers
r0
and r15
which are possible
stack pointer registers are disabled for initialization.
(Which register is used as stack pointer register depends on the
Tasking compiler version).
- Temporary files are deleted as soon as they are not needed anymore.
If a project directory is used for the temporary files (via Files View →
“Keep temporary files in project directory”) then they
are not deleted at all.
- Function names that contain spaces are now handled correctly,
both in the “Analysis Start” dialog and in annotations.
- C source files can now be edited from within the a³ GUI, enabling
AIS annotations to be added directly to the C source code without opening
an external editor.
- The focus in “Results” view is placed on the most
recent analysis result.
- The a³ tool remembers the last directory whenever a new file selection dialogue opens.
- Analysis and Target Configuration Management Extended
(experimental feature):
The configuration management has been extended.
Separate configurations for different analysis items are possible now.
The configuration as introduced in the previous release still exists
and can be referred to as the configuration.
There is a new entry in the Configuration section of the navigation
bar called Configurations. In this section new configurations can
be created with slight changes compared to the
configuration.
New configurations can be given a name. They are derived from the
configuration in the following way (for example to introduce
a different initial value for the stack pointer register for an
aiT analysis item):
- Change to the new Configurations view
- Click the green plus button (+) in the upper part of the view
to add a new configuration beside the default configuration.
- A dialog opens where you can choose the base configuration
which you want to change (usually the configuration)
- Click 'Ok'
- Optionally change the name of the new configuration in the
upper part of the window.
- Select the configuration to be changed by clicking it in the
upper half of the view.
- Click the green plus button (+) in the lower part of the view
to add the item(s) to be changed, e.g.
options/_options/stack_pointer
- A dialog opens to select the configuration item to be changed.
Select one.
- Click in the Value line to change the value of the configuration
item.
- Change to the analysis item for which the configuration should
be changed and select the appropriate configuration name in the
'Configuration:' drop down list.
Please note: this is an experimental feature and the user interface for the
configuration management might change in future releases to
improve its usability. This feature is not documented in the
user documentation yet.
New and extended AIS specifications
The user may use expressions within the following AIS annotations:
- In specifications of register values and definitions of user registers:
INSTRUCTION <PP> IS ENTERED WITH r1 = Expr1, @X = Expr2;
- In declarations of conditional infeasibility:
SNIPPET <S> IS NOT EXECUTED IF Expr;
- In declarations of the values of conditions:
CONDITION <PP> IS (TRUE|FALSE) IF Expr;
CONDITION <PP> IS EXACTLY Expr;
- In parametric loop-bound annotations:
LOOP <PP> MIN Expr1 MAX Expr2;
For more information, refer to the a³ manual, section
“Expressions and their evaluation”.
Changes that affect the toolchain
- Fixes for user-reported and internally detected issues.
- Improved precision of analysis results.
- Significantly decreased overall memory usage and computation time.
Reconstruction of calls and control-flow (exec2crl)
- Improved extraction of DWARF debug information.
- Improved the extraction of AIS annotations from source files.
- Better stack pointer guessing for various compilers.
- Integration of new switch table patterns for supported compilers.
- Changed behavior for mapping parameters default-unroll and max-unroll:
The max-unroll parameter now limits default-unroll.
- PPC: special purpose registers that have different meanings on different
PowerPC variants are now displayed as sprxxx in the disassembly, where
xxx is the number of the register. This avoids confusion caused by
displaying wrong register names.
- ARM: correctly decode
mov
instructions.
- V850:
- Computed branches in
save*
frame routines are
interpreted as returns now.
- New pattern to resolve computed calls automatically.
- X86rm: Intel Hex Reader supports more DOS versions.
- HCS12(X): improved error message, if no memory mapping is specified by the user.
Loop-bound and value analysis
- ValueAnalyzer now reports “nothing to report at all for ValueAnalyzer”
if no assertions are violated.
- Now including user registers in the interactive value analysis view.
- Improved precision for byte and half-word accesses to memory.
- PowerPC:
- Improved precision for
rlwinm
and bitwise instructions.
- Improved loop analysis.
- Correctly cope with
subfze*
and subfme*
instructions.
- TriCore TC1797: added support for floating point instructions
(
ftoiz
, ftouz
).
- V850: added alignment and access width information for
prepare*
and dispose*
instructions.
Pipeline Analysis
- MPC55xx:
- Improved precision of the pipeline analysis with regard to
accesses to the internal FLASH memory.
- Correctly handle sequences of
compare
and conditional-branch
instructions while performing consecutive stores to internal SRAM.
- Correctly cope with refetch-serialized instructions that appear at
the end of basic blocks.
- MPC5xx:
- Added support for the MPC562 microcontroller.
- Improved pipeline state visualization with regard to accesses to DECRAM.
This affects the pipeline analyses for the MPC562, MPC563, and MPC564.
- MPC755s: new handling of burst timing. [X:Y] AACK after 1 bus cycle,
1st TA after X external cycles, etc. Same holds for single-beat transactions,
respectively.
- MPC603e/MPC755s: timing and other area attributes are no longer mixed,
i.e. a read-only attribute (which is a hint for the value analysis) no longer
has any impact on the timing properties of memory regions.
- TriCore TC179x:
- Support for TriCore TC1797.
- External memory: a cached memory region is automatically added for
each uncached region specified in the external memory configuration.
- Pipe NEC V850E1F:
- Added support for the
trncsw
instruction.
- Modeled the fetch buffer according to information from NEC.
This also considers handling of 6-byte and 8-byte instructions.
- Handling misaligned memory accesses (stall condition,
sld
pipeline flow).
Documentation
Each a³ comes with a user documentation in PDF format.
The documentation is up-to-date and the version number
corresponds to the release version number.
Most important changes:
- Description of user registers added.
- Register specifications may involve general AIS expressions.
- Infeasibility can be conditional.
- Condition values can be conditional.
- Description of parametric loop bounds added.
- Description of AIS expressions added.
- Asynchronous clocks can be declared for memory areas.
- Update of description of the specification of timing properties.
For updates of the documentation, please refer to its appendix
“Document History”.