The reflexive editor is the plug-in generated from the SME meta-model by the Eclipse Modeling Framework (EMF).
It allows to specify a Polychrony model by creating the equivalence of an Abstract Syntax Tree where the syntax is
given by the meta-model meta-classes.
To help the user during the creation of a new SME model file, the reflexive editor has a wizard. The role of
the wizard is to make more convivial the task of creation by accompanying the user. The creation will proceed in
a few stages.
To start the wizard, right-click on the project where you want to create your model, and select New-> Other...
and then select the following model file : Polychrony-> SME Model.
Once, you have chosen the root model, you have only to add new model objects. To do so, right-click on the node on which
you want to add a child, and select the New Child menu. It displays the list of all possible model elements that can be
added for the current selected element. If this option does not exist for a node, it means that there is no possible child
for this node.
Here, we detail how to parametrize each model objects (meta-classes that are not abstract) that can be added in a
SME model file. To be able to customize model objects, you have to display the Property View: right on a model element and
select the Show Property View action.
In the following, for each model object, we precise the children model objects that can be added to it and each feature
that can be modified by the user (not the read-only one). They are listed in alphabetical order. For more information about
the semantics of each element, consult the Signal
v4 reference manual for syntactic elements and for mode automaton elements, consult Polychronous mode automata.

|
And
|
It corresponds to the logical And operator.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as many Input
Ports as Signal Expressions you need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
|
|

|
And State
|
It corresponds to the synchronous composition of different sub-states.
|
|
Children
- The sub-states (And State, Automaton, and/or State) of the And State. It is not really useful to add an And
State to another one.
- History: connecting a transition to the history of an And State means that you enter the previous state
of all inner state of the And State.
- The shared Local signals.
Basic
- Comment: the COMMENT pragma attached to this identifier.
- Name: the name of the state. It has to be unique inside the Automaton in which the state is contained.
|
|
|
|
Arithmetic Operator
|
It corresponds to any arithmetic operator present
in the Signal language.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as many Input Ports as
Signal Expressions you need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated type whose values are Addition, Substraction,
Multiplication, Division, Modulo, and Power. By default, the value of this attribute
is Addition.
|
|
|
|
Array Enumeration
|
It corresponds to the Signal operator for defining an array by the ordered list of its elements.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
|
|
|
Array Product
|
It corresponds to the Signal operator for a matrix product. The operands must have a basic type which is a
numeric type.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as many Input Ports as
Signal Expressions you need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
|
|
|
Array Recovery
|
It corresponds to the Signal operator for defining a recovery
default value when accessing to an array out of its bounds.
|
|
Children:
- Two Input Ports already created. The first one takes an
array expression and the second one takes a recovery expression,
which is used when the array expression try to access out of the bounds
of the array.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Array Restructuration
|
It allows to define partially an array, by
defining some indices-defined coordinate points of this array. Non
defined values are any values of correct type.
|
|
Children:
- Two Input Ports already created. The first
one take an expression corresponding to the index(es) of the
array at which the expression indicated by the second port is
set.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Assertion
|
It corresponds to a process with no output which specifies that a
Boolean expression must have the value true each
time it is present.
|
|
Children: none
Basic
- Expression: the boolean expression to check
in a textual form. If a Condition references this Assertion, the
boolean expression at the source of this Condition will be the
expression to check.
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Assertion Clock Constraint Operator
|
It corresponds to the different kind of clock constraint operator in a
context of an assertion. To use this operator, connect the different expressions
to it with Clock Relation model object.
|
|
Children: none
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated type whose values are Synchronized (clocks are equal),
Excluded (specifies the mutual exclusion of the expression clocks), and Identity (specifies the
equality of values and clocks of the expressions). By default, the value of this attribute is Synchronized.
|
|
|
|
Assertion Clock Speed Operator
|
It corresponds to a clock constraint operator which constraints the
speed of a Clocked Expression to be slower (or faster) than the speed
of another Clock Expression. This means that the first Clocked Expression
is less (or more) frequently present that the second one. This operator is
used in the context of an assertion.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as many Input Ports as
Signal Expressions you need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated type whose values are Slower, and Faster. By
default, the value of this attribute is Slower.
|
|
|
|
Automaton
|
It corresponds to the definition of a mode
automaton.
|
|
Children:
- The sub states (And State, Automaton, and/or State) indicates the different execution mode in which the
Automaton can be. At each instant, the Automaton can execute at most one mode.
- History: connecting a transition to the history of an Automaton means that you re-execute the last
mode of this Automaton.
- The shared Local signals.
- The transitions (Weak Transitions, or Strong Transitions) of the Automaton define the means to go from one
state to another one when their guard is true.
Basic
- Comment: the COMMENT pragma attached to this identifier.
- The Initial State indicates the initial state of this automaton. All possible states are listed in the
combo box.
- Name: the name of the Automaton which is used as its identifier. It has to be unique inside its container.
It is even better to name it uniquely inside the file.
|
|
|
|
Basic Iterate
|
It corresponds to a C- for loop: for(i=0; i <= N; i++).
It is a particular case of the Iterate block.
|
|
Children:
- Iteration Init: this model object already created is used to specify, if any, how to initialize the iteration.
When you try to delete this object, it is automatically rebuilt, but it will be empty.
- Iterator: it is a constant expression that is used to iterate among all elements contained in the Basic Iterate
block. It corresponds to the i parameter in a C- for loop for(i=0; i <= N; i++). The iterator is automatically added
to the Basic Iterate block. When you try to delete this object, it is automatically rebuilt with unset attribute.
- Any of the children that can be in a process: it means all model objects except the following list: And State,
Input, Model Declaration, Output, Parameter, Pragma, State, Strong Transition, and Weak Transition.
Basic
- Comment: the COMMENT pragma attached to this identifier.
- Iterator Name is used to get/set the name of the iterator used by the Basic Iterate Block. This attribute is a
shortcut. Obviously, one can change the name of the iterator directly in the Iterator element.
- Name: the name of the Automaton which is used as its identifier. It has to be unique inside its container.
It is even better to name it uniquely inside the file.
- Upper Bound represents the upper bounds of the iteration (the N parameter of the C- for loop). It has to be an
integer expression: integer value, expression using signals...
|
|
|
|
Boolean Expression
|
It corresponds to a complete boolean expression.
It was added to the meta-model to avoid a long description of a
complete boolean expression.
|
|
Children: none
Basic
- Expression: the boolean expression in a textual form.
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
|
|
|
Cartesian Product
|
The Cartesian product is used mainly to define jointly indexes, to be used in Iterate model object.
Intuitively, the sequence of iteration is represented by the first dimension of the indexes (which are vectors).
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as
many Input Ports as you need (at least 2). The ports are ordered.
- Output Port: this operator has also as many Output Ports as Input Ports (at least
2) and they are ordered too.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Case Connection
|
It corresponds to a case for the switch operator.
|
|
Children: none
Basic
- Case Kind: this attribute is of enumerated type whose values are ElseCase, Enumeration, ClosedInterval,
LeftHalfOpenInterval, RightHalfOpenInterval, and OpenInterval. By default, the value of this attribute
is ElseCase.
- Enumeration: if the enumeration case kind is selected, this attribute is used to enumerate the values for the
current case.
- Lower Bound is used to specify the lower bound of an interval. If the Case Kind is one of the interval kind, and if no
value is specified for the lower bound, the value is -∞. Intervals are not fully implemented by the compiler
yet.
- Name: the name of the model object. It is used to identify it, so it is better if it has a unique name.
- Upper Bound is used to specify the upper bound of an interval. If the Case Kind is one of the interval kind, and if no
value is specified for the lower bound, the value is +∞. Intervals are not fully implemented by the compiler
yet.
Source-Target
- Dst: any of the Sub Process or Iterate model object, which is at the same hierarchical level.
- Src: any of the Switch operator, which is at the same hierarchical level.
|
|
|
|
Cell
|
It corresponds to the memorization operator which
allows to memorize a given signal when the signal is present and
the boolean expression is true.
|
|
Children
- One Input Port already created which
has to be connected to the expression to memorize. The boolean
expression has to be specified through the use of a Condition
whose target is the Cell operator.
Basic
- The Initial Value is the value used to
initialize the memory.
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Clock Constraint Operator
|
It corresponds to the different kind of clock
constraint operator. To use this operator, connect the different
expressions to it with Clock Relation model object.
|
|
Children: none
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated
type whose values are Synchronized (clocks are equal),
Excluded (specifies the mutual exclusion of the expression clocks), and
Identity (specifies the equality of values and clocks of the expressions).
By default, the value of this attribute is Synchronized.
|
|
|
|
Clock Relation
|
It corresponds to a clock relation between two
clocked expressions. A Clocked Expression is either a signal
(Input, Output, Local, Signal Ref, Input Instance, Output
Instance), or a Sub Process, or an Iterate, or a Model Instance,
or an Automaton, or any clock operator (Clock Constraint Operator,
Clock Relation Operator, Clock Speed Operator).
|
|
Basic
- Name: the name of the model object.
It is used to identify it, so it is better if it has a unique
name.
Source-Target
- Dst: the target of a Clock Relation
is a Clocked Expression.
- Dst Field: if the target is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
- Src: the source of a Clock Relation is also
a Clocked Expression.
- Src Field: if the source is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
|
|
|
|
Clock Relation Operator
|
It corresponds to the set operators for clocked
expressions.
|
|
Children:
- Input
Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated
type whose values are Union, Intersection, and
Complementary. By default, the value of this attribute is
Union.
|
|
|
|
Clock Speed Operator
|
It corresponds to a clock constraint operator
which constraints the speed of a Clocked Expression to be slower
(or faster) than the speed of another Clock Expression. This
means that the first Clocked Expression is less (or more)
frequently present that the second one.
|
|
Children:
- Input
Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated
type whose values are Slower, and Faster. By
default, the value of this attribute is Slower.
|
|
|
|
Comparison Operator
|
It corresponds to the Boolean relations of equality, difference, and
strict and non strict greater and lower relations. The value of
both expression must be comparable.
|
|
Children
- Two Input Ports already created,
which corresponds to the operands of the selected comparison
operator.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Operator: this attribute is of enumerated type whose values are Equal,
Not Equal, Greater, Greater Or Equal,
Smaller, Smaller Or Equal, Equal Any, and
Smaller Or Equal Any. By default, the value of this
attribute is Equal. The difference between Equal
and Equal Any, is that if the first one is applied on two
vectors, the result is a vector of Booleans, where as the second
one returns a single Boolean value (same distinction between
Smaller Or Equal and Smaller Or Equal Any).
|
|
|
|
Complex Operator
|
It corresponds to the operator for building
complex number.
|
|
Children
- Two Input Ports already created. The
first one represents the real part of the complex number and the
second the imaginary part.
Basic
- Name: The name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Concatenation
|
It corresponds to the concatenation operation,
which allows to concatenate arrays along to their first dimension.
|
|
Children:
- Input
Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered. On each
Input Port, an array expression has to be connected.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Condition
|
It corresponds to the expression of a condition
for some specific Conditioned Expression: the Assertion, the Cell,
the Dependence Operator, the Extraction, or the If Then Else.
|
|
Children: none
Basic
- Condition Kind: this attribute is of enumerated type whose values are Present,
True, and False. By default, the value of this attribute is Present.
Present check the presence of a signal; True and False check the value of a Boolean
Expression or a Boolean signal.
- Name: the name of the model object. It is used to identify it, so it is better if it has a unique name.
Source-Target
- Dst: the target of a Condition is a
Conditioned Expression.
- Src: the source of a Condition is a Boolean
Expression or a Signal. It can also be a Merge, an
Array Recovery, a Cell, a Delay, an Extraction, or an
If Then Else operator, but be sure, that the expression
returns a boolean result.
- Src Field: if the source is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
|
|
|
|
Constant Affectation
|
It corresponds to the initialization of a
Constant Value or a Parameter Instance by a constant expression.
For the Constant Value, you can also use the Value attribute.
|
|
Children: none
Basic
- Name: the name of the model object.
It is used to identify it, so it is better if it has a unique
name.
Source-Target
- Dst: the target of a Constant Affectation is
a Constant Value or a Parameter Instance.
- Src: the source is a Constant Expression,
this means that it is an expression built only with constant
value.
- Src Field: if the source is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
|
|
|
|
Constant Ref
|
It corresponds to the use of a Constant Value or
a Parameter at another hierarchical level than these where the
Constant Value or Parameter is declared.
|
|
Children: none
Basic
- Constant: points to the referring Constant
Value or the Parameter.
|
|
|
|
Constant Value
|
It corresponds to the declaration of a constant.
|
|
Children: none
Basic
- Array Dimensions indicates the dimensions of the Constant Value, if it is an
array. If it is a multi-dimensional array, specify one dimension
per line. A dimension is a constant expression: Constant Value,
Parameter, an integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Constant Value
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Type: it corresponds to one of the
Intrinsic Primitive Type or to one of the type declared. To
access to a type declared in the file, the Constant Value has to
be in the scope of this declaration.
- Value: indicates the value of the constant.
If the constant is an array, specify one value (of the first
dimension) per line.
- Visibility: indicates the visibility
(public or private) if the Constant Value is declared inside a
Module. If it is declared in a Model Declaration, this
information is useless.
|
|
|
|
Counter
|
It allows the numbering of the occurrences of a
signal.
|
|
Children:
- Two Input Ports already created. The first
one has to be connected to the Signal Expression, which has to be
numbered, and the second to a reseting event (if Counter Kind is
After or From) or to a constant integer expression (if Counter
Kind is Count).
Basic
- Counter Kind: this attribute is of enumerated type whose values are After, From,
and Count. By default, the value of this attribute is After.
After means that it counts the number of occurrences of the first Signal Expression since
the last occurrence of the reseting event. From works as After, but if the Signal Expression
and the reseting event are simultaneous, it is counted by From (not by After).
Count means that it counts the number of occurrences of the Signal Expression modulo the number
of the second expression.
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
|
|
|
Dataflow Connection
|
It corresponds to the Signal definition (or
partial definition). It constitutes the main link between signal
expressions.
|
|
Children: none
Basic
- Name: the name of the model object.
It is used to identify it, so it is better if it has a unique
name.
Expert
- Cast Type: it corresponds to the casting
type for the source expression. The type is one of the Intrinsic
Primitive Type.
- Is Default Value: if the destination is a shared Local
signal or a state variable, this attribute indicates if the source
expression constitutes the default value of the partial definition.
- Use Last Iteration Value: indicates if the
source expression used is those computed during the last
iteration (this attribute is only used inside an Iterate model).
- Use Src Clock: indicates if the Dataflow
Connection uses the clock of the source or its value.
Source-Target
- Dst: the target of a Dataflow Connection is
a Signal (Input Instance, Local, Output, Signal Ref) or an Input
Port of an operator (except for Clock Relation Operator).
- Dst Field: if the target is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
- Src: the source of a Dataflow Connection is
a Signal Expression: operators (except Clock Constraint Operator,
Clock Relation Operator, Clock Speed Operator, and Dependence
Operator), Signals, or Output Port.
- Src Field: if the source is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
|
|
|
|
Delay
|
It corresponds to the delay operator which
returns the Nb Instants-th previous value of a Signal
Expression, except for its first Nb Instants-th execution
where it uses the initial value.
|
|
Children:
- One Input Port already created to connected
the Signal Expression to delay.
Basic
- Initial Value initialize the value for the
Nb Instants-th first execution of the operators. This
means that, if Nb Instants is greater than 1, the initial value
has to be an array whose size is Nb Instants.
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Nb Instants: the size of the delay.
You can specify an integer positive value or the name of a
constant value.
|
|
|
|
Dependence
|
It corresponds to an explicit specification of
dependences between Identifiers (Signals, Model Instance, Sub
Process, or Iterate) model objects. When the source (or target) is
a Model Instance, a Sub Process, or an Iterate model object, it
means that all Signals defined in these structure enter in the
Dependence relation.
|
|
Children: none
Basic
- Name: the name of the model object.
It is used to identify it, so it is better if it has a unique
name.
Source-Target
- Dst: the target of a Dependence is an
Identifier model object.
- Dst Field: if the source is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
- Src: the source of a Dependence is an
Identifier model object.
- Src Field: if the source is a Signal using a
Tuple Type or an array type, this attribute is the way to access
to the signal field.
|
|
|
|
Dependence Operator
|
It has been introduced to represent conditional
Dependences. Thus, one can connect the target of a Condition to
this operator, and the source or target of several Dependences.
|
|
Children: none
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
|
|
|
Enumeration Type
|
It corresponds to the type declaration of an
enumeration. To access to the value of an enumerated type, prefix
the value by a '#'.
|
|
Children: none
Basic
- Array Dimensions indicates the dimensions of
the Enumeration Type, if it is an array type. If it is a
multi-dimensional array, specify one dimension per line. A
dimension is a constant expression: Constant Value, Parameter, an
integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Enum Values indicates the values of
the enumeration. Put one value per line.
- Name: the name of the Enumeration Type,
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Visibility indicates the visibility (public
or private) if the Enumeration is declared inside a Module. If it
is declared in a Model Declaration, this information is useless.
|
|
|

|
Enumeration Value
|
It corresponds to an unnamed constant value whose
type is an enumerated type
|
|
Children: none
Basic
- Type Value indicates the name of the
enumerated type if any. A list of enumerated type containing in
the scope is proposed.
- Value indicates the value used inside the
enumerated type. No need to prefix the value with a '#'
character.
|
|
|
|
Extraction
|
It corresponds to the extraction operator. A
value is returned each time the Condition is true and there is a
value on the Input Port.
|
|
Children
- One Input Port already created to
connected the Signal Expression whose value has to be extracted
each time the Condition is true.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
History
|
It corresponds to the History state of an
Automaton or of an And State. When a transition leads to such a
state, it means that the container state is not reinitialized and
re-executes its last state.
|
|
Children: none
|
|
|
|
If Then Else
|
It corresponds to the synchronous condition. It is an expression on
signals of same clock.
|
|
Children:
- Two Input Ports already created. The
first one has to be connected to the then Signal
Expression, and the second to the else Signal Expression.
Both expressions have to be of the same type.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Index
|
It corresponds to the definition of an index. An
index is a vector of integers whose size is equal to (To –
From) / Step. It is used by Iterate model object.
|
|
Children: none
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- From: a Signal Expression which constitutes
the starting value of the Index.
- Name: the name of the Index which is
used as its identifier. It has to be unique inside its container.
It is even better to name it uniquely inside the file.
- Step: an integer Constant Expression
different from 0. If the value is omitted, it is equal to 1.
- To: a Signal Expression which constitutes
the ending limit of the Index.
|
|
|
|
Input
|
It corresponds to the declaration of an input
signal in a Model Declaration. Because it represents an input of
the declaration of a Model, it cannot be the target of a Dataflow
Connection (only an Instance of the Input can be the target of a
Dataflow Connection).
|
|
Children: none
Basic
- Array Dimensions indicates the
dimensions of the Input, if it is an array. If it is a
multi-dimensional array, specify one dimension per line. A
dimension is a constant expression: Constant Value, Parameter, an
integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Initial Value initialize the value
of the Input.
- Name: the name of the Input which is
used as its identifier. It has to be unique inside its container.
It is even better to name it uniquely inside the file.
- Type: it corresponds to one of the
Intrinsic Primitive Type or to one of the type declared. To
access to a type declared in the file, the Input has to be in the
scope of this declaration.
|
|
|
|
Input Instance
|
It corresponds to the instance of an Input.
Inside a Model Instance, it refers to one of the Input declared in
the instantiated Model Declaration. To obtain Input Instance model
object, refer to the Model Instance description.
|
|
Children: none
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Input Instance
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
|
|
|
|
Input Port
|
It corresponds to a port of a Signal Operator. By
default, such port is not typed, but according to the operator
containing the port, it is typed. Each Input Port has to be
connected.
|
|
Children: none
|
|
|

|
Iterate
|
It corresponds to an iteration of processes. It
is mainly used to apply the same behavior on arrays.
|
|
Children
- Input
Port: this operator is as a multiple inputs operator, this means
that you can add as many Input Ports as Indexes or integer array
you need to connect. The ports are ordered.
- Iteration Init:
this model object already created is used to specify, if any,
how to initialize the iteration. When you try to delete this
object, it is automatically rebuilt, but it will be empty.
- Any of the
children that can be in a process: it means all model objects
except the following list: And State, Input, Model Declaration,
Output, Parameter, Pragma, State, Strong Transition, and Weak
Transition.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Iterate which
is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
|
|
|
|
Iteration Init
|
It corresponds to the area in which the
initialization of an iteration of processes have to be made.
|
|
Children
- Any of
the children that can be in a process: it means all model objects
except the following list: And State, Input, Model Declaration,
Output, Parameter, Pragma, State, Strong Transition, and Weak
Transition.
|
|
|
|
Iterator
|
It corresponds to the iterator index of a C-for loop. It has
to be used to refer the current number of loop of the Basic Iterate
block. An Iterator can be referenced by a Constant Ref element.
|
|
Children: none
Basic
- Comment: the COMMENT pragma attached to this identifier.
- Name: the name of the Iterator index, which is used as its
identifier. It has to be unique inside its container. It is even
better to name it uniquely inside the file.
|
|
|
|
Literal
|
It corresponds to an unnamed constant value.
|
|
Children: none
Basic
- Value indicates the value of the literal.
The literal can be either a boolean, or an integer, or a real, or a string, or
a character value. If the literal is a string, do not forget to
use double quote. If the literal is a character, use simple quote.
|
|
|
|
Local
|
It corresponds to the declaration of a local
signal. This signal can be used at its declaration level and in
all sub-levels.
|
|
Children: none
Basic
- Array Dimensions indicates the
dimensions of the Local signal, if it is an array. If it is a
multi-dimensional array, specify one dimension per line. A
dimension is a constant expression: Constant Value, Parameter, an
integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Initial Value initialize the value
of the Local signal.
- Name: the name of the Local signal
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Type: it corresponds to one of the
Intrinsic Primitive Type or to one of the type declared. To
access to a type declared in the file, the Local signal has to be
in the scope of this declaration.
- Status indicates if the signal is a normal signal,
a shared signal, or a state variable. A state variable is a typed sequence
the elements of which are present as frequently as necessary. It keeps its
previous value as long as a new one is defined. A shared signal is a signal
whose value is partially defined at different place.
|
|
|
|
Merge
|
It corresponds to the operator that merge
different flows of data. The flows are ordered according to the
order of the Input Port to which they are connected. If they is a
value on the first flow, it will be taken, else we check the
second, and so on among the different flows.
|
|
Children:
- Input
Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Model Declaration
|
It corresponds to the declaration of a SIGNAL
component with its Input/Output Signals and its input constant
Parameter. It is only a declaration of a component. It has to be
instantiated (Model Instance) to be used and connected to the rest
of a system. It constitutes one of the Root Model, but it can also
be declared locally in another Model Declaration or in a Module.
|
|
Children
- Input,
Output, and Parameter are added to specify the interface of this
component.
- Specifications
(already added) is used to specify the clock relations and the
dependences between input and output signals.
- Any of the
children that can be in a process: it means all model objects
except those concerning the mode automaton: And State, State,
Strong Transition, and Weak Transition.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Model
Declaration which is used as its identifier. It has to be unique
inside its container. It is even better to name it uniquely
inside the file.
- Visibility indicates the visibility
(public or private) if the Model Declaration is declared inside a
Module. If it is declared in a Model Declaration, this
information is useless.
Expert
- Model Type: this attribute is of enumerated type whose values are action, function,
node, and process. By default, the value of this attribute is process.
For more information, consult the Signal
v4 reference manual
- Process Class: this attribute is of enumerated type whose values are safe, deterministic,
and unsafe. By default, the value of this attribute is unsafe.
For more information, consult the Signal
v4 reference manual
- Type indicates the Model Type of the Model
Declaration if it is typed. Typing a Model Declaration by a Model
Type is the means to reuse the same interface (Input/Output
Signals and constant Parameters) for several Model Declarations.
Thus, you have not to specify the interface of your Model
Declaration, it is automatically specified by the Model Type.
External Code
- CCode: It is specific to code generation. It is a “parameterized”
string representing a piece of C code. Each call of the model is
translated by this string in the generated code, after
substitution of the encoded parameters by the corresponding
signals in the considered call. The following encoded parameters
may be used in the string:
- &pj (where j is a constant integer value) represents the
jth parameter of the call;
- &ij (where j is a constant integer value) represents the
jth input signal of the call;
- &oj (where j is a constant integer value) represents the
jth output signal of the call;
- &t&xj (where x is either p, i or o, and j is a constant
integer value) represents the type of the jth
parameter, or input signal, or output signal of the call;
- &n represents the name of the model.
- Cpp Code: The same as CCode, but for the C++
generation.
- Java Code: The same as CCode, but for the
Java generation.
Pragmas
- Compilation Directive: this attribute is of enumerated type whose values are NONE,
unexpanded, separate, Black Box, Grey Box, and Delay Cluster. By default, the value of
this attribute is NONE. For more information, consult the list of Polychrony pragmas in
Signal v4 reference manual.
- Is Main indicates if the Model Declaration is an entry point of a Module (used only when the Model
Declaration is a child of a Module).
- Is Sigali Process indicates if the current Model Declaration is a specific process for the Sigali
model-checker tool.
- Processor Type: string representing a name, for example, "DSP", that should be the name of a
file DSP.LIB containing a module that defines the cost of each operator by particular models. When profiling
(performance evaluation) is required on a given program implemented on some processor represented as a
model with this attribute set, a morphism of this program is applied, that defines a new program representing
cost evaluation of the original program. The image of the original program by this morphism uses the library
designated by the pragma to interpret the cost evaluation operators.
- Run On: a constant integer value i. When a partitioning based on the use of this pragma is applied on
an application, the application is partitioned according to the n different values of the pragma so as to
obtain n sub-models. The tree of clocks and the interface of these sub-models may be completed in such a
way that they represent endochronous processes.
|
|
|
|
Model Instance
|
It corresponds to the
instantiation of a SIGNAL component. To use it, specify the
Referred Interface attribute, right-click on the Model Instance
Node and select « Load Model Instance Inputs/Outputs »
action. This action creates the Input Instances, Output Instances,
and Parameters Instances corresponding to those of the Referred
Interface.
|
|
Children
- Input, Output, and Parameter Instances are
automatically added when the Referred Interface is set and the
« Load Model Instance Inputs/Outputs »
action is called.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Model Instance
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
Instantiation
- Referred Interface: refers to a Model
Declaration or a Model Type to instantiate.
- Referred Parameter: for generic purpose, a
Model Declaration can be passed as parameters. Thus, the Referred
Interface has to be set with a Model Type, and the Referred
Parameter will indicate the instantiated Model Declaration.
|
|
|
|
Model Ref
|
It allows to refer to a Model Declaration
declared at the upper hierarchic level (only useful to connect a
Model Declaration to a Parameter Instance).
|
|
Children: none
Basic
- Model: points to the referring Model
Declaration.
|
|
|
|
Model Type
|
It corresponds to the declaration of a specific
type allowing to type a Model Declaration. As for a Model
Declaration, an interface (Input, Output, Parameter, and a
Specification area) has to be specified.
|
|
Children
- Input,
Output, and Parameter are added to specify the interface of this
component.
- Specifications
(already added) is used to specify the clock relations and the
dependences between input and output signals.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Model Type
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Visibility indicates the visibility (public or private) if the Model Type is declared
inside a Module. If it is declared in a Model Declaration, this
information is useless.
Expert
- Model Type: this attribute is of enumerated type whose values are action, function, node,
and process. By default, the value of this attribute is process.
For more information, consult the Signal
v4 reference manual.
- Process Class: this attribute is of enumerated type whose values are safe, deterministic,
and unsafe. By default, the value of this attribute is unsafe.
For more information, consult the Signal
v4 reference manual.
- Type indicates the Model Type referenced by the current one.
|
|
|
|
Module
|
It corresponds to a library of types, components, and constant values.
|
|
Children
- Model Declarations: one can declared
different Model Declarations. Some of them can be private (only
usable by the other Model Declarations of the Module) or public
(that can be imported by external Model Declarations that specify
this Module in the Use Module model object). If one (or several)
of the Model Declarations has its Is Main set to true, it becomes
an entry execution point for this Module.
- Type (Enumeration, Model Type, Substitution
Type, or Tuple Type) can also be declared public or private.
- Constant Values can also be declared public
or private.
- Use Module: indicates the list of other
Modules needed by this one.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Module which
is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
|
|
|
|
Not
|
It corresponds to the logical Not operator.
|
|
Children
- One Input Port (already created): used to
connect a Boolean Expression.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Null Clock
|
It corresponds to the empty clock, which corresponds to the clock without any instant, to an event that never
occurs.
|
|
Children: none
|
|
|
|
Numeric Expression
|
It corresponds to a complete numeric expression.
It was added to the meta-model to avoid a long description of a
complete arithmetic expression.
|
|
Children: none
Basic
- Expression: the arithmetic expression in
textual form.
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Or
|
It corresponds to the
logical Or operator.
|
|
Children:
- Input
Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Output
|
It corresponds to the declaration of an output
signal in a Model Declaration.
|
|
Children: none
Basic
- Array Dimensions indicates the
dimensions of the Output, if it is an array. If it is a
multi-dimensional array, specify one dimension per line. A
dimension is a constant expression: Constant Value, Parameter, an
integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Initial Value initialize the value
of the Output.
- Name: the name of the Output which
is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Type: it corresponds to one of the
Intrinsic Primitive Type or to one of the type declared. To
access to a type declared in the file, the Output has to be in
the scope of this declaration.
|
|
|
|
Output Instance
|
It corresponds to the instance of an Output.
Inside a Model Instance, it refers to one of the Output declared
in the instantiated Model Declaration. To obtain Output Instance
model object, refer to the Model Instance description.
|
|
Children: none
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Output
Instance which is used as its identifier. It has to be unique
inside its container. It is even better to name it uniquely
inside the file.
|
|
|
|
Output Port
|
It corresponds to an output port of a Cartesian
Product (it is the only Signal Operator with Output Ports). Each
Output Port has to be connected to a Signal (Input Instance,
Local, Output), or to a Signal Reference.
|
|
Children: none
|
|
|
|
Parameter
|
It corresponds to the declaration of a constant
parameter in a Model Declaration.
|
|
Children: none
Basic
- Array Dimensions indicates the
dimensions of the Parameter, if it is an array. If it is a
multi-dimensional array, specify one dimension per line. A
dimension is a constant expression: Constant Value, Parameter, an
integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Parameter
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Type: it corresponds to one of the
Intrinsic Primitive Type, to one of the type declared, or it can
be of type type. To access to a type declared in the file,
the Parameter has to be in the scope of this declaration. A
Parameter is, with the Model Declaration or the Model Type, the
only mode object that can be typed with a Model Type.
|
|
|
|
Parameter Instance
|
It corresponds to the instance of a Parameter.
Inside a Model Instance, it refers to one of the Parameter
declared in the instantiated Model Declaration. To obtain
Parameter Instance model object, refer to the Model Instance
description.
|
|
Children: none
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Parameter
Instance which is used as its identifier. It has to be unique
inside its container. It is even better to name it uniquely
inside the file.
|
|
|
|
Pragma
|
It corresponds to the definition of a pragma whose role is to
associate specific informations with the objects of a Model. These
informations may be used by a compiler or another tool.
|
|
Children: none
Basic
- Expression: a string representing the
information to associate with the target objects.
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Pragma: a string which represents
the kind of the pragma
- Target: a list of identifiers on which this
pragma is applied.
|
|
|
|
Repetition Operator
|
It corresponds to the repetition operator, which is a simple form of iterative enumeration,
which allows the finite repetition of a value. The result of this operator is an array with
several times the value connected to the first Input Port. The number of repetitions is
represented by the second Input Port
|
|
Children
- Two Input Ports already created. The first one takes an expression used to
fill the array and the second takes the number of repetitions, i.e. the size of the built
array. The expression connected to the second Input Port have to represent a
strictly positive integer value.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Nb Repetitions: an integer constant
expression (strictly positive), which indicates the number of
repetitions.
|
|
|
|
Sequential Definition
|
It corresponds to the sequential definition operator, which is used
mainly for the redefinition of elements of arrays. For an example
with 2 Input Ports, the result will be an array which takes the
value of the expression connected to the second Input Port at
each point at which it is defined, and the value of the expression
connected to the first Input Port elsewhere. In the general case,
both expressions value are arrays with the same number of
dimensions.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as
many Input Ports as Signal Expressions you need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Signal Ref
|
It corresponds to the use of a Signal (Input,
Output, Local, Input Instance or Output Instance) at another
hierarchical level than these where the Signal is declared.
|
|
Children: none
Basic
- Signal: points to the referring Signal.
|
|
|
|
Specifications
|
It corresponds to the area to specify some properties. It uses a
process expression that can make reference (through Constant Ref,
or Signal Ref) to the Parameters and Input and Output signals of
the Model. Any other identifier used in this expression is that of
a local object (signal, process model, etc.), that must have a
declaration in this expression. This aera is used in Model
Declaration and Model Type model objects for this reason. It is
also used in the Tuple Type declaration to specify some properties
between different signals, if the Tuple Type is a bundle.
|
|
Children
- Any of
the children that can be in a process: it means all model objects
except the following list: And State, Input, Iteration Init,
Model Declaration, Output, Parameter, Pragma, Specifications,
State, Strong Transition, and Weak Transition.
|
|
|
|
State
|
It corresponds to a leaf-state of an Automaton.
It contains directly the specification of the mode.
|
|
Children
- Any of
the children that can be in a process: it means all model objects
except the following list: And State, Input, Iteration Init,
Model Declaration, Output, Parameter, Pragma, Specifications,
State, Strong Transition, and Weak Transition.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the state which is
used as its identifier. It has to be unique inside its container.
It is even better to name it uniquely inside the file.
|
|
|
|
Strong Transition
|
It corresponds to a transition of an Automaton. A
Strong Transition is evaluated, for the current instant, before
the execution of its source state. If the guard is true, the mode
of the Automaton for the current instant will be the target state.
In a specific Automaton, only one Strong Transition can be taken
during an instant.
|
|
Children: none
Basic
- Guard is a textual boolean
expression to express when to go from the source state to the
target state.
- Name: the name of the model object. It is
used to identify it, so it is better if it has a unique name.
- Priority is an integer value which
indicates, for states with several out-going Strong Transitions,
the order of their evaluation.
Source-Target
- Dst: the target of a Strong Transition is a
sub-state (And State, Automaton, or State) of the Automaton
which belongs this transition, or the History of one of them.
- Src: the source of a Strong Transition is a
sub-state (And State, Automaton, or State) of the Automaton
which belongs this transition.
|
|
|
|
Sub Process
|
It corresponds to a sub part of a component
without any specific Input/Output signals. It can also be used to
specify the different case of the Switch operator. One can also
specify some clock constraints/relations (or dependences) with a
Sub Process: this means that all signals defined in the Sub
Process will be related to these constraints/relations.
|
|
Children
- Any of
the children that can be in a process: it means all model objects
except the following list: And State, Input, Iteration Init,
Model Declaration, Output, Parameter, Pragma, Specifications,
State, Strong Transition, and Weak Transition.
Basic
- Comment: the COMMENT pragma attached
to this identifier.
- Name: the name of the Sub Process
which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
|
|
|
|
Substitution Type
|
It corresponds to a generic type that can refer
another one.
|
|
Children: none
Basic
- Array Dimensions indicates the
dimensions of the Substitution Type, if it is an array type. If
it is a multi-dimensional array type, specify one dimension per
line. A dimension is a constant expression: Constant Value,
Parameter, an integer positive number...
- Comment: the COMMENT pragma attached
to this identifier.
- Is External indicates if the
referenced type is defined outside the context of the Model (for
example, in a C library).
- Name: the name of the Substitution
Type which is used as its identifier. It has to be unique inside
its container. It is even better to name it uniquely inside the
file.
- Type: it corresponds to one of the
Intrinsic Primitive Type or to one of the type declared. To
access to a type declared in the file, the Constant Value has to
be in the scope of this declaration.
- Visibility indicates the visibility
(public or private) if the Substitution Type is declared inside a
Module. If it is declared in a Model Declaration, this
information is useless.
|
|
|
|
Switch
|
It corresponds to a switch operator. A signal is
tested, and the different cases are expressed in Sub Processes
linked to the Switch by a Case Connection.
|
|
Children: none
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
- Signal: points to the tested Signal.
- Src Field: if the tested Signal uses a Tuple Type or an array type,
this attribute is the way to access to the signal field. Not implemented
by the compiler yet.
|
|
|
|
Transposition
|
It corresponds to the matrix transposition
operator.
|
|
Children
- One Input Port (already created) connected
to the matrix expressions to transpose.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Tuple Operator
|
It corresponds to the tuple operator, which
allows to create a tuple with unnamed fields (opposite to a Signal
declare with a Tuple Type).
|
|
Children:
- Input
Port: this operator is a multiple inputs operator, this means
that you can add as many Input Ports as Signal Expressions you
need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Tuple Type
|
It corresponds to the declaration of structured types, called also in
a generic way tuple types with named fields. There are two
categories of tuple types: polychronous, and monochronous. An
object typed by a polychronous tuple is in fact a gathering of
objects. In this way, a polychronous tuple of signals is not a signal (it has
no clock). At the opposite, an object declared of type
monochronous tuple can be a signal: it has a clock (all its named
fields are synchronized). Only monochronous tuple can be used as
the the type of the elements of an array. A tuple type is defined
by a list of typed and named fields; in addition, clock properties
can be specified on the fields of a tuple.
|
|
Children
- Local signals are used to represent the named fields inside the tuple types.
- The Specifications area is used to precise the clock properties between the different fields when the Kind
attribute is a polychronous tuple. For monochronous tuple, the Specifications area must be empty.
Basic
- Array Dimensions indicates the dimensions of the Tuple Type, if it is an array type. If it is a multi-dimensional
array, specify one dimension per line. A dimension is a constant expression: Constant Value, Parameter, an integer
positive number...
- Comment: the COMMENT pragma attached to this identifier.
- Kind: this attribute is of enumerated type whose values are bundle (polychronous tuple), and
struct (monochronous tuple). By default, the value of this attribute is struct.
- Name: the name of the Tuple Type which is used as its identifier. It has to be unique inside its
container. It is even better to name it uniquely inside the file.
- Visibility indicates the visibility (public or private) if the Tuple Type is declared inside a Module. If it is
declared in a Model Declaration, this information is useless.
|
|
|
|
Unary Minus
|
It corresponds to the unary negation arithmetic
operator.
|
|
Children
- One Input Port (already created)
connected to a numerical expression.
Basic
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Use Module
|
It corresponds to the operator to import Modules.
|
|
Children: none
Basic
- Modules: the ordered list of imported
Modules. To import a Module, you have to add it manually (for the
moment) to the Outline of your project, by right-clicking on the
root of the Outline and by selecting « Load
Resource ». Then you select the SME file containing
the Module before adding it to this list attribute.
|
|
|
|
Variable
|
It corresponds to the variable operator, which allows to use a signal
at any clock defined by the context. The result of this operator
is a Signal whose value is the value of the Signal Expression
connected to the Input Port, when this expression is present, or
the last value of the expression otherwise. The initial value is
used when the Signal Expression has not been present yet.
|
|
Children
- One Input Port (already created)
connected to a Signal Expression.
Basic
- Initial Value initialize the value
of the operator before it receives the first value of the Signal
Expression.
- Name: the name of the operator. It
is used to identify it, so it is better if it has a unique name.
|
|
|
|
Weak Transition
|
It corresponds to a transition of an Automaton. A
Weak Transition is evaluated, for the current instant, after the
execution of its source state. If the guard is true, the mode of
the Automaton for the next instant will be the target state.
|
|
Children: none
Basic
- Guard is a textual boolean expression to express when to go from the source state to the target state.
- Name: the name of the model object. It is used to identify it, so it is better if it has a unique name.
- Priority is an integer value which indicates, for states with several out-going Weak Transitions,
the order of their evaluation.
Source-Target
- Dst: the target of a Weak Transition is a sub-state (And State, Automaton, or State) of the Automaton
which belongs this transition, or the History of one of them.
- Src: the source of a Weak Transition is a sub-state (And State, Automaton, or State) of the Automaton
which belongs this transition.
|
|
|

|
Window
|
It corresponds to the sliding window operator, which returns an array composed by the Window Size-th
last values of the expression connected to the Input Port.
|
|
Children
- One Input Port already created to
connected the Signal Expression.
Basic
- Initial Value initialize the value for the (Window Size-1)-th first execution of the operators. This
means that this attribute is an array whose size (the first dimension of the array) is equal to (Window Size-1).
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
- Window Size is an integer constant expression whose value is greater than or equal to 1. If it is equal to 1,
the Initial Value is useless.
|
|
|

|
Xor
|
It corresponds to the logical Xor operator.
|
|
Children:
- Input Port: this operator is a multiple inputs operator, this means that you can add as many Input Ports
as Signal Expressions you need (at least 2) to connect. The ports are ordered.
Basic
- Name: the name of the operator. It is used to identify it, so it is better if it has a unique name.
|
For all identifier names, you have to use a string which begins with a letter, and which can be composed of
alphanumeric characters and the underscore character ( _ ). The following strings are keywords reserved for
the Signal language: