Modular Code Generation

Dai Bui, Stavros Tripakis, Christopher Brooks and Edward A. Lee

Center for Hybrid and Embedded Software Systems (CHESS), National Science Foundation 0720882 (CSR-EHS: PRET), National Science Foundation 1035672 (CPS: PTIDES), National Science Foundation 0931843 (ActionWebs), Multiscale Systems Center (MuSyC), Army Research Office 911NF-11-2-0038 (DDoSoS), Air Force Research Lab, Robert Bosch GmBH, 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 have also recently extended 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).
[4]
Stavros Tripakis, Dai Nguyen Bui, Bert Rodiers, Edward A. Lee. Compositionality in Synchronous Data Flow: Modular Code Generation from Hierarchical SDF Graphs (Poster Abstract), ACM/IEEE First International Conference on Cyber-Physical Systems, Raj Rajkumar (ed.), April, 2010.
[5]
Stavros Tripakis, Dai Nguyen Bui, Marc Geilen, Bert Rodiers, Edward A. Lee. Compositionality in Synchronous Data Flow: Modular Code Generation from Hierarchical SDF Graphs, Technical report, UC Berkeley, UCB/EECS-2010-52, May, 2010. To appear to ACM Trans. Embedded Computing Systems