Misc.
Reference Manual Pages
PLA(5OCTTOOLS)
NAME
pla - Format for physical description of
Programmable Logic
Arrays.
SYNOPSIS
pla
DESCRIPTION
This format is used by programs which
manipulate plas to
describe
the physical implementation.
Lines beginning with
a `#' are comments and are ignored. Lines beginning with a
`.'
contain control information
about the pla. Currently,
the control information is given in the
following order:
.i <number of
inputs>
.o
<number of outputs>
.p
<number of product terms (pterms)>
and optionally,
.na<name> (the name to be used
for the pla)
What follows then is a description of the
AND and OR planes
of
the pla with one line per
product term. Connections in
the AND plane are represented with a `1'
for connection to
the
non-inverted input line and a `0' for connection to the
inverted input line. No connection to an input
line is
indicated with 'x', 'X', or '-' with '-' being preferred.
Connections in the OR plane are indicated
by a '1' with no
connection being indicated with 'x',
'X', '0', or '-' with
'-' being preferred. Spaces or tabs may be used freely and
are ignored.
The end of the pla description is
indicated with:
.e
Programs capable of handling split and
folded arrays employ
the following format:
AND PLANE
Column (1) Contact to
input (2) No contact to input
(1) (2)
1 - Normal
contacts, no splits or folds
! _ Split
below
; , Fold to
right
: . Split below and fold to right
OR PLANE
Column (1) Contact to
output (2) No contact to output
(1) (2)
SunOS
5.7 Last change:
8/23/81 1
Misc.
Reference Manual Pages PLA(5OCTTOOLS)
I ~ Normal
contacts, no splits or folds
i = Split below
| ' Fold to
right
j " Split
below and fold to right
ADDITIONAL ELEMENTS
* Input buffer
+ Output buffer
D Depletion load associated with product term
N No depletion load associated with product term
Note
that the decoding
function of the
AND plane is
separated from the specification of its connectivity. This
makes the AND and OR plane specifications
identical.
These
programs handle the
following more general set
of .parameters:
.il
<number of left-AND plane inputs>
.ir
<number of right-AND plane inputs>
.ol
<number of left-OR plane inputs>
.or
<number of right-OR plane inputs>
.p
<number of product terms>
.ilt <labels left-top-AND plane>
.ilb <labels left-bottom-AND plane>
.irt <labels right-top-AND plane>
.irb <labels right-bottom-AND plane>
.olb <labels left-bottom-OR plane>
.olt <labels left-top-OR plane>
.orb <labels right-bottom-Or plane>
.ort <labels right-top-Or plane>
.pl
<labels left product terms>
.pr
<labels right product terms>
The first group of parameters must
precede the second group.
If there is only one AND or OR plane it
is assumed to be the
left one and the companion .parameters
may be shortened by
dropping their (left,right) designation
character.
In order to better deal with folded
and split PLAs,
the
following .parameters are proposed:
.ig
<input group>
.og
<output group>
.ins <inputs excluded from splitting>
.inf <inputs excluded from folding>
.ons <outputs excluded from splitting>
.onf <outputs excluded from folding>
SunOS
5.7 Last change:
8/23/81 2
Misc.
Reference Manual Pages
PLA(5OCTTOOLS)
In
order to build
finite state machines, the
following .parameters are proposed:
.iltf <left-top-AND feedback terms>
.ilbf <left-bottom-AND feedback terms>
.irtf <right-top-AND feedback terms>
.irbf <right-bottom-AND feedback terms>
.oltf <left-top-OR feedback terms>
.olbf <left-bottom-OR feedback terms>
.ortf <right-top-OR feedback terms>
.orbf <right-bottom-OR feedback terms>
.ilr <left re-ordered inputs>
.irr <right re-ordered inputs>
.olrf <left re-ordered outputs>
.orrf <right re-ordered outputs>
The .XXXf parameters must occur in
pairs, with the .oXXf
line
first. Input and output terms
must occur on the same
side (top, bottom) of the PLA. Feedback terms must be given
in ascending order. The re-order .parameters simplify feed-
back routing.
SEE
ALSO
espresso(1OCTTOOLS), espresso(5OCTTOOLS),
misII(1OCTTOOLS)
SunOS
5.7 Last change:
8/23/81 3
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
NAME
espresso - input file 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.
This manual page refers to Version 2.3 of
Espresso.
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 com-
mand,
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.
KEYWORDS
The following keywords are recognized by
espresso. The list
shows
the probable order of the
keywords in a PLA descrip-
tion.
[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 multiple-valued
functions.
.i [d] Specifies the number of input variables.
.o [d] Specifies the number of output functions.
.mv [num_var] [num_binary_var] [d1] . . .
[dn]
Specifies the number of variables
(num_var), the
number of binary variables
(num_binary_var), and
the size of each of the
multiple-valued vari-
ables (d1 through dn).
.ilb [s1] [s2] . . . [sn]
Gives the names of the binary
valued variables.
This must
come after .i and .o (or after .mv).
There must be as many tokens
following the key-
word as there are input
variables.
.ob [s1] [s2] . . . [sn]
Gives the names of the output functions.
This
must come after .i and .o (or
after .mv). There
must be as many tokens
following the keyword as
there are output variables.
.label var=[d] [s1] [s2] ...
Specifies the names of the
parts of a multiple-
valued variable.
This must come
after .mv.
SunOS
5.7 Last change: 22 August
1986 1
Misc.
Reference Manual Pages ESPRESSO(5OCTTOOLS)
There must be as many tokens
following the key-
word as there are parts for
this variable. 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 specifies which polar-
ity of each output function
should be used for
the minimization (a 1 specifies that the ON-set
of the corresponding output
function should be
used, and a 0 specifies that the OFF-set of the
corresponding output function
should be minim-
ized).
.pair [d] Specifies 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 vari-
ables 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
finally any
multiple-valued variables. If
the
labels have been specified
using .ilb, then the
variable names may be used
instead of the column
number.
.symbolic [s0] [s1] . . . [sn] ; [t0]
[t1] . . . [tm] ;
Specifies that the
binary-valued variables named
[s0] thru [sn] are to be considered as a single
multiple-valued variable.
Variable [s0] is con-
sidered the most significant bit, [s1] the next
most significant, and [sn] is
the least signifi-
cant 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] corresponds to a
value of
00...00, [t1] is the value
00...01, etc.). The
binary-variables may
be identified by column
number, or by variable name
when .ilb is used.
The binary-variables are removed from the func-
tion after
the multiple-valued variable
is
created.
.symbolic-
SunOS
5.7 Last change: 22 August
1986 2
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
output [s0] [s1] . . . [sn] ;
[t0] [t1] . . . [tm] ;
Specifies that the output
functions [s0] ...
[sn] are
to be considered as a single symbolic
output. This creates 2**n more output variables
corresponding to the possible
values of the out-
puts. The outputs may be identified by
number
(starting from 0), or by variable name when .ob
is used. The outputs are removed from the func-
tion after the new set of
outputs is created.
.kiss Sets up for a kiss-style minimization.
.p [d] Specifies the number of product terms. The pro-
duct terms
(one per line) follow immediately
after this keyword.
Actually, this line
is
ignored, and the
".e", ".end", or the end of the
file indicate the end of the
input description.
.e (.end) Optionally marks the end of the PLA description.
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. Like-
wise, 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 unspecified. 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 find
a logically equivalent set of
product-terms to represent 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 following
ways:
1)
By providing the ON-set. In this
case, espresso com-
putes the OFF-set as the
complement of the ON-set and
the DC-set is empty. This is indicated with the
key-
word .type f in the input file.
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 con-
sidered a don't care and may be
removed from the ON-set
during the minimization process.
This is indicated
SunOS
5.7 Last change: 22 August
1986 3
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
with the keyword .type fd in the
input file.
3)
By providing the ON-set and
OFF-set. In this
case,
espresso computes the DC-set as
the complement of the
union of the ON-set and the
OFF-set. It is an error
for
any minterm to belong to both
the ON-set and OFF-
set. This error may not be detected during the minimi-
zation, but it can be checked with the subprogram "-
Dcheck" which will check the
consistency of a function.
This is indicated with
the keyword .type fr in the
input file.
4)
By providing the ON-set, OFF-set and DC-set. This is
indicated with the keyword .type fdr
in the input file.
If at all possible, espresso should
be given the
DC-set
(either
implicitly or explicitly) in order to improve the
results of the minimization.
A term is represented by a
"cube" which can be
considered
either a compact representation of an
algebraic product term
which implies the function value is a 1,
or as a representa-
tion
of a row in a PLA which implements the term. A cube
has an input part which corresponds to
the input plane of a
PLA,
and an output part which corresponds to the output
plane of a PLA (for the multiple-valued
case, see below).
SYMBOLS
IN THE PLA MATRIX AND THEIR INTERPRETATION
Each position in the input plane corresponds
to an input
variable
where a 0 implies the
corresponding input literal
appears complemented in the product term,
a 1
implies the
input
literal appears uncomplemented in the product term,
and - implies the input literal does not
appear in the pro-
duct term.
With type f, for each output, a 1
means this product term
belongs
to the ON-set, and a 0 or - means this product term
has no meaning for the value of this function.
This type
corresponds to an actual PLA where only the ON-set is actu-
ally implemented.
With type fd (the default), for each
output, a 1 means this
product
term belongs to the ON-set, a 0
means this product
term has no meaning for the value of this
function, and a -
implies this product term belongs to the
DC-set.
With type fr, 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, and a - means this
product term has no mean-
ing for the value of this function.
SunOS
5.7 Last change: 22 August
1986 4
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
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 function.
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 different size.
If there
are
also binary-valued variables, they should be given as
the first 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 out-
puts
would be specified 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 multiple-valued 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
fields in the input file.
If the size of the multiple-valued field
is less than zero,
than
a symbolic field is interpreted from the input file.
The absolute value of the size specifies
the maximum number
of unique symbolic labels which are
expected in this column.
The symbolic labels are white-space
delimited strings of
characters.
To perform a kiss-style encoding problem,
the keyword .kiss
should
be included in the file. The
third to last variable
on the input file 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.
SunOS
5.7 Last change: 22 August
1986 5
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
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:
# 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
It is also possible to specify some extra
options, such as:
# 2-bit by 2-bit binary adder
(with no carry input)
.i 4
.o 3
.ilb a1 a0 b1 b0
.ob s2 s1 s0
.pair 2 (a1 b1) (a0 b0)
.phase 011
0000 000
0001 001
0010 010
.
.
.
1111 110
.e
The option .pair indicates
that the first
binary-valued
variable should be paired with the third
binary-valued vari-
able, 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
SunOS
5.7 Last change: 22 August
1986 6
Misc.
Reference Manual Pages ESPRESSO(5OCTTOOLS)
be used for the second and third outputs,
and that the nega-
tive phase should be used for the first
output.
SunOS
5.7 Last change: 22 August 1986 7
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
EXAMPLE
#2
This example shows a description of a
multiple-valued func-
tion 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 multiple-valued
variable is the "output" and
also encodes the ON-set, DC-set
and OFF-set information).
.mv 8 5 4 27 10
.ilb in1 in2 in3 in4 in5
.label var=5 part1 part2 part3 part4
.label var=6 a b c d e f g h i j k l
m n
o p q r s t u v w x y z a1
.label var=7 out1 out2 out3 out4
out5 out6
out7 out8 out9 out10
0-010|1000|100000000000000000000000000|0010000000
10-10|1000|010000000000000000000000000|1000000000
0-111|1000|001000000000000000000000000|0001000000
0-10-|1000|000100000000000000000000000|0001000000
00000|1000|000010000000000000000000000|1000000000
00010|1000|000001000000000000000000000|0010000000
01001|1000|000000100000000000000000000|0000000010
0101-|1000|000000010000000000000000000|0000000000
0-0-0|1000|000000001000000000000000000|1000000000
10000|1000|000000000100000000000000000|0000000000
11100|1000|000000000010000000000000000|0010000000
10-10|1000|000000000001000000000000000|0000000000
11111|1000|000000000000100000000000000|0010000000
.
.
.
11111|0001|000000000000000000000000001|0000000000
SunOS
5.7 Last change: 22 August
1986 8
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
EXAMPLE
#3
This example shows a description of a
multiple-valued func-
tion
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
--00- init1 init1 110000
--01- init1 init2 110001
--0-- init2 init4 110100
--01- init4 init4 110100
--00- init4 iowait 000000
0000- iowait iowait 000000
1000- iowait init1 110000
01000 iowait read0 101000
11000 iowait write0 100010
01001 iowait rmack 100000
11001 iowait wmack 100000
--01- iowait init2 110001
--0-0 rmack rmack 100000
--0-1 rmack read0 101000
--0-0 wmack wmack 100000
--0-1 wmack write0 100010
--0-- read0 read1 101001
--0-- read1 iowait 000000
--0-- write0 iowait 000000
SunOS
5.7 Last change: 22 August
1986 9
Misc.
Reference Manual Pages
ESPRESSO(5OCTTOOLS)
EXAMPLE
4
This example shows the use of the
.symbolic keyword to setup
a multiple-valued minimization problem.
.i 15
.o 4
.ilb SeqActive<0>
CacheOp<6> CacheOp<5> CacheOp<4>
CacheOp<3>
CacheOp<2> CacheOp<1> CacheOp<0>
userKernel<0>
Protection<1> Protection<0>
cacheState<1>
cacheState<0> PageDirty<0>
WriteCycleIn<0>
.ob CacheBusy<0>
dataMayBeValid<0> dataIsValid<0>
WriteCycleOut<0>
.symbolic CacheOp<6>
CacheOp<5> CacheOp<4> CacheOp<3>
CacheOp<2>
CacheOp<1> CacheOp<0> ;
FET NA PHY_FET PR32 PRE_FET
PW32 RA32 RD32
RD64 RDCACHE RFO32 RFO64 TS32
WR32 WR64 WRCACHE ;
.symbolic Protection<1>
Protection<0> ;
PROT_KRO_UNA PROT_KRW_UNA
PROT_KRW_URO PROT_KRW_URW ;
.symbolic cacheState<1>
cacheState<0> ;
CS_Invalid CS_OwnPrivate
CS_OwnShared CS_UnOwned ;
.p 22
0000001--010110 0001
0000001-1-00110 0001
00001011-01011- 0100
000010111-0011- 0100
0000--001--01-- 0100
0000-10--0-1--- 0100
0000-10-1--1--- 0100
00000-0--0-1--- 0100
00000-0-1--1--- 0100
0000-10--0--1-- 0100
0000-10-1---1-- 0100
00000-0--0--1-- 0100
00000-0-1---1-- 0100
---1----------- 1000
--1------------ 1000
-1------------- 1000
1-------------- 1000
-------0------- 1000
----1---------- 1000
-----0--------- 1000
------0-------- 1000
--------------1 1110
.e
SunOS
5.7 Last change: 22 August
1986 10