|
Esterel Synchronous Language |
|
Synchronous Languages, Applications, and Programming
Synchronous languages have been introduced in the 80s to program reactive systems. Such systems are characterized by their continuous reaction to their environment. Synchronous languages have recently seen a tremendous interest from leading companies developing automatic control software for critical applications. For instance, Schneider Electric uses a Lustre-based tool, named Scade, to develop the control software for nuclear plants. Aerospatiale also uses this tool to develop the flight control of the new Airbus planes. Dassault Aviation uses Esterel Studio to program the flight control software of the Rafale fighter. Snecma uses Sildex, a Signal-based tool to develop airplane engines. ST Microelectronics, Texas Instrument, Motorola, Intel, are also interested in the Esterel technology for chip design. The key advantage pointed by these companies is that the synchronous approach has a rigorous mathematical semantics which allows the programmers to develop critical software faster and better.
Indeed, the semantics of the languages is used as a formal model upon which all the programming environments are defined. The compilation involves the construction of these formal models, and their analysis for static properties, their optimization, the synthesis of executable sequential implementations, the automated distribution of programs. It can also build a model of the dynamical behaviors, in the form of a transition system, upon which are based the analysis of dynamical properties, e.g., through model-checking based verification, or discrete controller synthesis. Hence, synchronous programming is at the cross-roads of many approaches in compilation, formal analysis and verification techniques, and software or hardware implementations generation. The approach is related to formal methods for reactive systems like Statecharts, StateFlow, UML StateCharts.
I wanted to learn the language Esterel because of its claimed vitures of being able to reduce cost and development time of embedded systems by 50%.
Alas all of the searches I did to learn more about Esterel always pointed me to the now defunct site http://www.esterel.org/. At one time there was a lot of good information on that site. Cybersquaters should be outlawed. :-(
So I spent lots of time digging up the papers and examples that once where found on http://www.esterel.org/. My recreation here is to help those of you that also want to learn Esterel but could not find what you needed. This site is in no way officially related to any of the Esterel companies or university programs.
I'm rebuilding the http://www.esterel.org/ site as my limited time permits. If there is some thing specific that you need, send me an email and I'll put it at the top of the list of stuff to add. I know many of the links below do not work yet.
To prove that Esterel would run on small micros I entered the classic Esterel Reflex Game into the 2003 Zilog Z8Encore! Flash for Cash International Design Contest, administrated by Circuit Cellar Magazine. My entry won a Distinctive Excellence prize.
You can see an updated version of this entry in HTML or PDF format. You can down load the source code to tryout Esterel on your own ZDS-II.
I used the open-source CEC: Columbia Esterel Compiler, for the majority of my testing.
A quick guide [syssafe21.pdf] to the language constructs, syntax, and semantics.
Then take a look at The Esterel Primer [primer.pdf].
Esterel is a system-design language that can be used to generate complex state machines automatically. Because of its textual (rather than graphical) nature, and because of its compositional facilities, you can use it to write compact specifications for systems with complex state machines. Here's an overview of Esterel's syntax and usage by Girish Keshav Palshikar.
The ESTEREL Language |
---|
The Esterel v5 compiler can be used to generate a software or hardware implementation of a reactive program. It can generate C-code to be embedded as a reactive kernel in a larger program that handles the interface and data manipulations. It can also generate hardware in the form of netlists of gates, which can then be embedded in a larger system. Extensive optimization is available. We provide a graphical symbolic debugger for Esterel. We also provide support for explicit or BDD-based verification tools that perform either bisimulation reduction or safety property checking.
Esterel is now experimentally used by several companies and taught in several universities. It has been chosen by the Polis group as one of their input languages for their hardware/software co-design system.
This document is a part of the Esterel Primer that can be used as a stand-alone quick guide to the language constructs, syntax, and semantics. We assume that the reader is already familiar with the foundations of Esterel: reactive systems, signals, events, instantaneous broadcasting and control transmission, etc. These are abundantly described in the references [4, 7, 1, 2, 9, 8]. For fine points, please refer to the Esterel Reference Manual [5] and Constructive Semantics definition [3].
|
|
What you need most is an Esterel compiler to play with, which you can find here: http://www.esterel-technologies.com/ under the "Download" section in the menu.
The free Esterel Technologies compiler comes with the XES simulator so you can start to play with Esterel, without having to build any hardware.
Then take a look at The Esterel Primer (pdf).
About
Esterel
|
|
|
Esterel
Downloads
|
|
||||||||||||||||||||||||||||
|
The Esterel compiler can be used to generate a software or hardware implementation of a reactive program. It can generate C-code to be embedded as a reactive kernel in a larger program that handles the interface and data manipulations. It can also generate hardware in the form of netlists of gates, which can then be embedded in a larger system. We provide a graphical symbolic debugger for Esterel, extensive optimization tools, and interface with explicit or BDD-based verification tools that perform either bisimulation reduction or safety property checking.
|
|||||||||||||||||||||||||||