|
|
<b>To cite this work</b>, please cite
|
|
**To cite this work**, please cite [this](http://hal.inria.fr/inria-00638936)
|
|
|
<a href="http://hal.inria.fr/inria-00638936">this</a>
|
|
or [this](http://hal.archives-ouvertes.fr/hal-00688490)
|
|
|
or <a href="http://hal.archives-ouvertes.fr/hal-00688490">this</a>.
|
|
|
|
|
|
|
|
|
|
<i>Prelude</i> is a high-level language for programming real-time embedded control systems. It is a data-flow synchronous language, similar to <a href="http://en.wikipedia.org/wiki/Lustre_%28programming_language%29">Lustre</a>. It provides real-time primitives for the programming of multi-periodic systems. Compared to other synchronous languages, it considers a higher layer of abstraction. It can be considered as a real-time software architecture language, designed to assemble locally mono-periodic synchronous systems into a globally multi-periodic synchronous ones. <br><br>
|
|
*Prelude* is a high-level language for programming real-time embedded control systems. It is a data-flow synchronous language, similar to [Lustre](http://en.wikipedia.org/wiki/Lustre_%28programming_language%29). It provides real-time primitives for the programming of multi-periodic systems. Compared to other synchronous languages, it considers a higher layer of abstraction. It can be considered as a real-time software architecture language, designed to assemble locally mono-periodic synchronous systems into a globally multi-periodic synchronous ones.
|
|
|
|
|
|
|
|
The <i>preludec</i> compiler generates synchronized multi-task C code, that is independent of the target OS. Communication is achieved by a tailor-made buffering communication protocol. The compilation is defined formally and produces code that respects the temporal semantics of the original program (periods,
|
|
The *preludec* compiler generates synchronized multi-task C code, that is independent of the target OS. Communication is achieved by a tailor-made buffering communication protocol. The compilation is defined formally and produces code that respects the temporal semantics of the original program (periods,
|
|
|
deadlines, release dates and precedence constraints), as well as its functional semantics (data-dependencies). The Prelude compiler produces code for either monocore or multicore architectures.<br>
|
|
deadlines, release dates and precedence constraints), as well as its functional semantics (data-dependencies). The Prelude compiler produces code for either monocore or multicore architectures.
|
|
|
|
|
|
|
|
<h3>Documentation</h3>
|
|
## Documentation
|
|
|
|
|
|
|
|
<ul>
|
|
- [Master course](http://www.cristal.univ-lille.fr/%7Eforget/prelude/Prelude-course.pdf)
|
|
|
<li> Master course <a href="http://www.cristal.univ-lille.fr/%7Eforget/prelude/Prelude-course.pdf">here</a>;
|
|
- [Practical session](http://www.cristal.univ-lille.fr/%7Eforget/prelude/prelude_lab.pdf)
|
|
|
</li><li> Practical session, the <a href="http://www.cristal.univ-lille.fr/%7Eforget/prelude/prelude_lab.pdf">exercises</a>
|
|
and [resources](http://www.cristal.univ-lille.fr/%7Eforget/prelude/fcs.tgz for the FCS example;
|
|
|
and <a href="http://www.cristal.univ-lille.fr/%7Eforget/prelude/fcs.tgz">resources</a> for the FCS example;
|
|
- Complete definition of the language in my [PhD thesis](http://www.cristal.univ-lille.fr/%7Eforget/docs/jforget-thesis.pdf) (see Chapter 4 mainly);
|
|
|
</li><li> Complete definition of the language in my
|
|
- [Shorter presentation](http://hal.inria.fr/inria-00638936);
|
|
|
PhD <a href="http://www.cristal.univ-lille.fr/%7Eforget/docs/jforget-thesis.pdf">manuscript</a> (see Chapter 4
|
|
|
|
|
mainly);
|
|
|
|
|
</li><li> Shorter presentation <a href="http://www.cristal.univ-lille.fr/%7Eforget/docs/jforget-SAC10.pdf">here</a> or <a href="http://hal.inria.fr/inria-00638936">here</a>;
|
|
|
|
|
</li><li> Further references available <a href="http://www.cristal.univ-lille.fr/%7Eforget/research.html">here</a>;
|
|
|
|
|
</li><li> For installation, check the INSTALL file of the distribution.
|
|
|
|
|
</li></ul>
|
|
|
|
|
|
|
|
|
|
<b>Feedback</b> is welcome and encouraged: <i><tt> Email:julien dot forget at univ-lille dot fr</tt></i><br>
|
|
**Feedback** is welcome and encouraged: julien dot forget at univ-lille dot fr
|
|
|
|
|
|
|
|
## Supported features
|
|
|
|
|
|
|
|
<h3>Supported features</h3>
|
|
|
|
|
The following features are supported by the current distribution:
|
|
The following features are supported by the current distribution:
|
|
|
|
|
|
|
|
<ul>
|
|
- Language features:
|
|
|
<li> Language features:
|
|
- Synchronous semantics
|
|
|
<ul>
|
|
- Periodicity constraints
|
|
|
<li> Synchronous semantics;
|
|
- Classic synchronous operators: delay (`fby`), Boolean under-sampling (`whe`n</tt>`) and Boolean over-sampling (`merge`</tt>`)
|
|
|
</li><li> Periodicity constraints;
|
|
- Clocks polymorphism
|
|
|
</li><li> Classic synchronous operators: delay (<tt>fby</tt>), Boolean
|
|
- Types polymorphism
|
|
|
under-sampling (<tt>when</tt>) and Boolean over-sampling (<tt>merge</tt>);
|
|
- Static analyses:
|
|
|
</li><li> Clocks polymorphism;
|
|
- Typing;
|
|
|
</li><li> Types polymorphism (à la ML).
|
|
- Clock calculus;
|
|
|
</li></ul>
|
|
- Causality analysis;
|
|
|
</li><li> Static analyses:
|
|
- Deadline calculus.
|
|
|
<ul>
|
|
- Muli-threaded C code generation (independent from the target OS);
|
|
|
<li> Typing;
|
|
- Monocore and multicore artchitectures. |
|
|
</li><li> Clock calculus;
|
|
|
|
|
</li><li> Causality analysis;
|
|
|
|
|
</li><li> Deadline calculus.
|
|
|
|
|
</li></ul>
|
|
|
|
|
</li><li> Muli-threaded C code generation (independent from the target OS);
|
|
|
|
|
</li><li> Monocore and multicore artchitectures.
|
|
|
|
|
</li></ul> |
|
|