Array
(
    [content] => 
    [params] => Array
        (
            [0] => /forum/threads/free-state-machine-software-any-good.912/
        )

    [addOns] => Array
        (
            [DL6/MLTP] => 13
            [Hampel/TimeZoneDebug] => 1000070
            [SV/ChangePostDate] => 2010200
            [SemiWiki/Newsletter] => 1000010
            [SemiWiki/WPMenu] => 1000010
            [SemiWiki/XPressExtend] => 1000010
            [ThemeHouse/XLink] => 1000970
            [ThemeHouse/XPress] => 1010570
            [XF] => 2021770
            [XFI] => 1050270
        )

    [wordpress] => /var/www/html
)

Free state machine software - any good?

O

otto9S9otto

Guest
I stumbled across a free state machine tool. This is touted as a being preferable to an RTOS because, being graphical, it is more maintainable. It is based on UML, so one much learn the basics of such. I am interested in what other programmers think of this. Learning UML seems, to me, to be a giant distraction to the job at hand which is, of course, "just make it work!".
 
AFAICS this tool is for state machines generating for C/C++, not for RTL level (VHDL,Verilog,...) state machines. Don't know if that is what you were looking for.

greets,
Staf.
 
From their web site:

QM™ (QP™ Modeler) is a free, cross-platform, graphical UML modeling tool for designing and implementing real-time embedded applications based on the QP™ state machine frameworks. QM™ provides best-in-class, intuitive diagramming environment and generates very compact C or C++ code that is 100% traceable from your design. QM™ is available for Windows, Linux, and Mac OS X.
 
Last edited by a moderator:
I have a purely language based project for parallel processing in an extended C++ (ParC), which aims to support an HDL/FSM methodology. IMO FSMs are the best way to program complex behavior if you want to formally verify it, and it's not too hard to do hardware/software trade-off. The "game of life" example on my website was created to go with a similar GUI based programming approach (Cubicon).

The downside of the GUI approach is that it usually doesn't work well with dynamic structures, so it can get awkward if your code is computing sizes on the fly and constructing and destructing things.
 
Last edited:
This is what I was really after:

I perhaps did not state my dilemma as clearly as I should have. I am developing an embedded application for the LM3S5P36. TI has an IDE called Code Composer Studio (CCS). I have not got into CCS yet, but I doubt it has the cool feature of being able to enter the desired behavior into a state machine chart, turn the crank, and pop out C or C++ code. Then go back and edit the chart to generate corresponding revised code. I have programmed microcontrollers in C, but know almost nothing about UML. In the past I have maintained two files, one of them microcontroller code and the other a flow chart. Each code revision meant maintaining two separate files.

So my dilemma is: having discovered this cool chart-to-code all-in-one-documentation-included tool, I would love to use it, but, more than that, I just want to get my project done. Do I do it the old way, or spend a few weeks learning UML?


Staf: I understand your statement, but this site host links to lots of free EDA tools of all stripe here. In fact, I helped edit this page.

Daniel: See my clarified question/dilemma above.

Simguru: Your project looks fascinating, and I think I understand your warning. No, I do not anticipate generating any code that construct and deconstructs things.
 
@Otto - if you try searching LinkedIn for UML you get something like 100,000 hits vs 400,000 for C++, and 20,000 for Verilog, so it would appear UML is generally more popular than Verilog, but less popular than C++ (and C is a lot more popular than that) - so possibly worth knowing. Having browsed the web for UML examples I think (for myself) I'd stick with C/C++ and look for tools that can extract the FSM information and represent it graphically - like Doxygen does for structures - rather than looking for a graphical design tool.

Here are some Java based UML tools -

Java Finite State Machine Framework
Open Source UML & Modeling in Java

A commercial all-singing all-dancing one -

Enterprise Architect UML Modeling tool

- I'd try some out to see which can share data with the FSM tool if any.
 
Thanks, simguru. Based on your helpful response, and on my own recent research, I will stick with the tried-and-true state machine in C and also a firmware flowchart maintained in parallel.

Otto
 
Back
Top