Espresso
Espresso
Espresso
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
ESPRESSO(5OCTTOOLS)
NAME
espresso - input le format for espresso(1OCTTOOLS)
DESCRIPTION
Espresso accepts as input a two-level description of a Boolean function.
This is described as a character matrix with keywords embedded in the
input to specify the size of the matrix and the logical format of the input
function. Programs exist to translate a set of equations into this format
(e.g., eqntott(1OCTTOOLS), bdsyn(1OCTTOOLS), eqntopla(1OCTTOOLS)). This manual page refers to Version 2.3 of Espresso.
Comments are allowed within the input by placing a pound sign (#) as the
rst character on a line. Comments and unrecognized keywords are passed
directly from the input le to standard output. Any white-space (blanks,
tabs, etc.), except when used as a delimiter in an embedded com- mand, is
ignored. It is generally assumed that the PLA is specied such that each
row of the PLA ts on a single line in the input le.
KEYWORDS
The following keywords are recognized by espresso. The list shows the
probable order of the keywords in a PLA description. [d] denotes a decimal
number and [s] denotes a text string. The minimum required set of
keywords is .i and .o for binary-valued functions, or .mv for multiplevalued functions.
.i [d]
Species the number of input variables.
.o [d]
Species the number of output functions.
.mv [num_var] [num_binary_var] [d1] . . . [dn]
Species the number of variables (num_var), the number of binary
variables (num_binary_var), and the size of each of the multiplevalued variables (d1 through dn).
.ilb [s1] [s2] . . . [sn]
Gives the names of the binary valued vari- ables. This must come after
.i and .o (or after .mv). There must be as many tokens fol- lowing the
keyword as there are input vari- ables.
.ob [s1] [s2] . . . [sn]
Gives the names of the output functions. This must come after .i and
1 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
.o (or after .mv). There must be as many tokens following the keyword
as there are output variables.
.label var=[d] [s1] [s2] ...
Species the names of the parts of a multi- ple-valued variable. This
must come after .mv. There must be as many tokens following the
keyword as there are parts for this vari- able. Note that the variables
are numbered starting from 0.
.type [s] Sets the logical interpretation of the character matrix as described below under "Logical Description of a PLA".
This keyword must come before any product terms. [s] is one of f, r,
fd, fr, dr, or fdr.
.phase [s] [s] is a string of as many 0's or 1's as there
are output functions. It species which polarity of each output
function should be used for the minimization (a 1 species that the
ON-set of the corresponding output func- tion should be used, and a 0
species that the OFF-set of the corresponding output func- tion
should be minimized).
.pair [d] Species the number of pairs of variables
which will be paired together using two-bit decoders. The rest of the
line contains pairs of numbers which specify the binary variables of
the PLA which will be paired together. The binary variables are
numbered starting with 0. The PLA will be reshaped so that any
unpaired binary variables occupy the leftmost part of the array, then
the paired multiple-valued columns, and nally any multiple-valued
vari- ables. If the labels have been specied using .ilb, then the
variable names may be used instead of the column number.
.symbolic [s0] [s1] . . . [sn] ; [t0] [t1] . . . [tm] ;
Species that the binary-valued variables named [s0] thru [sn] are to
be considered as a single multiple-valued variable. Variable [s0] is
considered the most signicant bit, [s1] the next most signicant, and
[sn] is the least signicant bit. This creates a variable with 2**n parts
corresponding to the decodes of the binary-valued variables. The
keywords [t0] thru [tm] provide the labels for each decode of [s0] thru
[sn]. ([t0] corre- sponds to a value of 00...00, [t1] is the value 00...01,
etc.). The binary-variables may be identied by column number, or by
variable name when .ilb is used. The binary- variables are removed
from the function after the multiple-valued variable is created.
.symbolic-output [s0] [s1] . . . [sn] ; [t0] [t1] . . . [tm] ;
Species that the output functions [s0] ... [sn] are to be considered as
2 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
a single symbolic output. This creates 2**n more output vari- ables
corresponding to the possible values of the outputs. The outputs may
be identied by number (starting from 0), or by variable name when
.ob is used. The outputs are removed from the function after the new
set of outputs is created.
.kiss
Sets up for a kiss-style minimization.
.p [d]
Species the number of product terms. The product terms (one per
line) follow immedi- ately after this keyword. Actually, this line is
ignored, and the ".e", ".end", or the end of the le indicate the end of
the input description.
.e (.end)
Optionally marks the end of the PLA descrip- tion.
LOGICAL DESCRIPTION OF A PLA
When we speak of the ON-set of a Boolean function, we mean those
minterms which imply the function value is a 1. Likewise, the OFF-set are
those terms which imply the function is a 0, and the DC-set (don't care set)
are those terms for which the function is unspecied. A function is
completely described by providing its ON-set, OFF-set and DC-set. Note
that all minterms lie in the union of the ON-set, OFF-set and DC-set, and
that the ON-set, OFF- set and DC-set share no minterms.
The purpose of the espresso minimization program is to nd a logically
equivalent set of product-terms to repre- sent the ON-set and optionally
minterms which lie in the DC-set, without containing any minterms of the
OFF-set.
A Boolean function can be described in one of the follow- ing ways:
1)
By providing the ON-set. In this case, espresso computes the OFF-set
as the complement of the ON- set and the DC-set is empty. This is
indicated with the keyword .type f in the input le.
2)
By providing the ON-set and DC-set. In this case, espresso computes
the OFF-set as the complement of the union of the ON-set and the
DC-set. If any minterm belongs to both the ON-set and DC-set, then it
is considered a don't care and may be removed from the ON-set
during the minimization process. This is indicated with the keyword
3 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
4 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
With type fdr, for each output, a 1 means this product term belongs to the
ON-set, a 0 means this product term belongs to the OFF-set, a - means this
product term belongs to the DC-set, and a ~ implies this product term has
no meaning for the value of this function.
Note that regardless of the type of PLA, a ~ implies the product term has
no meaning for the value of this func- tion. 2 is allowed as a synonym for -,
4 is allowed for 1, and 3 is allowed for ~.
MULTIPLE-VALUED FUNCTIONS
Espresso will also minimize multiple-valued Boolean func- tions. There can
be an arbitrary number of multiple- valued variables, and each can be of a
dierent size. If there are also binary-valued variables, they should be
given as the rst variables on the line (for ease of description). Of course,
it is always possible to place them anywhere on the line as a two-valued
multiple-valued variable. The function size is described by the embedded
option .mv rather than .i and .o.
A multiple-output binary function with ni inputs and no outputs would be
specied as .mv ni+1 ni no. .mv cannot be used with either .i or .o - use
one or the other to specify the function size.
The binary variables are given as described above. Each of the multiplevalued variables are given as a bit-vector of 0 and 1 which have their usual
meaning for multiple- valued functions. The last multiple-valued variable
(also called the output) is interpreted as described above for the output (to
split the function into an ON-set, OFF-set and DC-set). A vertical bar | may
be used to separate the multiple-valued elds in the input le.
If the size of the multiple-valued eld is less than zero, than a symbolic
eld is interpreted from the input le. The absolute value of the size
species the maxi- mum number of unique symbolic labels which are
expected in this column. The symbolic labels are white-space delim- ited
strings of characters.
To perform a kiss-style encoding problem, the keyword .kiss should be
included in the le. The third to last variable on the input le must be the
symbolic "present state", and the second to last variable must be the "next
state". As always, the last variable is the output. The symbolic "next state"
will be hacked to be actually part of the output.
EXAMPLE #1
A two-bit adder which takes in two 2-bit operands and pro- duces a 3-bit
result can be described completely in minterms as:
5 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
# 2-bit by 2-bit binary adder (with no carry input)
.i 4
.o 3
0000 000
0001 001
0010 010
0011 011
0100 001
0101 010
0110 011
0111 100
1000 010
1001 011
1010 100
1011 101
1100 011
1101 100
1110 101
1111 110
The option .pair indicates that the rst binary-valued variable should be
paired with the third binary-valued variable, and that the second variable
should be paired with the fourth variable. The function will then be
mapped into an equivalent multiple-valued minimization problem.
The option .phase indicates that the positive-phase should be used for the
second and third outputs, and that the negative phase should be used for
the rst output.
EXAMPLE #2
This example shows a description of a multiple-valued function with 5
binary variables and 3 multiple-valued variables (8 variables total) where
the multiple-valued variables have sizes of 4 27 and 10 (note that the last
6 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
EXAMPLE #3
This example shows a description of a multiple-valued function setup for
kiss-style minimization. There are 5 binary variables, 2 symbolic variables
(the present-state and the next-state of the FSM) and the output (8
variables total).
.mv 8 5 -10 -10 6
.ilb io1 io0 init swr mack
.ob wait minit mrd sack mwr dli
.type fr
.kiss
--1-init0
110000
--1-init0
init0
110000
--0-init0
init1
110000
--00init1
init1
110000
--01init1
init2
110001
--0-init2
init4
110100
--01init4
init4
110100
--00init4
iowait
000000
0000iowait
iowait
000000
1000iowait
init1
110000
01000
iowait
read0
101000
11000
iowait
write0
100010
01001
iowait
rmack
100000
11001
iowait
wmack
100000
7 of 9
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
--01--0-0
--0-1
--0-0
--0-1
--0---0---0--
iowait
rmack
rmack
wmack
wmack
read0
read1
write0
init2
rmack
read0
wmack
write0
read1
iowait
iowait
110001
100000
101000
100000
100010
101001
000000
000000
8 of 9
0001
0001
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
0100
1000
1000
1000
1000
http://www.ecs.umass.edu/ece/labs/vlsicad/ece667...
-------0----------1--------------0--------------0---------------------1
.e
1000
1000
1000
1000
1110
See Also
espresso(1OCTTOOLS)
9 of 9