[ANN] FSML 0.3.0 - an OCaml library for describing and describing synchronous finite state machines

This is to announce release 0.3.0 of FSML, an OCaml library for describing and describing synchronous finite state machines.

FSML is a simplified version of the library provided in the Rfsm package for which

  • the system is composed of a single FSM
  • this FSM has a single, implicit, triggering event (typically called the clock , hence the term synchronous used in the description)

The FSML library provides

  • a type Fsm.t for describing FSMs
    • possibly having local variables
    • for which transitions , implicitely triggered by a clock, are defined by a set of boolean guards and a set of actions
  • a set of PPX extensions for building values of type Fsm.t
  • functions for producing and viewing graphical representations of FSMs in the .dot format
  • functions for saving and reading FSM representations in files using the JSON format
  • functions for performing single or multi-step simulations of FSMs and generating trace files in the .vcd format to be viewed by VCD viewers such as gtkwave
  • functions for generating C or VHDL code from a FSM representation (for integration into existing code and/or simulation)

This release adds function for transforming FSMs (moving output valuations from states to transitions and vice versa and a Fsm.defactorize to defactorize an FSM wrt. to its local variables. It also includes a custom toplevel to use the library interactively. A complete list of changes is given in the distibution.

FSML is available from Github or as an OPAM package .

Comments and feedback welcome.