- 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 now
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,
SNIPPET P1 .. P2 IS EVALUATED AS "Name";
should be replaced by
SNIPPET P1 ENDING P2 IS EVALUATED AS "Name";
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 no longer allows 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 instructions:
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)”.