Skip to content

jonasblixt/ufsm

Folders and files

NameName
Last commit message
Last commit date
Jan 31, 2023
Jan 30, 2023
Jan 30, 2023
Jan 30, 2023
Feb 3, 2023
Feb 7, 2023
Jan 30, 2023
Jun 24, 2018
Jan 30, 2023
Jan 15, 2022
Feb 7, 2023
Nov 6, 2020
Jan 30, 2023
Jan 18, 2022

Repository files navigation

doc/logo.png

Documentation Status

uFSM is a tool for drawing hierarchical state machines and generating code. The two main parts are "ufsm-compose" the graphical editor and "ufsm-generate", The code generator.

doc/ufsm_design_guides.gif

Disclaimer

uFSM is a work in progress, it's incomplete, it fully possible to design machines that will not work.

History

  • Versions 0.1 - 0.3

    Used a rather complicated runtime that operated on a tree structure that's true to the graphical representation of a state machine. This worked but was resource hungry and error prone.

    The first versions also relied on external drawing tools and used the XMI format to translate designs to compilable code.

  • Version 0.4.x

    Shipped "ufsm compose" drawing tool

  • Version 0.5.x

    Fundametal change in how code is generated. From 0.5 and onward the complicated runtime is dropped in favor of a code generator that computes most things statically. This reduces the runtime memory requirements substantially.

Future plans

  • Add more code generator backends, for example rust, js and python
  • DRC, design rule checker
  • BDD based state condition rule optimizer

Building and installing

Appimages for linux:

Under releases appimages are available for the drawing tool and the code generator. This is the easiest way to quickly test ufsm.

Building:

$ mkdir build && cd build
$ cmake ..
$ make

Dependencies:

Package Ubuntu package name
cmake cmake
uuid uuid-runtime, uuid-dev
GTK 3 libgtk-3-0, libgtk-3-dev

Running tests:

$ make tests

Documentation is available here: uFSM documentation