aiT WCET Analyzer is now available for MPC5777C.
.apz
is now used for workspaces
to distinguish them from normal .apx
project files.The new default is "Auto", which heuristically decides whether the more precise Pipeline state level is feasible or not. Explicitly specifying the desired level overrules the heuristics.
/?xml
to the URL:
http://<your license server name>:42425/?xml
qk_ais2_wcet_code_snippets
to cover new variant of code snippet annotations.
qk_ais2_program_point_base_source
to cover usage of match functor inside program point base specifications.
qk_ais2_area_definitions_simple
to cover usage of match functor inside section() functor for area construction.
qk_ais2_expression_enum_values
to cover all possible usages of the enumerator values.
qk_ais2_no_value_token_allocation | all architectures |
qk_ais2_allow_decoder_to_read_from_writable_memory | all except dsPIC |
qk_ais2_routine_snippet_timing qk_setting_output_variable_usage_statistics qk_setting_output_object_size_statistics | all WCET |
The GUI now automatically annotates the base address of the core special function register (CSFR) depending on the selected core.
.ais
.routine "init" dump: "msg_length" instruction "init" -> write(3) dump: "can_msg_buffer";See the user manual for more details.
preserves: stack;
. See the user manual for details.attribute "allow_decoder_to_read_from_writable_memory": false|true;
iterative collect initialization;allows to enable an iterative collect analysis that will use the collected content it produces itself during the iterative decoding phase. This allows e.g. to collect function pointers to further init functions that are later used by the
init
function
itself to trigger more initialization code.enum
functor to allow for lookup
via enum types and regular expressions:
# lookup by enumerator name enum("<name>") # lookup by enumerator name regex enum(match("<name_regex>")) # lookup by enum type name enum(type("<type>")) # lookup by enum type name regex enum(type(match("<type_regex>"))) # lookup by enumerator name and enum type name enum("<name>", type("<type>")) # lookup by enumerator name regex and enum type name enum(match("<name_regex>"), type("<type>")) # lookup by enumerator name and enum type name regex enum("<name>", type(match("<type_regex>"))) # lookup by enumerator name regex and enum type name regex enum(match("<name_regex>"), type(match("<type_regex>")))
max length: [3, inf];yields a resulting maximum call string length of inf , i.e., unbounded.
default unroll: -5..8;yields an upper bound for the number of individual loop contexts of 8.
vtable
contents.area 0x9004aa44 width 4 { volatile: true; }the hints will now say something like
area ("MemoryBlockInfo"."HandlerFunction_pt") { volatile: true; }
PSW.IS
is zero and the target of SYSCALL
/TRAPSV
/TRAPV
is external,
in order to prevent an unknown user stack result due to the switch to interrupt stack. Example:
isa-tricore: Info #3080: In routine 'test_trap', at address 0x80005918:
The relative stack height becomes unknown.
The value analysis results might be imprecise.
Annotation proposal:
instruction "test_trap" -> computed(2) { stack effect: <int> bytes; }
isa-tricore: Info #3094: In routine 'test_trap', at address 0x80005918:
Automatically applied a stack height annotation of [8] bytes.
SYSCALL
,
TRAPSV
, TRAPV
independently of the value of PSW.IS
.PSW.PRS
, PSW.S
,
PSW.FX
, PSW.CDE
, PSW.CDC
,
PCXI.PCPN
, PCXI.PIE
, PCXI.UL
,
and ICR are not explicitly modelled. They behave as if they always contain an unknown value.trapv
and trapsv
if the target is not explicitly resolvedEIWR
and FEWR
STC.W
during value analysisand
operations if value sets are enabledisa-c16x: Info: Value analyzer iteration statistics (percent of processed nodes * contexts / routine): 29% of iteration in '__flsbuf' 10% of iteration in '_inSet' 10% of iteration in '_UpSet.L1' 7% of iteration in '_addSet' 7% of iteration in '_putSet.L2' 5% of iteration in '_cleanup.L1'