OPTIMIST Framework Download and Installation Guide
The OPTIMIST framework
with complete source code and example xADML specifications
for ARM9E, ARM9E Thumb, MC 56K DSP and TI C62x,
installation guide and documentation,
on this page.
In order to compile and use
OPTIMIST you will need the following software:
The framework was successfully compiled with Intel 8.0 compiler and GNU
gcc 3.4.3 and 4.0.2. It was tested on Linux and on Windows machines under
Remark: The OPTIMIST distributions includes the LCC compiler 4.2.
You can download the official LCC version from the
LCC home page.
It would be interesting for us to know who downloads and uses OPTIMIST.
Please send a short email to
Christoph Kessler (
If you wish to be informed about future new releases of OPTIMIST,
please let us know.
- OPTIMIST framework (Release notes)
- Current version 0.4 (19 Feb 2009) download:
- Version 0.3 (19 April 2006):
- Version 0.2 (.tar.gz format download,
.zip format download)
- Version 0.1 (.tar.gz format download,
.zip format download)
- ILP Model for OPTIMIST-version 0.3
Needed if the ILP optimization engine should be used instead of the
dynamic programming engine in OPTIMIST.
In that case, you
will also need CPLEX
Unpack the source file into a directory. OPTIMIST will need to refer to
that directory, which is done by mapping it to an environment variable
For instance, if that directory is
make the variable
$OPTROOT point to that directory:
setenv OPTROOT /home/agina/src/optimist
Also, the following environment variable should be set:
To compile the OPTIMIST framework into
(make sure that this directory exists), issue the following
BUILDDIR=/home/agina/build/opt HOSTFILE=etc/linux.c -C
$OPTROOT/lcc-4.2 -f ../optcg/makefile.opt
OPTIMIST is a retargetable framework. The processor architecture is specified
using our xADML specification language. We provide three example specifications:
for the ARM9E processor (David Landén's master thesis),
the Motorola DSP 56K processor (Yuan Yongyi's master thesis),
and the Texas Instruments TI-C62x clustered VLIW DSP family (prototype):
- Motorola DSP 56x (work in progress, download
Note: The specification does not yet use the Motorola parallelism feature
(i.e., the issue width of maximum 3 instructions per clock cycle).
This should be fixed shortly.
- ARM9E - ARM mode (currently under conversion to new xADML format)
- ARM9E - Thumb mode (currently under conversion to new xADML format)
- TI-C62x (download
We recommend Andrzej Bednarski's PhD thesis as comprehensive
documentation of the (2006) prototype version:
The xADML specification for ARM9E is described in
Further publications on OPTIMIST
can be found on the
OPTIMIST project homepage.
INSTRUCTIONS FOR RUNNING OPTIMIST
The OPTIMIST framework generates time-optimal code at the basic block level.
To see the command-line options that you can pass to OPTIMIST,
issue the following command
./rcc -target=opt -?
where <file.c> is the source C file.
Usage of options:
|| Specify target architecture file.
|| Generate DAGs in VCG format.
|| Generate DAGs in dot format.
|| Generate code for BB number n.
|| Heuristic: at each z generate at most n variants.
|| Heuristic: at each stage generates at most n transfers.
|| Verbosity level.
|| Show this help.
|| Prints the mnemonics instead of FORMAT assembler
|| Prints mnemonics next to the assembler
|| Shows calls to back-end events
|| Assembler directives and declarations for ARM
|Generates ILP data
|Remove DDEP and LINK edges
(resulting code might be erronous)
To compile the second basic block of the source file foo.c for the
architecture, issue the following command:
-archi=arm9e.xml -bb=1 -arm_asm foo.c
The OPTIMIST framework includes the LCC compiler and
hence the license for LCC applies accordingly.
Comments and suggestions are welcome!
Please send bug reports to
Mattias Eriksson (
Page last updated: 2011/06/29