sscoc(1)

NAME
sscoc - Esterel compiler to automata in oc format and oc format optimizer - Version v5_21

SYNOPSIS
sscoc [options] file1 file2 ...

DESCRIPTION
The sscoc processor of the Esterel compiler has two functions. First, it translates boolean equations in ssc format into fully-expanded or single-state (with option -mono) automata in oc format. Second, if option -O is set, it optimizes the produced automata. sscoc reads one or more ssc format or oc format input files and produces a single oc format output file. If there is no input file, the standard input stream is read. If no output file is specified (using -B or -D option) the standard output stream is used. Typical use is:

    sscoc < foo.ssc > foo.oc

or

    sscoc -mono foo.ssc -D /tmp

or

    sscoc foo.oc -B foo_opt -O

The following options are interpreted by sscoc. The order of theses options is not significative and they can even be placed after or between the names of the files to process. The following options control the automata optimization :

-mono
    This option tells the compiler to translate boolean equation systems in ssc format into straight-line single-state oc format instead of computing the equivalent automata.

-O, -On, and -Ono_dags
    Optimize the oc code produced. The list of optimizations performed by the processor may be selected with a combination of bits, with the following correspondence:

            bit 0 (value: 1): strip actions
            bit 1 (value: 2): remove useless tests
            bit 2 (value: 4): factorize tests
            bit 3 (value: 8): reduce trees
            bit 4 (value: 16): strip trees
            bit 5 (value: 32): group actions

    If n is not given, value 63 (i.e.: perform all optimizations) is assumed. The special value no_dags selects all optimizations which do not create any sub-dag, in order to still be able to use all tools working on plain automata (e.g. ocmauto).
    The meaning of each optimization is as follow:

    strip actions
        Optimize action table by removing duplicated actions. The source references of such actions are also removed.

    remove useless tests
        Optimize action trees by replacing decision trees of the form "if A then B else B" by simply "B".

    factorize tests
        For each test action, try to move up, before the test action, the actions which appear in both the then-part and the else-part of a test tree.

    reduce trees
        Optimize action trees by replacing duplicated sub-trees by new trees. This option produces oc format which can not be read by oc processors working on plain automata.

    strip trees
        Optimize action trees by replacing duplicate linear action trees by new actions.

    group actions
        Group actions always following each other. Very useful in combination with option -mono.

    All optimizations are tried in the above order, but the user may changed this order with option -reduce_first (see below). Statistics on the optimization may be printed with option -v2 (see below).

-reduce_first
    This option force the tree reduction to be made before the test factorization. Doing so is faster but may lead to a lesser optimization.

-tree_overhead=n
    Specify the number of integers (n) occupied by a new tree in the final code. This number of integers is:
        [sizeof(tree overhead) / sizeof(integer)]
    where "sizeof(integer)" is the size of the object coding a tree element in the final code. This number is used to compute the minimum length of the redundant sub-trees which can be replaced when processing the -O option (see above). Default is 4.

-action_overhead=n
    Specify the number of integers (n) occupied by a new action in the final code. This number of integers is:
        [sizeof(action overhead) / sizeof(integer)]
    where "sizeof(integer)" is the size of the object coding a tree element in the final code. This number is used to compute the minimum length of the redundant sequence of actions which can be replaced when processing the -O option (see above). Default is 10.

-no_after_dag_pragmas
    Remove the lists of emitted local signals computed by the compiler and which are normally written after each state transition. This gives better optimization but removes some debugging information.

-v2 Full verbose option: print on the standard error stream statistics of the optimization (the number of actions or integers removed, the number of trees added, etc.). This options implies -v (see below).

The remaining options are common to all processors of the Esterel compiler :

-B name
    name defines the output file base name. The suffix ".oc" is added automatically (and possibly a working directory name -- see the following option). If this option and the -D option are omitted, the standard output stream is used. Be careful not to give the output file the same directory and base names than those of an oc file to optimize !

-D directory
    Specify a directory where the output file will be placed. The default is the current directory. See -B option above.

-v  First verbose option: print on the standard error stream the name of each module as it is processed and whether it is compiled, optimized, or both.

-v2 Second verbose option: print on the standard error stream statistics of the optimization (the number of actions or integers removed, the number of trees added, etc.). This options implies -v.

-size
    Print automata size statistics on the standard error stream: the number of states, the number of actions and the number of action calls.

-show
    Display dynamically, on the standard error stream, the number of states generated and analyzed so far.

-s  Silent mode. Perform compilation and/or optimizations but do not produce the output file.

-w  Suppress all warning messages.

-stat
    Print statistics on the standard error stream: the parsing and compiling time and the process size (physical memory only). Implemented on BSD4x systems only.

-version
    Print the version name on the standard error stream and terminate, ignoring all other arguments.

-access
    Print processor protection information on the standard error stream and terminate, ignoring all other arguments.

-info
    Print various information about the compilation of the processor on the standard error stream and terminate, ignoring all other arguments.

BUGS
The multiple emissions of single signals are not yet detected during the compilation of boolean equations into automata, even fully-expanded. Simulation information of single-state generated automata tells that all input signals are always awaited. Simulation of single-state generated automata can not check all expressions as they are in Esterel v3 compiler. Some statistics on optimization are not so informative as they could be. Please report all other bugs to the ESTEREL team.

SEE ALSO
Esterel documentations.
esterel(1), lcoc(1), lcsc(1), scssc(1), occ(1)

IDENTIFICATION
Ecole des Mines de Paris (CMA) and INRIA.

Author: Frederic Mignard. Updated by Francois-Xavier Fornari.