In this paper we present an embedded systems design flow, supporting variations in technology — hardware vs. software — at implementation time. The work builds on seasoned and new approaches, tools and techniques, such as software production lines, FPGA design, and high level synthesis. We define the necessary context for such a design flow to succeed, and introduce supporting tools and interfaces to enable the designer to take decisions, which are further automatically transferred into the synthesis phases. We exemplify our solutions on a motor controller design, considering several features that are potentially required to be implemented, and where all the elements are possible to be implemented either as hardware or software modules.