The CIF language is a powerful declarative automata-based modeling language for the specification of discrete event, timed (linear dynamics), and hybrid (piecewise continuous dynamics) systems.
It can be seen as a rich state machine language with the following main features:
For more information, see the language tutorial and language reference documentation.
The CIF tooling supports the entire development process of controllers, including among others specification, supervisory controller synthesis, simulation-based validation and visualization, verification, real-time testing, and code generation.
Highlights of the CIF tooling include:
For more information, see the tool documentation.
Supervisory controller synthesis (or just, supervisor synthesis) is a key feature of CIF. It involves the automatic generation of supervisory controllers from a specification of the uncontrolled system and the (safety) requirements that the controller needs to enforce.
This shifts controller design from 'how should the implementation work' to 'what should the controller do'. Implementation of the controller is achieved through (implementation language) code generation, reducing the number of errors introduced at this stage.
For more information, see the CIF documentation.
CIF has been applied in industry, for various domains, including the medical, semiconductor and public works (infrastructure) domains.
The main application area of CIF is the development of supervisory controllers. The language and tools are however generic, and can be used to work with state machines in general for various other purposes.
The CIF language and tools are being developed as part of the Eclipse ESCET open-source project. The CIF tools are part of the Eclipse ESCET toolkit.
For more information, see the Eclipse ESCET project website.