Amadeus: Aspects And Compiler Optimizations For Matlab System Development

João Manuel Paiva Cardoso, Faculdade de Engenharia da Universidade do Porto (FE/UP). €106,000.


Main Research Area: Computer Engineering

Secondary Research Area: Electrical Engineering – Electronics and Computers

Compiler optimizations
System Engineering


106,000.00 €


Main Contractor
Faculdade de Engenharia da Universidade do Porto (FE/UP)

Participating Institutions
Instituto de Desenvolvimento de Novas Tecnologias (UNINOVA/FCT/UNL)
Fundação da Faculdade de Ciências e Tecnologia (FFCT/FCT/UNL)
Universidade do Minho (UM)
Main Research Unit
Instituto de Engenharia de Sistemas e Computadores, Investigação e Desenvolvimento em Lisboa (INESC ID/INESC/IST/UTL)


Principal Investigator
João Manuel Paiva Cardoso
João Alexandre Baptista Vieira Saraiva
João Miguel Lobo Fernandes
Luis Filipe dos Santos Gomes
Miguel Jorge Tavares Pessoa Monteiro
Rui Manuel Carvalho Pais
Anikó Katalin Horváth da Costa
Pedro Nuno Ferreira da Rosa da Cruz Diniz
Pedro Miguel Ribeiro Martins
Tiago Diogo Ribeiro de Carvalho


MATLAB is a high-level, interpreted, domain-specific language (DSL), mainly based on matrix data types and operations on them. The MATLAB environment, the richness of the language, the existence of domain-oriented packages, and the associated software tools, make the language one of the preferred choices to model and simulate complex systems (it is widely used in scientific computing, control systems, signal and image processing, system engineering, etc.). More than 800 books dedicated to MATLAB attest to its wide adoption.

Suitable MATLAB properties include no need to declare variables (floating-point double precision representation is the default data type), operator overloading, function polymorphism and dynamic type specialisation. However, tasks such as exploiting non-uniform fixed-point representations, monitoring certain variables during a timing window, or including handlers to watch specific behaviours are extremely cumbersome, error-prone and tedious. Each time these features are necessary, invasive changes on the original code, as well as insertion of new code need to be performed. This problem is felt in other implementation issues as well, since MATLAB can be regarded as a specification rather than an implementation language. Other open issues are related to efficient automatic synthesis of MATLAB specifications to a software language or a hardware description language.

This project addresses the enrichment of MATLAB with aspect-oriented extensions to include additional information (e.g., type and shape of variables) and to experiment different implementation features (e.g., different implementations for the same function, certain type binding for variables, etc.). The proposed aspects aim to configure the low-level data representation of real variables and expressions, to specifically-tailored data representations that benefit from a more efficient support by target computing engines (e.g., fixed- instead of floating-point representations). The approach also aims to help developers to introduce handlers (code triggered when certain conditions may occur and with a richer functionality than assertions) and monitoring features, and to configure function implementations. We believe aspect-oriented extensions will help system modelling, simulation, and exploration of features conceiving system implementation. One of the advantages is related to the fact that a single version of the specification can be used throughout the entire development cycle rather than maintaining multiple versions, as is currently the case. The project includes research on:

  • aspect mining on MATLAB specifications to identify crosscutting concerns in a system, to enable migration of existing MATLAB specifications to aspect-oriented ones;
  • type inference analysis and memory minimization techniques to generate high-performance code and to achieve highly–abstract aspects.
Posted in Project.