Title: Zèlus, a Synchronous Language with ODEs for Hybrid Systems Modeling
Presentation: Prof. Marc Pouzet, ENS Paris.
Abstract: Synchronous languages have been invented in the 80's for
designing and implementing real time control software. They allow to
write a mathematically precise and deterministic specification, to
simulate, test, verify it, and to automatically generate
embedded code that runs in bounded time and space. Those languages
gave birth to several industrial tools, in particular SCADE which is
used today for implementing safety critical software in planes, for
example.
Synchronous language are limited to discrete-time systems only. They
do not not model, nor faithfully nor efficiently hybrid systems that
mix discrete and continuous-time behaviors. This creates a gap in the
development chain, with one language for hybrid systems modeling
and an other for the implementation.
In this talk, I will present Zèlus, a new synchronous language in
which it is possible to write, in the very same source, a model of the
control software like it would be done in a synchronous language and a
model of its physical environment. From a user's perspective, its
main originality is to extend an existing synchronous language like
Lustre with Ordinary Differential Equations (ODEs) and zero-crossing
events. The extension is conservative: any synchronous program
expressed as data-flow equations and hierarchical automata can be
composed arbitrarily with ODEs in the same source code. A dedicated
type system and causality analysis ensure that all discrete changes
are aligned with zero-crossing events. Well-typed programs are then
statically scheduled and translated into sequential code and the final
code is paired with an off-the-shelf numerical solver (Sundials
CVODE). The compiler recycles several classical techniques of
synchronous compilers (causality analysis, code generation). Some
others (like the type system to statically separate discrete-time from
continuous-time) are original. Finally, the key features of Z\'elus
have been implemented in the industrial prototype SCADE Hybrid, built
on top of SCADE 6 KCG, the qualified code generator of SCADE 6.
Back to Workshop Homepage