Description
The amount and complexity of software in embedded control systems is increasing rapidly. This factor, together with the wide use of distributed platforms and the tight design requirements, raises great challenges to software design and development in these systems. However, the current design practice is largely manual and ad-hoc, especially at the system level, which produces suboptimal and unreliable systems. In this dissertation, we propose a systematic software synthesis flow to address some of the pressing issues in software design, in particular the heterogenity of the design inputs, the complexity of the design space, and the semantic difference between the functional specification and the implementation platform. The flow consists of a front-end that translates heterogeneous input specification into a unified representation, and a back-end that conducts automatic design space exploration and code generation. We define an intermediate format (IF) as the unified representation, and develop translators from input models to IF and from IF to output code. We design algorithms to explore the design space during mapping from the functional specification to the architectural platform, with respect to design metrics such as cost, latency and extensibility. We also propose approaches to synthesize the communication interfaces between software tasks to guarantee the semantic equivalence of the distributed implementation with respect to the synchronous specification. The applicability of the synthesis flow is illustrated with case studies from the building automation and automotive domains. The results showed that the flow can be effectively applied to widely different applications in different domains.