luciole, simec - Lustre graphical simulation |
luciole, simec - Lustre graphical simulation
luciole file.lus node [ options]
luciole file.ec [ options ]
simec file.ec [ options ]
The Lustre graphical simulation is based on the same library than the file-to-file simulator ecexe. The main tool is simec, based on tcl-tk for the graphical aspects.
When called with a lustre file name, the script luciole calls lus2ec and then simec with the remaining options (otherwise it behaves like simec).
simec opens a main window containing a widget for each input and each output of the ec program. Input widgets allow the user to set the input values, while output widgets just show the current values of the program output. Basically, Boolean inputs are implemented by buttons, while numerical inputs are implemented by "scale widgets".
The behavior of Boolean inputs depend on the mode:
In auto-step mode, Boolean inputs are supposed to be exclusive, and a step is performed as soon as an input button is pressed.
In compose mode, Boolean inputs are displayed as "check buttons": the user may select/deselect Boolean inputs without performing a computation step.
Whatever is the current mode, the pre-defined button Step allows the user to provoque a computation step.
The current mode can be changed via the Clocks menu.
Input/output widgets are organized into lines and columns. The tool normally opens a panel with a column for the inputs, and a column for the outputs, but the user may define a customized layout by defining an associated Input Output Panel file (iop extension). When called with foo.ec, simec first searches for a file whose name is foo.iop, and tries to use it as a layout description.
Since no specific tool is available, the best way to customize the input/output panel for a program file.ec is to first get the default iop description by using the save file.iop command in the Files menu, and then edit the resulting file.
(help) display available options.
set verbose mode: every reaction is echoed on standard output. The output format follows the rif conventions; as a consequence the outputed text can be used as a correct Reactive Input Flow description by tools that support this format (cf. sim2chro).
start in auto step mode.
start in compose mode.
(panel) specify a particular layout description.
Comments: all characters between "//
" and the end of the line are ignored; all characters between "/*
" and the following "*/
" are ignored.
number is an integer or real notation.
ident means any string of alphanumeric characters, including number.
string means any string of printable characters enclosed whithin quotes.
Parts whithin brackets are optional; item-list simply means one or more "space-separated" items.
Additional information can be added to integer and real types.
A panel expression is built with the n-ary operators line and col. Leaf expressions are references to input, output or panel identifiers. The leaf box has no meaning: it simply "takes place" in the layout. An identifier must be declared before it can be used. The panel top must be the last declared.
The user may customize luciole by defining a ressource file, whose name must be luciolerc.tcl. The extension outlines the fact that this file is a tcl/tk script file. A standard ressource file is provided in the Lustre distribution which can be copied and modified:
$LUSTRE_INSTALL/lib/luciolerc.tcl
The ressource file is automatically searched when luciole has initialized its window. The file is searched first in the current directory, then in the user home directory, and at last in the lustre distribution library:
./luciolerc.tcl
./.luciolerc.tcl
~/luciolerc.tcl
~/.luciolerc.tcl
$LUSTRE_INSTALL/lib/luciolerc.tcl
The first encountered file in the previous list is evaluated as it is by the luciole tcl interpret, and, as a consequence, it has (potentially) access to all internal variable defined by luciole. However it is strongly recommended to only use a few set of variables, as it is explained in the standard ressource file. The most useful variables are:
(read/write) holds a Boolean value (1 or 0) indicating wheter the verbose mode is set or not.
(read/write) holds a tcl channel identifier (initially stdout) indicating where to put messages in verbose mode.
(read/write) is a Boolean indicating if the step counter is shown (1) or not (0).
(read/write) is a Boolean indicating if the step button is shown (1) or not (0).
(read/write) is a Boolean indicating if luciole runs in auto-step mode (1) or in compose mode (0).
Note that some command line options (-v, -auto, -comp) may override commands in the ressource file.
Informations on the current program are also available; those variables may not be modified:
(read only) is the name of the running lustre node (string).
(read only) is the list of input names (string list).
(read only) is the list of input types (string list).
(read only) is the list of output names (string list).
(read only) is the list of output types (string list).
At last, a tk container widget (i.e. a frame) is reserved in the lurette window for user's customization. Most preciselly, this widget (initially empty) is located in the luciole menubar, and its typical use is to add one or more user-defined menu buttons
(read only) contains the tk-path of a frame where the user can pack his/her own menus.
The standard ressource file is an example of how to create such a menu: it adds a menu button Tools, with a command sim2chro that dynamically launches the chronogram manager sim2chro.
The environement variable LUSTRE_INSTALL must exist and hold the path of the lustre v4 distribution.
luciole, simec - Lustre graphical simulation |