Skip over menu

Software Safety Home Page
Esterel Synchronous Language
Last Modified on: Fri Sep 26 20:15:09 2008
Navigation Menu Left:

Books to read
Compliers with safety in mind
Esterel.org Reactive Programing Language
Guidelines for better software
Hardware Design Tips
ISO9000, the correct meaning
Internationalization (I18N & L10)
Jobs

Esterel Synchronous Language

Navigation Menu Right:

Metrics Gone Bad
Metrics
Past Visitors
Photosensitive Epilepsy
Quality
Software Patents Gone Bad
Tools
Translate the Software Safety web site




If you think that I could be of some assistance to you or your organization let me know,
American Society for Quality  Certified Software Quality Engineer.

Software Safety now has a blog! Check it out.

This site has been listed as the EG3 Editor's Choice in the Embedded Safety category for February 2004.

eCLIPS gives this site four of five stars in the September 7th 2004 SAFETY CRITICAL - DESIGN GUIDE.


PicoSearch
  Help
Site Search by PicoSearch 
Text Search



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

Welcome to Esterel and Synchronous Reactive Programming !

Esterel is both a programming language, dedicated to programming reactive systems, and a compiler which translates Esterel programs into finite-state machines. It is one of a family of synchronous languages, like SyncCharts, Lustre, Argos or Signal, which are particularly well-suited to programming reactive systems, including real-time systems and control automata.

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].


 
Esterel: a Synchronous Reactive Programming Language




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 is a programming language dedicated to control-dominated reactive systems, such as control circuits, embedded systems, human-machine interface, or communication protocols.

It belongs to the family of synchronous languages, which also includes Lustre,
Signal, and SyncCharts. Esterel has been developed since 1983 at CMA (Applied Mathematics Center, Ecole des Mines de Paris), and INRIA in Sophia-Antipolis.

The language is presented in The Esterel Primer (pdf). It has a rigorous mathematical semantics presented in The Constructive Semantics of Pure Esterel (ps). The toolset includes a compiler to software or hardware, a graphical simulator, a verification system, and optimizers.
Download it
.
  


If you want to know much more about Esterel, we encourage you to read the complete Esterel history.
Just click here if you want to discover the beautiful Esterel mountain range

 

Esterel Downloads
 
   
 
 Software Downloads
 

 

 

 

 

 
 T
he 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.

     
 Compiler
   Release Notes
 Esterel v5_92 The current official version. Supports the pre operator for signals and values  V5_92 Release Notes


 
   fsm-verify the new FSM behavior equivalence checker
 An Esterel to TeX setting environment. 
   Basicopt: An Esterel code optimizer (version 1.1). 
 A Boolean datapath generator for Esterel programs
 Java code generator
 Program Lego Mindstorms Robots using Esterel Or Lustre

 


Select from the menu other areas of Software Safety that you would like to explore.


If you think that I could be of some assistance to you or your organization let me know,
American Society for Quality  Certified Software Quality Engineer.




Go Back To The  Software Safety Home Page