OTAWA is mainly a framework providing facilities to handle programs in machine code and computing WCET (Worst Case Execution Time). Real-time systems are often split in tasks that, in order the system to operate in a safe way, needs to execute before deadlines. To check this deadlines, an important component is the WCET, that is, the maximum execution of a program whatever the considered inputs. To compute WCET in static and sound approach, one has to consider the running hardware and the executed program. OTAWA contributions is two-folds: (a) a set of tool to compute WCET for some hardware platforms and (b) a framework to develop new analyses for new hardware or for experimental purposes.

OTAWA provides a set of command line applications:

  • owcet to compute WCET from a script describing an hardware,
  • oRange to compute loop bounds on C code,
  • mkff to generate flow fact file ready to be filled by the user from binary code,
  • dumpcfg to output CFG (Control Flow Graph) of tasks,
  • odfa to experiment DFA (data flow analyses) on binary code,
  • opcg to dump call graph for a task,
  • odisasm to get a view of the program as understood by OTAWA.

In addition, OTAWA supports the following instruction sets:

  • ARM v5,
  • ARM v7,
  • PowerPC (including VLE mode),
  • Sparc,
  • TriCore,
  • Risc-V

OTAWA provides an extensive support for IPET (Implicit Path Enumeration Technique) for computing WCET but different approaches may be implemented. IPET requires an ILP (Integer Linear Programming) solver:

  • lp_solve v5
  • CPlex

The framework provides a layer independent of the assembly code with several program representations:

  • CFG (Control Flow Graph),
  • PCG (Program Call Graph),
  • loop identification,
  • semantic instruction,
  • context trees,
  • AST (Abstract Syntactic Tree from Heptane tool).

In the framework, the following are available:

  • loop analysis,
  • loop analysis with support of irregular loops,
  • dominance and post-dominance analysis,
  • stack analysis,
  • CLP (Circular Linear Analysis),
  • indirect branch analysis,
  • infeasible path analysis.

To run new static analyses, OTAWA provides different engines:

  • Iterative DFA (Data Flow Analysis) engine,
  • Abstract Interpretation engines.

To support the different hardware pieces, the following analyses are available:

  • extensible basic block time computation based on execution graphs,
  • several instruction powerful cache analyses based on categories approaches,
  • basic and extended data cache analyses,
  • several approaches to support branch prediction.

Through the use of different plugin, OTAWA provides full or partial support for the following hardware:

  • LPC2138 (ARM)
  • Cortex A8 (ARM)
  • MPC5554 (PowerPC)
  • Leon 2 and 3 (Sparc)
  • Cortex M4 (ARM, to come)
  • TriCore Aurix (TriCore)