The rigorous design of embedded systems radically differs from pure software design in that it should take into account not only functional but also extra-functional specifications regarding the use of resources of the execution platform such as time, memory and energy. This paper surveys well-established/recent tools and techniques developed for the design of rigorous embedded systems. The authors will first survey UPPAAL and MODEST, two tools capable of dealing with both timed and stochastic aspects. Then, they will overview the BIP framework for modular design and code generation. Finally, model-based testing will be discussed.