Skip to Main Content
The tutorial presents the synchronous methodology for the design of hardware, software, or mixed embedded systems. This methodology was initially developed in the mid 80's in research, with the creation of synchronous languages such as Esterel, Lustre, or Signal. It became industrial in the 90's and is now used in a wide range of applications, from the design of safety-critical systems in avionics or automobile to the design and verification of complex electronic circuits and Systems on Chip. We first present the basic cycle-based synchronous computation model and give a general overview of synchronous techniques, tools, and application areas. We explain why the synchronous approach makes design safer and verification simpler and we give industrial references. We then address the following technical issues: textual vs. graphical specification; sequencing, concurrency, and preemption; control path vs. data path; optimized hardware and software synthesis; formal verification of assertions and properties. We illustrate the topics by various examples, using the Esterel Studio system for demos. Finally, we show how synchronous techniques make it possible to generate hardware or software from the same specification and with the very same semantics, and how they fit in conventional hardware and software workflows.