An AADL model processing suite

What is AADL?

“AADL” stands for Architecture Analysis & Design Language. The aim of the AADL is to allow the description of Distributed Real-Time Embedded (DRE) systems by assembling separately developed blocks. Thus it focuses on the definition of clear block interfaces, and separates the implementations from those interfaces. AADL allows for the description of both software and hardware parts of a system.

More information can be found on the AADL web site: http://www.aadl.info.

The Ocarina tool suite

Ocarina is a tool suite written in Ada to manipulate AADL models. Ocarina proposes AADL model manipulation, generation of formal models, perform scheduling analysis and generate distributed applications. It is developed by Télécom Paris.

Ocarina libraries

The Ocarina libraries constitute the central core that provides functions to manipulate an AADL model:

  • an API to build or access the elements of the model (e.g. packages, components, etc.);
  • functions to scan the model; you can associate callback functions to all kind of elements in order to process the model automatically;
  • functions to find elements in the model.

Modules are built around this core, e.g. parsers and printers for different syntaxes; code generators; model analyzers ..

Ocarina modules

We have developed the following modules for Ocarina:

AADL parser and pretty printer

An AADL parser/printer has been developped to help validating and reformatting AADL models. It can read an AADL description spread over multiple files. A parser/printer for Dia is also included to manage the graphical representation of the AADL.

Ocarina fully support all constructs from AADL 1.0.

Code generators for distributed application

AADL descriptions can be processed to fully deduce and then generate the configuration of the middleware. This approach allows one to describe an application and then fully generate it. This reduces the error-prone process of configuring complex runtime like CORBA middleware.

The current version of Ocarina allows the user to generate code from an AADL architecture description towards an Ada application running on top of PolyORB. In this context, PolyORB acts as both the distribution middleware and execution runtime on all targets supported by PolyORB.

Code generators for distributed high-integrity application

In addition to the previous generator, a specific run-time for distributed high-integrity applications based on the Ada Ravenscar profile has been designed, PolyORB-HI. This runtime inherits concepts from the PolyORB middleware, while using a high-integrity compliant source base. Two target languages are supported: Ada 2005 and C.

  • Ada 2005 generated code can be run on both native platforms (e.g. GNU/Linux or Solaris for testing purposes); and on ERC32 and LEON bare board targets for precise real-time performances using GNAT Pro Safety-Critical. Communication between nodes can be enabled, with current support for sockets on native platforms, and the SpaceWire fieldbus on LEON boards.
  • C generated code can be run on both POSIX or RTEMS platforms. Tested platforms include GNU/Linux, Solaris, Linux on embedded targets (e.g. Nintendo DS, Noka N770) and LEON2 and PPC RTEMS BSPs.
Third-party tools using Ocarina

Cheddar: our AADL toolsuite Ocarina is used to support the schedulabity analysis of AADL models.

Research work around AADL at Telecom Paris

Our team from Télécom Paris is using the AADL as a vehicle to describe, deploy and build Distributed Real-Time and Embedded systems.

We are member of the SAE AADL commitee, and are involved in the AADL standardisation process. We propose extensions to the AADL to ease the description of distributed applications. We also make contributions to enable code generation from AADL models.

A detailed list of our research activities is provided as part of our ongoing publication work around Ocarina and the AADL, see our research web site at the Telecom Paris for more details.


Ocarina source and binaries, including AADL examples, for most platforms can be downloaded from this link.


Ocarina has been developed in Ada with the GNAT toolchain. It has been tested under Linux, Mac OS X, Windows and Solaris.

Authors and contributors

Ocarina is primarily developed by Bechir Zalila, Jérôme Hugues and Laurent Pautet.

The following people also contributed to the project:

  • Thomas Vergnaud (initial architecture of Ocarina);
  • Vo Ngoc Minh (the first version of the AADL parser/printer);
  • David Abad-Garcia (the first version of the code generator);
  • Julien Delange (C code generator);
  • Olivier Gilles (the first version of the Petri net generator);
  • Pierre Duquesne (the Dia plug-in);
  • Lionel Besson, Julien Mairal, Stéphane Lescuyer & Stéphan Mir (the Dia module of Ocarina).


Related Web Sites

The following are some useful related web sites:

  • Libre software for Ada
    This page provides several packages and libraries that can be used with the Ada language, including the GNAT compiler, GtkAda, a graphical toolkit, and GVD, a graphical debugger.
  • SAE AADL Standard Info Site
    This page provides up-to-date information on AADL, the standard and tutorials.

Mailing lists

The list Ocarina-Users serves as a informal forum for technical discussions about Ocarina among users.