.TH ACT 10.1
.SH NAME
act, adil \- minterm to actel/simulator
.SH SYNOPSIS
.B cda/act
[
.I flag
\&... ]
.I file
.br
.B cda/adil
.I file
.br
.I simprog
[
.B -d
[
.I id
\&... ] ] [
.B -i
[
.I id value
] ...] [
.B -g
] [
.B -n
.I iter
] [
.B -p
[
.I id period
] ...] [
.B -s
] [
.B -t
[
.I id value
] ...] [
.B -v
.I var value
] ...]
.SH DESCRIPTION
.PP
.I Act
takes a
.I file
in
.IR minterm (10.6)
format and produces a variety of output forms, selected by
.I flag .
If no
.I flag
is given,
.I act
constructs a balanced and factored tree of the circuit in the input
.I file
and covers it with gate patterns from the Actel FPGA
gate library, printing the result in human readable form.
.PP
The basic Actel primitive is a two-level multiplexer, so
.I act
by default tries to express logic trees in terms of multiplexers
prior to template matching.  The
.B -m
flag reduces the zeal of this
process.
.PP
The other
.I flags
select the output format.  They are described in more detail
below; here is a summary:
.TP
.B -a
print in Actel-like format suitable for
.IR adil .
.TP
.B -c
generate a C program for simulation.
.TP
.B -d
debug; just print the resulting tree.
.TP
.BI -f n
set maximum fanout to
.I n
(default 10)
.TP
.B -u
unique; find common subexpressions
.TP
.B -v
verbose; include pin names in output
.PP
The
.B -u
flag causes
.I act
to output gate counts and usage (if default output
is selected) or indicating fanout (for debug output).
.I Act
adds buffers when a signal or gate fanout exceeds the maximum
specified by
.BR -f .
.PP
.I Adil
takes output from
.B "act -a"
and produces Actel ADL format that can be fed to the
proprietary Unix-resident Actel placing and routing software.
.PP
The C program generated by
.B "act -c"
can be compiled and loaded with loader options
.BR "-lsim -lg -lstdio" .
The resulting executable
is a simulator that displays signal traces in an
.IR 8½ (1)
window and takes the following arguments:
.TP
.B -d
display the values of the named
.I ids.
Each
.I id
may be an identifier or an element of an
.I lde
array, in the form
.IB id [ n ]
where
.I n
is an integer.
.TP
.B -i
set the initial value of the named
.I ids
to the corresponding
.I values.
.TP
.B -g
suppress graphics; give textual output only
.TP
.B -n
set number of iterations for the simulation
.TP
.B -p
set half period of the named
.I ids
to the corresponding
.IR periods,
forcing the
.I ids
to be clock signals.
.TP
.B -s
suppress screen graphics; output
.IR pic (1)
input.
.TP
.B -t
specify the trigger values for the named
.I ids.
.TP
.B -v
draw a guide edge when
.I id
attains
.I value.
.PP
Given the number of details involved in running a simulation,
simulators are typically invoked from
.IR mk (1).
If the
.B -p
flag is not given, the simulator takes forcing input from
standard input.
The format for this input is identical to that of the output, so it is
possible to run simulators in a pipeline.
.PP
Beware when catenating multiple
.I minterm
files to form input to
.IR act ;
the scope of external symbols in the input files is lost,
so there can be name conflicts.
On the other hand, this approach makes it easy
to add an external environment to a simulation.
.SH FILES
.TF /$objtype/lib/libsim.a
.TP
.B /$objtype/lib/libsim.a
simulator driver
.SH SEE ALSO
.IR lde (10.1)
.SH BUGS
.I Adil
should be subsumed in
.I act
.br
.I Act
doesn't check the fanout of buffers it adds.
