Modular Code Generation

Edward A. Lee, Dai Bui and Stavros Tripakis

Center for Hybrid and Embedded Software Systems (CHESS), National Science Foundation 0720882, National Science Foundation 0720841, Army Research Office W911NF-07-2-0019, Air Force Office of Scientific Research FA9550-06-0312, Air Force Research Lab FA8750-08-2-0001, California MICRO, Agilent Technologies, Robert Bosch GmBH, Lockheed-Martin, National Instruments, Thales and Toyota

In this project we study how to generate executable code from different high-level models (Simulink, SDF, ...) such that the code preserves the semantics of these models. We focus on models that contain hierarchy as the primary modularity concept, and on modular code generation. Modular means code for a given component (e.g., a composite actor) is generated independently from context (e.g., independently from the diagram in which this actor is embedded). Modular code generation is essential for many reasons, among which is component reuse and incremental/scalable code generation (not having to re-generate code for an entire model when only part of the model changes). Modular code generation also addresses IP (intellectual property) concerns, since it allows to build libraries of pre-compiled components and reuse them without having access to their internals, therefore treating them as "black boxes".

Our approach is based on the notion of "profiles" for each component. Profiles can be seen as abstractions of components, that capture the essential information needed during composition. Modular code generation with profiles is essentially a profile synthesis problem: how to synthesize a profile for a composite block given the profiles of its internal blocks. Multiple profiles may be generated for a given component, with different trade-offs. We have followed this approach to develop modular code generation techniques for synchronous models, such as Simulink and the Synchronous-Reactive domain of Ptolemy II. We are currently extending these methods to SDF (Synchronous Data Flow).

[1]
R. Lublinerman, C. Szegedy and S. Tripakis. Modular Code Generation from Synchronous Block Diagrams: Modularity vs. Code Size. In POPL'09.
[2]
R. Lublinerman and S. Tripakis. Modular Code Generation from Triggered and Timed Block Diagrams. In Real-Time and Embedded Technology and Applications Symposium (RTAS'08).
[3]
R. Lublinerman and S. Tripakis. Modularity vs. Reusability: Code Generation from Synchronous Block Diagrams. In Design, Automation and Test in Europe (DATE'08).