Previous Next


The reflexive editor plug-in

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.


Creation of a new .sme model file

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 selected the SME Model, the SME wizard is opened. Thus, you have to choose the name of the diagram, select Next> and then select the kind of the root for the model file. There are two kinds of root model element:

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.


Parametrization of model objects

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 (ToFrom) / 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.

Keywords of the language

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:

action / after / and / array / boolean / bundle / case / cell / char / complex / constant / count / dcomplex / default / defaultvalue / deterministic / dreal / else / end / enum / event / external / false / from / function / if / in / init / integer / iterate / label / long / module / modulo / next / node / not / of / operator / or / pragmas / private / process / real / ref / safe / shared / short / spec / statevar / step / string / struct / then / to / tr / true / type / unsafe / use / var / when / where / window / with / xor



Previous Next