Table of Contents
sscoc - Esterel compiler to automata in oc format and oc format
optimizer - Version v5_21
sscoc [options] file1 file2 ...
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 , -O n , 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.
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.
Esterel documentations.
esterel(1)
, lcoc(1)
, lcsc(1)
, scssc(1)
, occ(1)
Ecole des Mines de Paris (CMA) and INRIA.
Author: Frederic
Mignard. Updated by Francois-Xavier Fornari.
Table of Contents
Back To Main Manual Page