ES_PASS Workshop: Industrialization of Abstract Interpretation 2009
Oct. 28, 2009, Madrid, Spain
Survey on Static Timing
Analysis and Static Stack Usage Analysis
To verify that a safety-critical application meets all requirements lies in
the responsibility of the system designer(s). Classical software validation
methods like code review and testing with debugging are expensive and cannot
really guarantee the absence of errors. In contrast, abstract interpretation
provides a methodology for static program analysis that yields statements
valid for all program runs with all inputs. Employing static analyzers is
thus orthogonal to classical testing.
A possible cause of catastrophic failure is stack overflow. By abstract
interpretation of the stack pointer value, AbsInt's tool StackAnalyzer
figures out how the stack level changes along the various control-flow paths.
The predicted worst-case stack usages of individual tasks in a system can be
used in an automated overall stack usage analysis for all tasks running on
one Electronic Control Unit.
Another cause of failure is the violation of timing constraints. Recent trends,
e.g. in automotive industries (X-by-wire, time-triggered protocols), require
knowledge on the Worst-Case Execution Time (WCET) of each task. Yet WCET
determination is a difficult problem because of the characteristics of modern
software and hardware. AbsInt's tool aiT combines abstract interpretation and
integer linear programming to determine upper bounds for the WCETs of code
snippets given as routines in executables. These bounds are determined without
the need to change the code and hold for all executions.
Back to Program.