a³ Release 10.04

New target
aiT WCET analysis module now available for the IBM PowerPC750.

Qualification Support Kits (QSKs)
* Original measurements contained in QSKs.
* New QSK available for the aiT module of a³ for PPC750.

a³ launcher
* Improved XTC 2.0 support.
* Extended XTC 1.0 support.
* Improved batch mode.
* New command line option -B for interactive batch mode.
* New command line option -i to start specific analyses in batch mode.
* Improved handling of XTC requests. Global settings are propagated
  to following analyses, to avoid the need of reconfiguring the target
  for each analysis.

a³ toolchain
* XML reports are now generated for each analysis separately.
  There is no global XML report anymore.
* XML reports now include notes, infos, warnings and errors
  (but no progress and debug messages).
* Text report per analysis now available in addition to global text reports.
* a³ works on projects located on network shares accessed via UNC paths.
* The intermediate files used during the analyses (CRL files,
  section files, DWARF debug info) are now compressed with zlib.
* Output correct types for analysis results in XML results file.
* Mini-dump support for complete tool-chain, if abnormal
  program terminations occur.
* Better checking of available main memory for analysis. For example,
  the user cannot specify more memory to use than the machine has.
* For convenience reasons, the tool chain no longer floods the user
  with identical messages, such as write accesses into read-only
  memory regions. This behavior is configurable in the a³ GUI under
  Configuration -> Analyses -> General -> All Analyses ->
  Reduce number of identical messages.
* Improved detection of multiple disjoint precise memory accesses.

* Improved source code visualisation in graphs.
* Extended PDF output functionality.

a³ GUI
* The performance of the a³ GUI has been greatly improved
  for large project files with multiple analyses.
* Content of data sections only visible in Sections view,
  no longer in Disassembly view. This will increase the speed
  of the disassembly browser and decrease memory usage.
* New command line option -B for interactive batch mode.
* New command line option -i to start specific analyses in batch mode.
* Global Preferences dialog in a³.
* Debug view:
  * Improved speed and memory consumption of debug view
    for variables and functions.
  * When searching in the Debug view, the results are now
    filtered rather than highlighted.
* Enhanced readability of Disassembly view.
* On opening examples, a³ now offers the option of copying standard examples
  to a directory where the user can modify them.
* Improved speed of debugging reader, avoiding freezes during project load.
* Changed advanced analysis options:
  * "Maximum Memory Usage" now set in percentages (1-100%, default is 50%)
    instead of hard memory sizes. This allows better portability of a project
    from one machine to another. Old settings will be imported, "automatic"
    will be translated to 100%, otherwise percentage of RAM of machine
    is calculated and stored.
  * Changed "Widening Threshold" to "Enable Widening For Cache States",
    only allowing to activate (default) or deactivate this. For most
    complex architectures, deactivation will lead to high memory consumption
    and very long analysis time. Old settings will be imported; if a widening
    threshold other than 0 was specified, it will be translated to "activated".
* Allow user to request license per email.
* The a³ GUI now provides a visual feedback for any background activity
  (extraction of symbols, running analyses, etc). The current activity and
  its progress is reported in a small widget that appears in the bottom left
  corner of the a³ window.
* "Collapse all" context menu entry to remove all splitters.
* Re-enabled import of control files (generated by old aiT GUI)
  via a button on the Analysis Overview page.
* The section dialog now shows the address of a byte within the section,
  when hovering over that byte.
* Projects can now be exported to a target directory or a ZIP file.
  This feature comes in handy when exchanging project data.
* Interactive analysis results can now be converted into AIS annotations
  that can be used for further analyses.
* The user can now clone existing analyses on the Analysis Overview page.
* WCET analysis: the GUI now displays a table showing (cumulative)
  WCET contributions for each routine.
* Improved search in the disassembly view.
* Improved handling of multiple configurations inside one project.
* Instructions annotated in the AIS file are now highlighted throughout the GUI:
  * in the Graph view on instruction level
  * in the Disassembly view
  * in the Source Files view
  The highlighted instructions are also linked to the corresponding line
  in the AIS file.
* a³ now officially supports the XTC exchange format. The user may generate
  XTC requests and import XTC responses. So far only T1 is supported.
  T1 can measure unknown loop bounds (and, in the future, targets
  of unresolved computed calls).
* If the specified machine settings file does not exist, the manually
  specified machine settings are now taken without a warning.
* Fixed possible a³ crash if analysis name is changed.
* Fixed problem with multiple warnings about not writable project directory.
* Correctly handle paged addresses in the Sections view.
* Improved sorting of entries in the Symbol view.
* Old analysis results are deleted from the Overview page on analysis re-start.
* Am486, i386:
  * User can now set up TSS address.
  * Improved import of legacy APF project files.

a³ GUI -- Graph view
* It is now possible to quickly jump between functions by using
  a drop-down menu in the bottom right corner of the window.
  The function that is currently in focus in the graph window
  is always automatically pre-selected in the drop-down menu.
* Show the correct graph when entering the panner mode.
* Better interaction between Graph view and Source Code view.
* Neighbors of instruction nodes can now be quickly navigated to via the entry
  "Goto neighbor" in the context menu. This is especially useful for jumping
  between the start and end instruction of a large loop that doesn't
  completely fit into the graph window.

a³ GUI -- text editor
* Printing functionality has been added to the text editors.
* Improved AIS syntax highlighting.
* Improved handling of relative filenames in the AIS editor.
* The GUI now shows the absolute paths of opened files
 (e.g., edited AIS files).
* Improved usability of the AIS file editor.
* "File modified" warnings caused by multiple AIS file editor
  instances are now avoided by sharing the AIS editor widgets
  among the project instance.

* Additional start points for the analysis can now be specified, for example
  to compute WCETs of subroutines:

    routine "R" is additional start;

  For each start point (main start point plus additional start points),
  aiT performs a separate cache and pipeline analysis, followed by
  path analysis and visualization of results. Each of the separate analyses
  uses the common value analysis information computed from the main
  start point. For further information, refer to the user manual,
  section "Additional Start Points for Timing Analysis".
* Stack analysis: descriptions of calls or branches via arrays/tables
  may involve indirections. Arrays may be null-terminated, and the access
  may be restricted to special indices. For further information,
  refer to the user manual, section "Indirect Calls or Branches
  via Arrays of Function Pointers or Switch Tables".
* There is an incompatible syntax change regarding the request of
  "WCET contribution of code snippets". For instance,


  should be replaced by


  For information on backwards compatibility, refer to the user manual,
  section "WCET Contribution of Code Snippets".
* The annotation to add execution time to the standard instruction timing
  has become more powerful:

    instruction <PP> additionally takes <time>
    [and features dispatch_stall = 1] ;

  where <time> is now a generic expression of type "machine cycles"
  as described in the user manual. Conversion from old syntax is explained
  in the user manual as well.
* New "assert" annotation allows specifying certain conditions
  (e.g., values of registers or memory cells) that hold at certain
  program points:

    assert instruction "R" is entered with always (r5 == 5);

  For further information, refer to the user manual.
* The "max-unroll" parameter can now be set for individual loops:

    loop "R" + 1 loop max 20
    and max-unroll = 10;

  Note that the local max-unroll parameter overrides the global specification.
  For further information, refer to the user manual.
* AIS does no longer allow empty strings as program point names.
  Errors will be issued for annotations containing such empty names.
* The comma after "interproc flexible" is now optional.
  This was a common typo and is now official syntax.
* The user can now disable the target check of control-flow changing

    instruction <PP> skip target check;

* Changes to expressions:
  * New expression "inf" stands for a value larger than any
    representable number. "undef" is now deprecated and should be
    replaced with "(-inf..inf)".
  * New "switch" expression.
  * Space units such as "bytes" can be used in expressions.
  * Time units such as "cycles" can be used in expressions.
  * Operands of unary functions must be parenthesized in expressions.
* Am486, LEON2, LEON3, MPC55xx, MPC603e, MPC7448(s),
  MPC750(s), MPC755(s), TriCore:
  cache flushes at not-analyzed code snippets can now be disabled via

    global disable_external_cache_flush = 1;

* Am486, i386, LEON2, LEON3, MPC55xx, MPC603e, MPC7448(s),
  MPC750(s), MPC755(s), TriCore, V850:
  pipeline flushes at not-analyzed code snippets can now be disabled via

    global disable_external_pipeline_flush = 1;

* MPC603e, MPC7448(s), MPC755(s): timing properties of asynchronous memory
  can now be specified in bus cycles or external cycles.
* HC11, HC12: new annotations for interrupt routines via SWI.
  Old SWI annotations are deprecated and should be rewritten.
  For further information, refer to the user manual, section
  "Software Interrupts (SWI)".

* Improved encoding handling: AIS files and source files are first tried
  to be read as UTF-8, else fallback to CP1252 (Latin).
* If register values are specified or detection of them is disabled,
  decoding will skip output about them.
* Fixed source line counting in the Files view.
* Improved GNAT support, per default assuming no exceptions occur and
  marking them as infeasible and not analyzed.
* Prefer DWARF2 over DWARF1, if both debug infos are found.
* Better error reporting if switch table patterns cannot read the table
  from the executable.
* Detected irreducible loops and recursions are reported as info messages.
* Exception routines from ADA can now be excluded from the analysis.
* For the GHS compiler, short versions of symbols can now be used, e.g.
  "test" instead of "test@abc/def/testapp.c"
* AIS:
  * AIS labels can be forced to replace routine names in graphs and report files:

      LABEL R = force L;

  * The label annotation can now define ranges, too:

      LABEL a .. b = s;

* ARM7:
  * Implemented handling of __ARM_switch8.
  * Internal compiler generated symbols such as $p are hidden
    in the symbol table.
  * Improved decoding of various switch table types.
  * Allowed analysing __rt_lib_init.
  * Improved detection of call instructions.
  * Improved decoding for multiply-instructions.
  * Improved mnemonics for some instructions.
  * Improved handling of unresolved computed branches and annotations
    resolving computed branches.
  * Improved decoding of computed branches.
* C16x:
  * Improved decoding for indirect movb and SFR/ESFR bit manipulation.
  * Added "#" before segment number in assembly string for "exts"
    and "extsr".
* C33: correct order of registers of parallel multiply instructions.
* H8: added support for ELF files generated by H8/GNU GCC.
* HCS12:
  * Improved support for HCS12X with Metrowerks/Codewarrior compiler.
  * Removed page restrictions for special HCS12X derivates.
  * bgnd instruction changed from "unresolved computed call"
    to a "trap" with the name "bgnd".
* M68020:
  * Improved decoding of moves.
  * Added support for static data symbols from AOL files:

      => SYMBOL@static@FILENAME

  * Added possibility to differentiate labels from AOL files
    in different ADA sources:


* PPC:
  * Improved decoding for loops starting at routine entry.
  * More switch table patterns (DiabData + AdaCore GNAT).
* SPARC (LEON2/3):
  * Improved switch table patterns.
  * Improved trap handling.
  * Detect returning calls immediately.
* V850:
  * Improved switch table patterns.
  * Support for full 29-bit code address space for the E2 core
    and full 26-bit code address space for the E1 core.
  * Improved return handling.
* X86:
  * Enhanced handling of descriptor tables.
  * Improved decoding of switch tables.

Loop analysis
* Improved handling of nested loops.
* PPC: special TargetLink/SCADE loop patterns for value analysis
  are now activated by options in the GUI ("General" -> "Loop Analysis")
  rather than by license features.

Value analysis
* Much faster extended feasibility analysis.
* Improved precision of extended feasibility analysis.
* Improved precision by using minimal loop bound to calculate
  infeasible paths.
* Improved handling of the "routine <programpoint> is interesting"
* Improved handling of the "area <area> is watched" annotation.
* Greatly improved check for target feasibility on computed branches,
  computed calls and return instructions. This improvement is not yet
  available for HC12/HCS12, C166, and x86. For further information,
  refer to the user manual, section "Target Check".
* ARM: more precise handling of guarded code.
* M68020: improved precision for M68k bitfield instructions.
* V850: added support for V850E/FK3-H (PD70F3469) and V850E2/Fx4-H (PD70F3501).
* X86:
  * Improved precision for load segment limit instruction.
  * Improved precision for memory accesses caused by gate calls
    with and without privilege level changes.

Stack analysis
* StackAnalyzer will report all known strongly connected components (SCCs)
  if unbounded recursion is found.

Path analysis
* "snippet ... is evaluated as ..." supported by predan/predpathan.

Pipeline analysis
* Am486:
  * Optimized processor model thanks to further validation with hardware traces.
  * Added support for new instructions verified via measurements:
    * normal far call/return
    * far call/return through callgate, same privilege level
    * far call/return through callgate, different privilege levels
    * iret, same privilege level
    * lsl
* ARM7:
  * Improved precision of the UCB analysis.
  * Dropped support for FLASH modules.
  * Added support for disjoint instruction and data caches (TimingExplorer).
  * Added support for burst accesses (TimingExplorer).
* C16x:
  * Improved analysis precision.
  * Improved analysis runtime and memory consumption.
* HC11: improved analysis runtime and memory consumption.
* LEON2:
  * The instruction burst fetch can now be disabled in the cache configuration
    dialog. This corresponds to the instruction burst fetch (IB) bit in the
    cache configuration register (CCR).
  * Improved precision of the cache fill operation when burst-fetching
* M68020: added support for priviledged move instruction reading from
  or writing to the status register. Reduced overestimation of the fmove
  instruction reading from or writing to the MPU data register.
* MPC5xx:
  * Memory areas with external transfer acknowledge are now supported.
    The timing properties of such areas must be specified in AIS.
  * Improved the processor's internal memory model.
  * Fixed handling of multiple subsequent tail instructions.
  * Implemented the USIU burst feature. Added support for eight-word bursts.
* MPC55xx:
  * Improved data cache analysis precision.
  * Improved the precision of the analysis with respect to memory accesses
    targeting the internal FLASH module.
* MPC7448: improved handling of external program snippets.
* MPC603e, MPC755, MPC7448:
  * Added support for more than 32 persistence scopes.
  * The user may now specify timing ranges for single memory accesses
    instead of a precise number of cycles.
* V850:
  * Added support for V850E/FK3-H (PD70F3469) and V850E2/Fx4-H (PD70F3501).
  * Improved the processor's internal pipeline model (V850E/PHO3).
  * Improved handling of external program snippets.

Last modified on 13 April 2010 by alex@absint.com.
Copyright 2010 AbsInt. http://www.absint.com/
An HTML version of these release notes is available at