The goal of the Metropolis project is to provide a framework for modeling embedded systems across several levels of abstraction, from functional (untimed) to RTL, for various implementation choices, from dedicated hardware to programmable hardware and processors. Emphasis is placed on formal specification and refinement, in order to allow one to apply both synthesis, analysis and verification algorithms at all steps of design. The framework itself provides some such algorithms, as well as allowing one to “plug in” new ones. In this paper we focus on the embedded software design problem, starting from abstract specifications, then decomposing them into networks of processes and communication media, and finally mapping them onto a platform including a processor, a Real Time Operating System and communication components. We illustrate how a clean separation of concerns between functionality and interfaces, as well as between computation and communication, leads to better re-use and a more optimized implementation. We also discuss how the problem of efficiently mapping a process network to a software platform can be formulated and solved.
Balarin, F., Lavagno, L., Passerone, C., & Watanabe, Y. (2002). Processes, interfaces and platforms. Embedded software modeling in metropolis. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 2491, pp. 407–421). Springer Verlag. https://doi.org/10.1007/3-540-45828-x_30