ESPRESSO – A QUICK REFERENCE
The purpose of this document is to give a quick introduction to ESPRESSO to use it for logic minimization. This document is not meant to be taken as a complete reference. More detailed documents will be put up on the course web page. These documents explain the input format as well as all the available options in detail. Interested students are strongly encouraged to refer to these documents.
What is
ESPRESSO?
ESPRESSO is
a 2-level minimization tool, comes as a part of the SIS package and is
available as open source at UC Berkeley CAD page. Espresso takes as
input a
two-level representation of a two-valued (or multiple-valued) Boolean
function,
and produces a minimal equivalent representation.
Espresso
reads the file provided (or standard input if no files are specified),
performs
the minimization, and writes the minimized result to standard output. Espresso automatically verifies that the
minimized function is equivalent to the original function. Options
allow for
using an exact minimization algorithm, for choosing an optimal phase
assignment
for the output functions, and for choosing an optimal assignment of the
inputs
to input decoders.
How does
one specify the input file?
Espresso
accepts as input a two-level description of a Boolean function. The
input file
is described as a PLA. Comments are allowed within the input by placing
a pound
sign (#) as the first character on a
line. Comments and unrecognized keywords are passed directly from the
input
file to standard output. Any white-space(blanks, tabs, etc.), except
when used
as a delimiter in an embedded command, is ignored.
It is generally assumed that the PLA is
specified such that each row of the PLA fits on a single line in the
input
file. The easiest way to understand the format is through an example.
Consider a
single bit adder that has three inputs: a, b and cin. It produces 2
outputs z
and cout. The espresso pla file looks like this:
# This is a
comment line
# PLA file
for a full-adder
# There are
three inputs and 2 outputs
.i 3
.o 2
# Now, we
describe the function. The first 3 columns describe the inputs,
followed by
# blank
spaces. Then the 2 outputs z and cout are given
000
00
001
10
010
10
011
01
100
10
101
01
110
01
111
11
.e
A don’t
care at the output is specified as a ‘-‘. A detailed explanation of all
key
words can be found in the references on the course web page.
How do I
run Espresso on my machine in ICAEN?
Login to login-pa.engineering.uiowa.edu
For running
Espresso do the following at your login prompt:
1) setenv
OCTTOOLS /usr/local/opt/octtools5.2
set
path=($path $OCTTOOLS/bin)
2)
Then espresso -h will list
the commands if
everything is okay
You can
start running espresso with: espresso [options] [filename].
What are
the available options in Espresso?
The
standard package is available with several options. Here, we list a few
commonly used options
Heuristic
mode:
The default
option in Espresso and so requires no options specification. Uses
standard
espresso heuristics
Exact mode:
Does an
exact 2-level minimization. Use –Dexact. Run-time for exact
minimization of a
logic function is exponential in the size of the input. Hence, if you
use this
option, it is quite possible that the program runs forever for large
files.
-s:
Gives the
statistics after running espresso like run-time, literal count etc.
-t:
Will show a
trace of the execution of the program.
Now, for
example if you are given a PLA file describing a single bit adder
called
adder.pla and you are asked to minimize the file using exact
minimization and
report the literal count and run-times, you may type the following
command:
“espresso
–Dexact –s adder.pla”
That
explains espresso in brief. Please feel free to contact me in case you
have any
doubts or have problems in setting espresso up.
Original documentation:
Ganesh
Venkataraman