ThinKCharts User Guide

Thin Kieler SyncCharts Editor

Authors:

Create a new Diagram

Editing the diagram

Context Menu

Palette

The Palette is only there for old-style drag-and-drop editing. It is discouraged to use the palette to insert states and transitions. Better use the context menu as described above to edit the diagram with Structure-Based Editing operations. It will also automatically use auto-layout to get a nice graphical layout of the diagram.

Properties

Labels


Graphical Elements in a ThinKCharts SyncChart

Interface Declaration Parser

Short Sample

signal A, B, C;	     			// three signals
input in1 := "5" : INT;     		// a signal with initial value
output out1 := "10" combine INT with +;
input output inout1 combine "uint8_t" with "combine_signals_fancy(x, y)"; // host combine operators can be fancy
output sig1, sig2 := "3" combine FLOAT with *;
R0: signal reg1, reg2, var var1, var2;
R0: var var3, var4;
R0: signal reg3, reg4;

Action Label Parser

General Form

Action:
	(isImmediate?='#')? (delay=INT)? (trigger=BooleanExpression)? ("/" (effects+=Effect (',')? )*)?; 

Trigger

Trigger are boolean expressions over Signals and value comparisons that guard actions and transitions. They can comprise the following elements:

Effects

Host Code

If the action label syntax is not expressive enough, you can escape to any host-language, e.g. C, Java or whatever syntax.

Naming

Validation

Differences to the original SyncCharts

Copy & Paste

Copy & Paste gives some extra functionality, as it allows to copy many graphical objects into many target objects. See the image as an example. In the image, nodes, edges or regions denoted with "S" are selected elements (sources) for the copy operation and "T" are selected elements for the paste operation (targets). Elements without label are just dummy elements.

Source/Target?StateRegionTransition
Statereplace, keep all transitionsadd State to Regioninsert, old Transition stick with source
Regioninsertreplace, if root: create state and insertinsert, old Transition stick with source
Transitionadd as selfloopcreate dummy States and connectreplace
Statesreplace, discard transitionsadd States to Regioninsert, old Transition stick with source
Regionsinsertreplace, if root: create state and insertinsert, old Transition stick with source
Transitionsadd as selfloopscreate dummy States and connectreplace with all
Source/Target?StatesRegionsTransitions
Statereplace eachinsert into eachinsert into each
Regioninsert into eachreplace each, if root: do nothinginsert into each
TransitionConnect 2 statesadd two dummy states with transition in eachreplace each
Statesreplace each with allinsert all into eachinsert into each
Regionsinsert all into eachreplace each with allinsert into each
TransitionsConnect 2 states with alladd two dummy states with all transition in eachreplace each with all