NAME

luciole, simec - Lustre graphical simulation

SYNOPSIS

luciole file.lus node [ options]

luciole file.ec [ options ]

simec file.ec [ options ]

DESCRIPTION

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).

Main window

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".

Boolean mode: auto step vs compose

The behavior of Boolean inputs depend on the mode:

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 layout

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.

OPTIONS

-h

(help) display available options.

-v

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).

-auto

start in auto step mode.

-comp

start in compose mode.

-p file.iop

(panel) specify a particular layout description.

IOP FORMAT

Lexical aspects

Syntax

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 RESSOURCE FILE

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:

Global(verbose)

(read/write) holds a Boolean value (1 or 0) indicating wheter the verbose mode is set or not.

Global(verbose_channel)

(read/write) holds a tcl channel identifier (initially stdout) indicating where to put messages in verbose mode.

Global(show_step_ctr)

(read/write) is a Boolean indicating if the step counter is shown (1) or not (0).

Global(show_step)

(read/write) is a Boolean indicating if the step button is shown (1) or not (0).

Global(auto_step)

(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:

Global(module_name)

(read only) is the name of the running lustre node (string).

Global(input_names)

(read only) is the list of input names (string list).

Global(input_types)

(read only) is the list of input types (string list).

Global(output_names)

(read only) is the list of output names (string list).

Global(output_types)

(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

Global(user_menu)

(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.

ENVIRONMENT

The environement variable LUSTRE_INSTALL must exist and hold the path of the lustre v4 distribution.