SinelaboreRT Header Logo


It's better when it's simple!

User Tools

Site Tools


UML-Tool specific Intro

Language Backends



Designers Toolbox

Integrated state-chart editor with auto-layout

Focus on modeling and not on moving states around to create a nice looking diagram! Syntax aware text fields offer a comfortable way to specify actions, guards etc. When the diagram passed the model checker it can be directly simulated. Connect the diagram to the real hardware to monitor the state machine in action.

There are better ways to model state machines than using spread sheets!

In the past different μC manufacturers have published application notes about the benefit of using state machines for the design of embedded software. An example is the application note SLAA402 from Texas Instruments (TI). It suggests to generate source code based on a spread sheet table. Nowadays several affordable UML modeling tools are available supporting the efficient design of state machines in a graphical way. SinelaboreRT generates production quality source code from state diagrams created with many different UML tools. Give it a try!

Latest Changes

Model-based testing of state machines 2020/02/23 19:32 Peter Mueller  
DCF77 Radio Clock 2020/02/23 19:27 Peter Mueller ,
Getting started with a Traffic Lights example on MSP430 - part 1 2020/02/23 19:26 Peter Mueller , , , ,
Astah SysML 2020/02/23 19:22 Peter Mueller  
Generate production quality code from state diagrams created with Enterprise Architect 2020/02/23 19:20 Peter Mueller  
Features 2020/02/23 19:18 Peter Mueller  
Generate efficient source code from UML state diagrams and activity diagrams! 2020/02/22 20:00 Peter Mueller  
Action disabled: revisions

New Version 3.0

Generate code from state machines with regions

In state diagrams usually only one state is active at a time. In UML state diagrams regions also allow to model concurrency - i.e. more than one state is active at a time (AND states).

A UML state may be divided into regions. Each region contains sub-states. Regions are executed in parallel. You can think of regions as independent state machines displayed in one diagram. The state machine below (Fig. 1) shows several regions each running in parallel in the state Active. Dashed lines are used to divide a state into regions.

Consider a microwave oven. The power setting, light and microwave radiator are be considered as independent (concurrent) parts of the oven, each with its own states. The door and timer as the main external trigger are used in the regions to trigger state transitions. For example the radiator is switched on if the door gets closed and the timer is > zero.

As you can see multiple concurrent regions can be used to explicitly visualize different parts of a device. And all the states in the one diagram.

The model and the generated code thereof is provided in the examples folder of the current release.

 Oven model with regions Figure 1a: State machine model of a microwave oven using regions (created with UModel).

UML tool Modelio supported

Modelio is an open source modeling environment based on Eclipse and providing high quality UML modeling capabilities. Commercial support is available too. The following figures show state diagrams created with Modelio. The tool runs on Linux and Windows.

Model with parallel regions.

Model with a sub-machine in state S2.

Supported state diagram features:

  • Hierarchical states
  • Regions (CX language backend only)
  • Sub-machines in a top level state
  • (Signal-)Events with event name, guard and action
  • Initial and final pseudo-states
  • History states
  • Choices

For a quick start download the latest release version and import the microwave oven into your Modelio workspace.

This new version is free for users who bought their license within the last two years.

Leave your comments

, 2013/01/07 18:03

Fixed with Version 3.1

, 2012/12/11 21:38

Hello Max,

yes and no. You can generate C++ code with regions in it. But it does not copy the instance data yet. See section 6.2 in the manual.

, 2012/12/11 00:57

Does the CX language support for regions include C++?

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
wiki/news/07nov2012.txt · Last modified: 2013/01/29 18:09 by pmueller