The separation of concerns between functionality and architecture is a powerful technique used to facilitate design reuse at the system level. This separation of concerns and the successive refinement of the design by mapping functionality onto architecture are the core concepts in platform-based design. The goal of mapping is to optimize a set of objective functions while satisfying constraints on the mapped design. The mapping step can be seen as a synthesis process. To gain the benefits of correct-by-construction deployment and rapid design space exploration, neither the semantics nor the abstraction levels for modeling can be chosen in an ad-hoc manner. In this work, we propose a semantics-driven synthesis flow, in which the abstraction level and operational semantics are determined formally by using the concept of a common semantic domain between functionality and architecture. By doing so, a formal synthesis procedure can be defined and algorithms for automatic optimal mapping derived. We demonstrate how this approach can be used to improve the effectiveness of platform-based design in several case studies.