Sis Manual
Sis Manual
Sis Manual
NAME
sis – Sequential Interactive System
SYNOPSIS
sis [options] [file]
DESCRIPTION
SIS is an algorithmic sequential circuit optimization program. SIS starts from a description of a sequen-
tial logic macro-cell and produces an optimized set of logic equations plus latches which preserves the
input-output behavior of the macro-cell. The sequential circuit can be stored as a finite state machine or
as an implementation consisting of logic gates and memory elements. The program includes algorithms
for minimizing the area required to implement the logic equations, algorithms for minimizing delay, and
a technology mapping step to map a network into a user-specified cell library. It includes all of the
optimization techniques available in MIS, and replaces MIS completely.
SIS can be run in interactive mode accepting commands from the user, or in batch mode reading com-
mands from a file or from the command line. If no options are given on the command line, SIS will
enter interactive mode. Otherwise, SIS will enter batch mode. When running in batch mode, SIS reads
its input from the file given on the command line, or from standard input if no filename is given; output
is directed to standard output, unless -o is used to specify an output filename.
When SIS starts-up, it performs an initial source of the files $SIS/sis_lib/.misrc and $SIS/sis_lib/.sisrc.
Typically this defines a standard set of aliases for various commands. Following that the files ˜/.misrc,
˜/.sisrc, ./misrc, and ./sisrc are sourced for user-defined aliases at startup.
OPTIONS
-c cmdline
Run SIS in batch mode, and execute cmdline. Multiple commands are separated with semi-
colons.
-f script Run SIS in the batch mode, and execute commands from the file script.
-t type Specifies the type of the input when running in batch mode. The legal input types are: Berke-
ley Logic Interchange Format (-t blif), eqntott(1CAD)-format equation input (-t eqn), KISS2
format (-t kiss), Oct Logic View (-t oct), Berkeley PLA Format (-t pla), SLIF format (-t slif),
and suppress input (-t none). The default input type is blif.
-T type Specifies the type of the output when running in batch mode. The legal output types are:
bdnet(1CAD)-format net-list (-T bdnet), Berkeley Logic Interchange Format (-T blif),
eqntott(1CAD)-format equation input (-T eqn), KISS2 format (-T kiss), Oct logic view (-T
oct), Berkeley PLA Format (-T pla), SLIF format (-T slif), and suppress output (-T none).
The default output type is blif.
-o file Specifies the output file when running in batch mode. For Oct output, this is a string of the
form cell:view. The default for the output is the standard output.
-s Suppress sourcing the commands from the standard startup script ($SIS/sis_lib/.misrc and
$SIS/sis_lib/.sisrc).
-x For batch mode operation, suppress reading an initial network, and suppress writing an output
network. Equivalent to -t none -T none.
COMMAND SUMMARY
All commands are summarized below according to their function : network manipulation (operations on
the logic-level implementation), ASTG manipulation (operations on the asynchronous signal transition
graph), STG manipulation (operations on the synchronous state transition graph), input-output, network
status, command interpreter, and miscellaneous. The last two tables summarize the newest commands
that operate on ASTG’s and sequential circuits, respectively.
_____________________________________________________________________________
_____________________________________________________________________________
Network Manipulation Commands
act_map technology mapping to Actel architecture
add_inverter add inverters to the network to make all gates negative
astg_slow remove hazards from the ASTG implementation
(uses bounded wire delay model)
astg_syn synthesize a two-level implementation from the ASTG
(uses unbounded wire delay model)
astg_to_f generate a two-level implementation of each output of the ASTG
(uses bounded wire delay model)
astg_to_stg generate an STG from the ASTG
buffer_opt inserts buffering trees for high fanout gates
chng_clock toggles clock setting between user-specification and generated values
collapse collapse a network or a set of nodes
decomp decompose a node into a set of nodes
eliminate eliminates nodes whose value falls below a threshold
env_seq_dc extract sequential don’t cares based on the environment
equiv_nets group and merge nets by equivalence classes
espresso collapse network and minimize with a two-level minimizer
extract_seq_dc extract sequential don’t cares
factor determine a factored form for a node
fanout_alg select a fanout optimization algorithm (to be used by map)
fanout_param set some parameters for fanout algorithm (to be used by map)
free_dc frees the external don’t care network
force_init_0 modify so all latches to have a 0 initial state
full_simplify simplify the nodes using local compatible don’t cares
fx do fast extraction of the best double cube and single cube divisors
gcx extract common cubes from the network
gkx extract common multiple-cube divisors from the network
invert invert a node, and toggle the phase of all of its fanouts
latch_output forces some outputs to be fed directly by latches
map technology mapping to find an implementation for the network
one_hot quick one-hot encoding
phase phase assignment to minimize number of inverters
red_removal perform redundancy removal via atpg
reduce_depth increase the speed before mapping by reducing the depth
remove_dep removes some structural (but not logical) dependencies
remove_latches removes redundant latches
replace quick algebraic decomposition on 2-input NANDs
resub perform resubstitution of a node into other nodes in the network
retime move the latches in the circuit to minimize cycle time/# latches
simplify two-level minimization of each node
speed_up restructure critical paths to reduce delay
speed_up_alg several algorithms for performance enhancement
state_assign create the logic from the STG using state assignment
stg_extract extract an STG from the logic
stg_to_network converts a state-encoded STG to a logic network
sweep remove all inverters, buffers, and unnecessary latches from the network
tech_decomp decompose a network for technology mapping
_____________________________________________________________________________
wd re-express a node using another node using weak division
_________________________________________________________________________
_________________________________________________________________________
Network Manipulation Commands (cont.)
xl_absorb decreases number of fanins to make nodes feasible
xl_ao AND-OR decomposition of an infeasible network to a feasible one
xl_coll_ck collapse and apply Roth-Karp decomposition and cofactoring
xl_cover global cover of nodes by "xilinx" blocks of pld gates
xl_decomp_two decomposition into two compatible "xilinx" functions
xl_imp generates a feasible network using various decomposition schemes
xl_k_decomp Karp-Roth decomposition for mapping into "xilinx" gates
xl_merge merge "xilinx" blocks
xl_part_coll partial collapse
xl_partition local cover of nodes by "xilinx" blocks of pld gates
xl_rl timing optimization for table look up architectures
_________________________________________________________________________
xl_split decompose a network (using routing complexity as cost)
_________________________________________________________________
_________________________________________________________________
ASTG Manipulation Commands
astg_add_state adds states to the ASTG to guarantee implementability
astg_contract generate the contracted net for a signal of the ASTG
astg_encode critical race-free STG encoding
astg_lockgraph build the lock graph for the current ASTG
astg_marking set or display the initial marking of the ASTG
astg_persist make the ASTG persistent
astg_state_min minimizes the current STG and derives encoding
information for the associated ASTG
astg_stg_scr transforms the STG to one that satisfies SCR property
_________________________________________________________________
stg_to_astg transforms the STG (with the SCR property) to an ASTG
_________________________________________________________________
_________________________________________________________________
STG Manipulation Commands
state_assign assign binary codes to the states in the STG
state_minimize minimize the number of states in the STG
_________________________________________________________________
stg_to_astg transforms the STG (with the SCR property) to an ASTG
__________________________________________________________
__________________________________________________________
Timing Commands
c_check verifies satisfaction of clocking constraints
__________________________________________________________
c_opt computes the optimal clock for a given clocking scheme
________________________________________________________________
________________________________________________________________
Input-Output Commands
read_astg read a signal transition graph in ASTG format
read_blif read a network in BLIF format
read_eqn read a network in eqntott(1CAD) format
read_kiss read an STG in KISS2 format
read_library read a library description file
read_oct read a network from an Oct Logic view
read_pla read a network in PLA format
read_slif read a network in Stanford Logic Interchange Format
set_delay set delay parameters for primary inputs and outputs
set_state set the current state in a sequential circuit to the given state
write_astg write the current signal transition graph in ASTG format
write_bdnet write the current (mapped) network in bdnet(1CAD) format
write_blif write the current network in BLIF format
write_eqn write the current network in eqntott(1CAD) equation format
write_kiss write the STG in KISS2 format
write_oct write the current network into an Oct Logic view
write_pla write the current network in PLA(5CAD) format
write_pds write the current network in PDS format for Xilinx
________________________________________________________________
write_slif write the current network in SLIF format
______________________________________________________________________
______________________________________________________________________
Network Status Commands
astg_current display information about the current ASTG
astg_print_sg print the state graph of the current ASTG
astg_print_stat print the statistics of the current ASTG
constraints print the delay constraints for a set of nodes
plot_blif plot the network in a graphics window (only available in xsis)
power_estimate estimate dissipated power based on switching activity
power_free_info frees memory associated with power calculations
power_print print switcing probabilities and capacitances
print print logic function associated with a node
print_altname print the short (and long) names for a node
print_clock print out information about the clocks in the network
print_delay timing simulate a network and print results
print_factor print the factored form associated with a node
print_gate print information about the gates used in the mapped network
print_io print the fanin and fanout of a node (or the network)
print_kernel print the kernels (and subkernels) of a set of functions
print_latch print out information about all the latches in the circuit
print_level print the levels of a set of nodes
print_library list the gates in the current library
print_map_stats print delay and area information for a mapped network
print_state print the current state of a sequential circuit
print_stats print statistics on a set of nodes
______________________________________________________________________
print_value print the value of a set of nodes
___________________________________________________________________
___________________________________________________________________
Command Interpreter
alias provide an alias for a command
chng_name switch between short and long forms for node names
echo merely echo the arguments
help provide on-line information on commands
history a UNIX-like history mechanism inside the SIS shell
quit exit SIS
reset_name rename all of the short names in the network
save save a copy of the current executable
set set an environment variable
source execute commands from a file
time provide a simple elapsed time value
timeout sends an interrupt to the SIS process
unalias remove the definition of an alias
undo undo the result of the last command which changed the network
unset unset an environment variable
usage
___________________________________________________________________
provide a dump of process statistics
______________________________________________________________________
______________________________________________________________________
Miscellaneous
atpg perform combinational atpg using SAT approach
bdsyn special command used by bdsyn(1CAD)
env_verify_fsm verify equivalence of two networks in an environment
short_tests generate small sequential test sets
sim_verify verify networks equivalent via simulation
simulate logic simulation of the current network
stg_cover check that the STG behavior covers the logic implementation
verify verify equivalence of two combinational networks
______________________________________________________________________
verify_fsm verify equivalence of two combinational or sequential networks
________________________________________________________________________
________________________________________________________________________
Asynchronous Synthesis Commands
astg_add_state adds states to the ASTG to guarantee implementability
astg_contract generate the contracted net for a signal of the ASTG
astg_current display information about the current ASTG
astg_encode critical race-free STG encoding
astg_lockgraph build the lock graph for the current ASTG
astg_marking set or display the initial marking of the ASTG
astg_persist make the ASTG persistent
astg_print_sg print the state graph of the current ASTG
astg_print_stat print the statistics of the current ASTG
astg_slow remove hazards from the ASTG (uses bounded wire delay model)
astg_state_min minimizes the current STG and derives encoding
information for the associated ASTG
astg_stg_scr transforms the STG to one that satisfies SCR property
astg_syn synthesize a two-level implementation from the ASTG
(uses unbounded wire delay model)
astg_to_f generate a two-level implementation of each output of the ASTG
(uses bounded wire delay model)
astg_to_stg generate an STG from the ASTG
read_astg read a signal transition graph in ASTG format
________________________________________________________________________
write_astg write the current signal transition graph in ASTG format
___________________________________________________________________________
___________________________________________________________________________
Sequential Synthesis Commands
c_check verifies satisfaction of clocking constraints
c_opt computes the optimal clock for a given clocking scheme
chng_clock toggles clock setting between user-specification and generated values
env_seq_dc extract sequential don’t cares based on the environment
env_verify_fsm verify equivalence of two networks in an environment
extract_seq_dc extract sequential don’t cares
force_init_0 modify so all latches to have a 0 initial state
latch_output forces some outputs to be fed directly by latches
one_hot quick one-hot encoding
power_estimate estimate dissipated power based on switching activity
power_free_info frees memory associated with power calculations
power_print print switcing probabilities and capacitances
print_clock print out information about the clocks in the network
print_latch print out information about all the latches in the circuit
read_kiss read an STG in KISS2 format
read_slif read a network in Stanford Logic Interchange Format
remove_latches removes redundant latches
retime move the latches in the circuit to minimize cycle time/# latches
set_delay set delay parameters for primary inputs and outputs
set_state set the current state in a sequential circuit to the given state
short_tests generate small sequential test sets
state_assign create the logic from the STG using state assignment
state_minimize minimize the number of states in the STG
stg_cover check that the STG behavior covers the logic implementation
stg_extract extract an STG from the logic
stg_to_network converts a state-encoded STG to a logic network
verify_fsm verify equivalence of two combinational or sequential networks
write_kiss write the STG in KISS2 format
___________________________________________________________________________
write_slif write the current network in SLIF format
NODELIST ARGUMENTS
Most commands which take a node also take a list of nodes as an argument. This is referred to as a
node-list in the documentation below. This list of nodes includes ∗ to specify all nodes in the network,
i() to specify the primary inputs of the network, o() to specify the primary outputs of the network,
i(node) to specify the direct fanin of node, and o(node) to specify the direct fanout of node.
STANDARD ALIASES
When SIS starts, it executes commands from a system startup file (usually $(SIS)/sis_lib/.misrc and
$(SIS)/sis_lib/.sisrc). This defines a standard set of aliases, and then sources the files ˜/.misrc, ˜/.sisrc,
./misrc, and ./sisrc to allow users to define their own set of aliases. The default alias set includes the
following aliases which have proven useful. Note that many of the aliases are intended for compatibility
with SIS Version #1.0.
___________________________________________________________________
Standard Aliases
___________________________________________________________________
alias command description
1h sa nova -e h do 1-hot state encoding using nova
ai add_inverter add inverters to a network to correct the phases
alt print_altname print both long and short names for a node
asb resub -a algebraic resubstitution
c chng_name toggle between long and short names
clp collapse collapse network
crit pd -a -p 2 print out the 2 most critical paths
el eliminate eliminate nodes below a threshold
exit quit terminate program
fs full_simplify simplify each node function
gd decomp -g good decomposition (i.e., best kernel decomposition)
gf factor -g good factoring (i.e., best kernel factoring)
gp phase -g good phase assignment (i.e., more expensive)
inv invert invert a node keeping network function consistent
oh one_hot do quick one-hot encoding
man help print out command information
nts print_stats print network status (including factored form)
p print print sum-of-products form of a node
pat print_delay -a print node arrival times
pc print_clock print information about clocks in the network
pd print_delay print delay
pf print_factor print factored form of a node
pg print_gate print gate information for a node
pgc print_gate -s summarize gate information for the network
pio print_io print inputs and outputs of a node or the network
pk print_kernel print kernels of a node
pl print_latch print latch information
plt print_delay -l print output loading for each node
plv print_level print the level of each node
pn p -n print nodes in ’negative’ form
prt print_delay -r print node required times
ps print_stats -f print network status (including factored form)
psf print_stats print network status
pst print_delay -s print node slack times
pv print_value print node values
q quit terminate program
qd decomp -q quick decomposition (i.e., any kernel decomposition)
qf factor -g quick factoring (i.e., any kernel factoring)
qp phase -q quick phase (i.e., simple greedy algorithm)
ra read_astg read a signal transition graph in ASTG format
rd reduce_depth increase speed before mapping by reducing the depth
re read_eqn read equations from a file
rk read_kiss read an STG in KISS2 format
rl read_blif read a blif network from a file
rlib read_library read a library
ro read_oct read a network from an Oct view
rp read_pla read a PLA in espresso format
rr red_removal remove combinationally redundant signals
___________________________________________________________________
rs read_slif read a network in SLIF fornat
______________________________________________________________________________
Standard Aliases (cont.)
______________________________________________________________________________
alias command description
rsn reset_name reset all short names starting from ’a’
rt retime -n retime an unmapped network
sa state_assign create the logic from the STG using state assignment
se stg_extract extract an STG from the logic
sim simulate logic simulation on a network
sim0 simplify -d quick minimization of a node (no don’t cares)
sim1 simplify -m nocomp -d complete minimization of a node (no don’t cares)
sim2 simplify single pass minimization with fanin DC-set
sim3 simplify -m nocomp complete minimization with fanin DC-set
sm state_minimize minimize the number of states in the STG
so source source a script file
sp speed_up critical path restructuring to reduce delay
sw sweep remove buffers, inverters from a network
td tech_decomp decompose network into AND/OR gates
u undo undo last command which changed network
v verify_fsm verify the equivalence of two sequential networks
wa write_astg write the current signal transition graph in ASTG format
wb write_bdnet write mapped network in BDNET format
we write_eqn write network in EQN format
wk write_kiss write the STG in KISS2 format
wl write_blif write network in blif format
wp write_pla write network in Espresso PLA format
wo write_oct write network as an Oct view
ws write_slif write network in SLIF format
xdc
______________________________________________________________________________
extract_seq_dc extract sequential don’t cares (unreachable states)
add_inverter
Add inverters into the network wherever needed to make each signal (including the primary inputs) used
only in its negative form. After this command, every literal in a node is in the negative form. This is
the appropriate starting point for the technology mapping step.
Hi
happy birthday !
CAVEAT: Currently there is no check to see if there is a circular dependency in the alias definition.
e.g.
Generate the contracted net for the specified signal of the ASTG.
The -f option adds the restriction that the contracted net must also be free-choice. Chu has conjectured
that this restriction may not be necessary, so it is optional at this time until we have answered this ques-
tion.
astg_current
Display information about the current ASTG: its name, whether it is a free-choice net, state machine, or
marked graph, and the number of state machine (SM) and marked graph (MG) components if astg_smc
or astg_mgc have been run on the ASTG.
astg_lockgraph [-l]
Build the lock graph for the current ASTG.
With the -l option, edges are added to the ASTG to ensure that the lock graph is connected, and thus
that the ASTG has the Complete State Coding property.
If an ASTG has the CSC property, the state of the circuit can be represented completely by the collec-
tion of input, output and internal signals specified in the ASTG. This simplifies many synthesis algo-
rithms.
The algorithm works only for ASTGs that are marked graphs (no choice). See astg_state_min for a set
of commands that ensure Complete State Coding for more general ASTGs.
astg_persist [-p]
Add constraints to make an ASTG persistent. With the -p option, non-persistent transitions are printed
but the ASTG is not modified.
For small ASTGs with very high concurrency, enforcing the ASTG persistency property will partially
and sometimes completely enforce the Complete State Coding property (CSC). If an ASTG has the
CSC property, the state of the circuit can be represented completely by the collection of input, output
and internal signals specified in the ASTG. This simplifies many synthesis algorithms.
astg_print_sg
Print the state graph of the current ASTG. If no state graph is present, this will create one by token
flow.
astg_print_stat
Print the statistics of the current ASTG: name of the ASTG file, initial marking, total number of states
in the state graph and the total number of I/O signals.
astg_slow [-v debug_level] [-t tolerance] [-s] [-u] [[-f -F] external_delay_file] [-d default_external_delay] [-m
min_delay_factor]
Remove hazards from the ASTG implementation, inserting delay buffers after some ASTG signals.
Delays are inserted so that no gate within the circuit implementation can react as though the ASTG
specified ordering of signals is reversed in time.
It must be invoked after technology mapping (see astg_to_f for a recommended script file).
The -m option specifies the amount by which all MINIMUM delays are MULTIPLIED (this until the
delay computation will understand min/max delays). Of course 0.0 < min_delay_factor <= 1.0. Default
value: 1.0.
The -t option specifies the tolerance to be used during the hazard check procedure (the larger the
specified value, the more conservative is the algorithm). Default value: 0.0.
The -s option specifies not to use the shortest-path algorithm when computing the delays in the network.
This might result in being overly pessimistic (this option is only experimental).
The -f option specifies a file name to search for the minimum delays between output signals and input
signals of the ASTG (i.e. for those signals that are not being synthesized). This can be useful if some
information about these signals is known either from the specification or from the synthesis of another
sub-component of the total asynchronous system.
The file can also be updated with the minimum delays between each input signal and each output signal
if the -F option is used in place of -f. This allows for separate synthesis of various sub-components of
an asynchronous system. In this case iteration might be necessary to obtain optimal results, and a warn-
ing message is issued when the stored information is changed, and a new iteration is required.
The -u option specifies not to remove hazards, but only to update the external elay file (if appropriate).
This can be used to remove hazards from a set of Signal Transition Graphs that are synthesized
separately (e.g. by contraction). In this case, a first round of synthesis can be performed on each Signal
Transition Graph, followed by astg_slow with the -F and the -u options, to store the information on the
delay of the function implementing each signal. Then astg_slow can be iterated among the Signal Tran-
sition Graphs with the -F option only until convergence is obtained. The results should be comparable
with synthesis and hazard removal from a single Signal Transition Graph, but can be considerably faster
for large specifications.
The -d option specifies the default minimum delay between output signals and input signals of the
ASTG (if no information can be obtained from the above described file). The default value is 0.0 (i.e.
the environment responds instantaneously), but this can be overly pessimistic, and result in an unneces-
sary slow and large implementation.
astg_state_min [-v debug_level] [-p minimized_file] [-c "command"] [-b -B] [-g -G] [-u] [-m -M] [-o #] [-f
signal_cost_file]
Minimizes the current State Transition Graph and derives the information required to encode the associ-
ated Signal Transition Graph. The complete sequence of actions to implement a Signal Transition Graph
that does not have Complete State Coding is as follows:
astg_to_stg -m
astg_state_min
astg_encode
astg_add_state
astg_to_f
...
The -f option selects a signal cost file. This file should contain one line of the form
<signal name> <cost>
(e.g. "bus_ack 10") for each signal in the ASTG. The encoding algorithm minimizes the sum of the
weights of signals that follow state transitions. Hence this file can be used to strongly favor or disfavor
changing the predecessors of the transitions of a signal.
By default, output signals have a cost of one and input signals have a cost equal to the number of output
signals plus one. In this way, no input signal is constrained, if possible.
The command may emit a series of diagnostic messages of the form:
warning: the STG may not be live (multiple exit point): may need constraint <signal 1> -> <signal 2>
These messages may or may not cause a failure (diagnosed as internal error) later on during
astg_add_state. In case of failure, one of the required constraints (ideally the constraint that least
decreases the circuit performance due to the reduction in concurrency) should be added to the ASTG.
The procedure should be repeated until no more such messages occur.
The options listed below are not generally useful except for debugging purposes or to obtain faster (but
potentially less optimal) results for large Signal Transition Graphs. All algorithm speed indications
reflect average case analysis.
The -B and -b options select Binary Decision Diagrams as internal data structure to find the encoding
information (both are generally slower than the default selection, but -b is generally faster than -B).
The -M and -m options select Sparse Matrices as internal data structure to find the encoding information
(both are generally slower than the default selection, but -m is generally faster than -M). If -M is
selected, then -o can be used to define some further internal options (this is strongly discouraged).
The -G and -g options select a greedy (-g) or very greedy (-G) heuristic to find the encoding information
(both faster and looser than the default selection).
The -u option selects a generally slower heuristic to find the encoding information.
The -c option allows to use a different minimizer from the default choice. The minimizer must be able
to read and write .kiss format and to write equivalence class information in the output file, in the follow-
ing format:
#begin_classes <number of classes>
# <state name> <class number>
...
#end_classes
The -p option avoids calling the minimizer altogether, just reading in the specified minimized file (in
.kiss format with equivalence class information).
gkx -ab
resub -ad; sweep
gcx -b
map
astg_slow
The -p option causes the atpg not to build any product machines. Thus, neither deterministic propagation
nor good/faulty product machine traversal will be performed.
The -t option first converts the network to arbitrary fanin AND and OR gates. The decomposed network
is returned.
The -d option allows the specification of the length of the random sequences applied during random test
generation. The default length is the depth of the circuit’s state transition graph.
The -n option allows the specification of the number of sequences to fault simulate at one time during
fault simulation. The default is the system word length.
The -v allows the specification of the verbosity level of the output.
The -y option allows the specification of the length of the random sequences applied during random pro-
pagation. The default length is 20.
If file is specified, test patterns are written out to the given file.
Note: in order to use this command with sequential circuits, the circuit reset state must be specified in
the circuit input file.
bdsyn
A special command exported for use by bdsyn(1). Not for general use.
buffer_opt [-l #] [-f #] [-c] [-d] [-T] [-L] [-v #] [-D] node-list
Builds fanout trees for the nodes in the node-list. If no nodes are specified selects the nodes to be buf-
fered in order to improve performance of the entire network. The network is assumed to be mapped.
The -l # option specifies the number of fanouts which a node can have so as to be eligible for buffering.
The default is 2, hence any multi-fanout node is a candidate for buffering.
The -f # option specifies the transformations to use. Set the three least significant bits indicate the use
(value == 1) of the transformations. xx1 to use the repower transformation, x1x to use an unbalanced
transformation and 1xx to use the balanced distribution of signals. More than one transformation can be
set active. Thus to allow the algorithm full flexibility use the value = 7 (111 in binary notation) which is
also the default.
The -c option specifies that one pass be carried out. The default is to iterate till no improvement is
achieved.
The -d option allows the complex gates to be decomposed into smaller ones so as to increase drive
capability. By default the complex gates are retained.
The -L option traverses the network from outputs to inputs ensuring that for every node, the gate that
implements it does not drive a load greater than the max_load limit specified for that gate. THIS
OPTION IS NOT YET IMPLEMENTED.
The -T option displays the circuit performance as the iterations progress. If the required times at the out-
puts are not specified the circuit delay is shown, else the minimum slack value is displayed.
The -v #,-D option are for debugging. The -v # option is the most verbose and the amount of verbosity
can be increased by letting the argument for -v range from 1 to 100.
The user can give global set-up (and hold) times for all memory elements using the -S (-H) option. By
default it computes the set-up and hold times from the library. If the optimal clocking scheme was found
using the c_opt command make sure you use the same delay model!
The -d value selects the debug level. The range is 1-5.
This routine runs faster (upto 2X) when compiled with the priority queue library from octtools (use flag
-DOCT when compiling this directory).
chng_clock
Toggles the setting of the clock between the user-specified clock settings (specified in the blif file) and
the working values (generated by algorithms inside SIS).
All algorithms use the current setting as input. If the algorithms modify the clocking scheme or the
cycle-time they write the modified clocking scheme into the working fields. Thus, to write out the blif
file containing the clock scheme generated by algorithms inside SIS, the setting must first be set to the
working one and then write_blif must be invoked.
chng_name
Toggles the network between long-name mode (user supplied names) and short-name mode (automati-
cally generated single-character names).
Given two arguments, it is assumed that the second node is a fanin of the first node. In this case, this
dependency is removed (the first node is expressed without the second node as a fanin).
Please note that this command negates any mapping that may have been done at an earlier time.
Caution should be taken when collapsing network to two levels because the two level representation
may be too large. The alternative is to use eliminate (selective collapse). Refer to eliminate for the
details.
constraints [node_1....node_n]
Print the values of the various delay constraints for the nodes in the argument list, which must be either
inputs or outputs. Also prints the default values of the default delay parameters for the network. Used
to check the values set by set_delay.
equiv_nets [-v n]
This command simplifies the network using net equivalence. With full_simplify, it is one of the two
routines able to take advantage of network don’t cares.
equiv_nets groups all nets of the network by equivalence classes. Two nets are equivalent if and only if
they always compute the same function with respect to the external care set. It only uses input don’t
cares, not observabiilty don’t cares.
For each equivalence class, equiv_nets selects a lowest cost net, and moves the fanout of all the other
nets of the equivalence class onto the lowest cost net.
Finally, it calls the command sweep.
-v allows the specification of the verbosity level of the output. The default value is 0.
espresso
Collapse the network into a PLA, minimize it using espresso, and put the result back into the multiple-
level nor-nor form.
don’t cares.
-o depth allows the specification of the depth of search for good variable ordering. A larger value for
depth will require more CPU time but determine a better ordering. The default value is 2.
-v allows specification of the verbosity level of the output.
The -m option specifies method for determining the reachable states. consistency builds the entire tran-
sition relation and uses it to determine the reached states. bull does output cofactoring to find the reach-
able states. The product method is similar to the consistency method but input variables are smoothed
as soon as possible as the characteristic function is being built. This makes the size of the resulting
BDD representing the characteristic function of the transition relation smaller. The default method is
product.
force_init_0
This command replaces all latches initialized to 1 by latches initialized to 0. It inserts an inverter before
and after the latch to maintain circuit behavior.
This command is useful for certain types of FPGA architectures which do not support the initialization
of latches to 1.
free_dc
Frees the don’t care network associated with a network. This command is used for debugging and
experimental purposes.
-d If this option is used no observability don’t cares are computed. In this case the local don’t cares are
only the unreachable points in the local space of each node (a subset of the satisfiability don’t care set).
-o Used for BDD ordering. If 0 (default) is used, variables are ordered based on their depth. If 1 is used,
the level of a node is used for its ordering.
method specifies the algorithm used to minimize the nodes. snocomp (default) invokes a single pass
minimization procedure that does not compute the complete offset. nocomp invokes the full minimiza-
tion procedure (ala ESPRESSO) but does not compute the complete offset. dcsimp invokes single pass
tautology-based minimizer.
-l generates fanin don’t cares only for nodes with the same or subset support as the node being minim-
ized which have level less than the node being minimized. The level is the largest number of nodes on
the longest path from the node to a primary input.
The -d option enables a debugging mode which traces the execution of gcx.
%% Last command.
%stuf Last command beginning with "stuf".
%n Repeat the n’th command.
%-n Repeat the n’th previous command.
ˆoldˆnew Replace "old" w/ "new" in previous command.
invert node-list
Invert each node in the node-list. It is used when the complement of a node is to be implemented.
Note that it does not change the logic function of the current Boolean network, but will have an effect
on the structure of the network.
invert_io node-list
This command reverses the polarity of the specified nodes. The nodes have to be external primary
inputs or external primary outputs.
The polarity inversion is done by adding an inverter before a primary output or after a primary input.
-C cost_limit in partial collapse, collapse a node only if its cost is at most cost_limit (Default: -C 3).
-f collapse_fanin considers only those nodes for partial collapse which have at most collapse_fanin
fanins (Default: -f 3).
-d decomp_fanin considers only those nodes for decomposition in iterative improvement which have
fanin greater than or equal to decomp_fanin. (Default -d 4).
-M MAXOPTIMAL constructs an optimal ROBDD (if the ROBDD option is selected) for a node if
number of fanins is at most MAXOPTIMAL.
-r is the final mapping option. After initial mapping and possible iterative improvement, a mapped net-
work is created in which each intermediate node corresponds to one ACT1 module. If not specified, the
network may not have a one-to-one correspondence with the ACT1 module.
-D selects the decomposition method. If specified, computes a factored form of the node and then con-
structs ITE for each factor.
-c causes the matching algorithm to be exact. If not specified, matching is approximate.
-o causes the OR gate in ACT1 to be ignored. So mapping is done onto a three-mux structure.
-v turns on the verbosity flag. When used, information about the
algorithm is printed as it executes.
-s gives the statistics, regarding the block count of the circuit.
The -f n option controls the internal fanout handling. A value of ’0’ disables it completely (i.e. the map-
ping is strictly tree-based). A value of ’1’ enables an heuristics approximating the cost of the previous
tree at fanout branches. A value of ’2’ enables the usage of cells with internal fanout (such as EXOR
and MULTIPLEXER). A value of ’3’ (default) enables both. None of these values is guaranteed to give
the best solution in all cases, but ’3’ usually does. A warning is issued if the current value can give bad
results with the current network (use undo before mapping again).
The -i option disables the inverter-at-branch-point heuristic. It is intended for experimentation with dif-
ferent mapping heuristics.
The -m option controls the cost function used for a simple version of the tree covering algorithm. A
mode of ’0’ (the default) minimizes the area of the resulting circuit. A mode of ’1’ minimizes the delay
of the resulting circuit (without regard to the total area). An intermediate value uses as cost function a
linear combination of the two, and can be used to explore the area-delay tradeoff. A value of ’2’
minimizes the delay on an estimate of the critical path obtained from a trivial 2-input NAND mapping,
and the area elsewhere.
The -n option allows the access to a better tree covering algorithm. It can only be used in delay mode,
i.e. with an argument of 1: -n 1. This algorithm gives better performance than -m 1 but is noticeably
slower. It uses a finer dynamic programming algorithm that takes output load values into account, while
-m 1 option supposes all loads to be the same. As a consequence, the -n 1 option performs better than
-m 1 especially with rich libraries of gates. Both algorithms use heuristics to guess the load value at
multiple fanout points. Both options should always be used with fanout optimization turned on.
If -r is given (raw mode), the network must already be either 1- and 2-input NAND gates, or 1- and 2-
input NOR gates form, depending on whether a NAND-library, or a NOR-library was specified when the
library was originally read (see read_library). If -r is not given, appropriate commands are inserted to
transform the network into the correct format.
The -s option prints brief statistics on the mapping results.
The -p option forces the mapper to ignore the delay information provided by the user at primary inputs
and primary outputs (arrival times, required times, loads, drive capability). It is intended for experimen-
tal use. This option forces the arrival times and required times to be all 0, the loads and drive capabili-
ties to be all equal to the load and drive capability of the second smallest inverter in the library. If there
is only one inverter, the data are taken from that inverter.
The -v n options is for development use, and provides debugging information of varying degrees of ver-
bosity as the mapping proceeds.
The -A option recovers area after fanout optimization at little or no delay cost by resizing buffers and
inverters.
The -B n option controls the enforcement of load limits during fanout optimization. A value of 0
ignores the load limits. A value of 1 takes load limits into account. The default is set to 1. This
option is effective only in conjunction with fanout optimization. It is implemented by artificially
increasing the load at a gate output by a multiplicative factor whenever the load exceeds the limit
specified in the library. The default multiplicative factor is 1000. This value can be changed with the -b
n option. There is a priori no reason to change this value.
The -F option performs fanout optimization. This disables the internal fanout handling (i.e. forces -f 0).
In order to recover area after fanout optimization use the -A option. There are several fanout optimiza-
tion algorithms implemented in SIS. For details, type help fanout_alg and help fanout_params.
The -G option recovers area after fanout optimization at no cost in delay by resizing all gates in the net-
work.
The -W option suppresses the warning messages.
one_hot
Does a quick one-hot encoding of the current STG. It assigns one-hot codes, minimizes the resulting
PLA using espresso, and returns the network to SIS.
Vdd = 5V
f = 20MHz
p = expected number of transitions of node i in one clock cycle
i
C = capacitive load of node i
i
The expected number of transitions of each node per clock cycle is calculated through symbolic simula-
tion, based on the static probabilities of the primary inputs (by default prob_one = prob_zero = 0.5). The
capacitive load of a node is obtained by summing the gate capacitances of its fanout nodes and adding
some internal drain capacitance. Gate capacitances are multiple of a minimum sized transistor (0.01pF),
admitting transistor sizing based on the number of inputs to the node (up to a value max_input_sizing,
default 4). Drain capacitances are calculated from the number of transistors this node has (multiple of
0.005pF) and this number can be obtained either from a factored form or sum of products.
-a n Number of PS lines to be correlated (default 1). Only used for the APPROXIMATION method.
-e f Maximum error allowed for PS lines probabilities (default 0.01). Only used for the APPROXIMA-
TION method.
-n n Number of sets of 32 input vectors to be simulated (default 100). Only used for SAMPLING mode.
-f filename Allows the specification of input probabilities, node capacitances and node delays in the for-
mat:
-M n Maximum number of inputs of a node considered for transistor sizing (default 4).
-N n Interval of input vectors for which the current value of power estimation is printed. Only used for
SAMPLING mode.
Note: currently a memory fault occurs on the RS6000 when the exact calculation is used for present
state probabilities. This is probably due to the use of stg_extract.
power_free_info
Frees data structures storing capacitance and switching of every node in the network.
power_print
Prints the switching probability and capacitance for each node in the network. Only valid after a power
estimation has been performed.
print_altname node-list
Print the alternate name of all the nodes in the node-list. If the current name mode is short (SIS inter-
nal name), the alternate name will be the long name (user-specified name) and vice-versa.
print_clock
Prints the clocking scheme associated with the current network. The clocking scheme printed depends
on the current setting of the clock data structure (see chng_clock).
node based on the distribution of arrival times. The parameters used in this model prediction are option-
ally specified using the -f option.
print_factor node-list
Print all the nodes in the node-list in the factored form. If a node has not beed factored, factor -q will
be used to factor the node.
If the -s option is specified, only the latch input, output, initial and current values are given. If a node-
list is given, only the latches associated with those nodes are printed (each node should be a latch input
or output).
print_map_stats
Prints delay and area information of the network. The network should be mapped.
print_state
Prints out the current state of the machine for both the STG and the logic implementation. For the logic
implementation, the current state is printed as a string of integers representing the values on the latches:
0, 1, 2 (don’t care), and 3 (undefined). For the STG, the current state is printed with its symbolic and
encoded names.
quit [-s]
Stop the program. Does not save the current network before exiting. -s frees all the memory before
quitting. This is slower, and is used for finding core leaks or when sis is called from another program.
read_astg [<file-name>]
Read a text description of an Asynchronous Signal Transition Graph (ASTG). The overall format fol-
lows the style of BLIF, and uses an adjacency list to describe the net interconnection structure. If no
filename is specified, the description is read from stdin.
All names in the ASTG description must start with a letter, consist of letters, digits and underscores, and
are case-sensitive. A signal transition is represented with a suffix: "+" means a low to high transition,
"-" means high to low, "˜" means toggles (changes to the opposite value.
.model <model-name>
This gives an arbitrary name to the ASTG, and it must be the first line of the model description.
.inputs <signal-list>
Specifies a list of names of ASTG input signals. Signals from multiple .inputs are concatenated.
.outputs <signal-list>
Specifies a list of names of ASTG output signals. Signals from multiple .inputs are concatenated.
.internal <signal-list>
Specifies a list of names of ASTG internal signals, i.e. signals which are only used to maintain state
information.
.dummy <name-list>
Specifies a list of names which are accepted as dummy or null transitions. Null transitions are necessary
to specify some behaviors using the ASTG syntax. By convention, the name "e" is used as a dummy
signal (to represent epsilon transitions).
.graph
Indicates the lines which follow describe the ASTG net structure using an adjacency list format. This
must follow all signal declarations (.inputs, etc.). Net places are optional for simple constraints between
two transitions; in this case an intervening place is generated automatically. Multiple instances of a
transition are distinguished by following them with a slash and a copy number. For example, a second
instance of transition "t+" can be specified by "t+/2". Copy numbers do not have to be consecutive.
.marking {<place-list>} An initial marking can optionally be specified after the net structure has been
given. Implied places (see .graph) between two transitions x∗ and y∗ can be specified using the syntax
<x∗,y∗>.
.end This required line indicates the end of the ASTG description.
Error messages are printed for any unrecognized input sequences.
Read a set of logic equations in the format expected by eqntott(1). Each equation becomes a node in
the logic network.
INORDER and OUTORDER can be used to specify the primary inputs and primary outputs for the net-
work. If neither is given, then primary inputs are inferred from signals which are not driven, and pri-
mary outputs are inferred from signals which do not have any fanout.
The equations are of the form "<signal> = <expr> ;". For reference, the equation format uses the opera-
tors:
_______________________
() grouping
!= (or ˆ) exclusive-or
== exclusive-nor
! complement
& (or ∗) boolean-and
_______________________
(or +) boolean-or
As a simple extension to eqntott, juxtaposition of two operands stands for boolean-and, and ’ used as a
post-fix operator stands for complement. Hence,
F = a∗!b + c∗!d ;
and
F = a b’ + c d’ ;
represent the same equation.
Note that eqntott and read_eqn treat the intermediate nodes of a network slightly differently. read_eqn
will not make an intermediate node a primary output unless it also appears in the OUTORDER list.
Also, the resulting network is a multiple-level network with all of the intermediate signals preserved.
Finally, eqntott is order-dependent in that it requires signals to be defined before they can be used again;
read_eqn relaxes this condition.
The -a option specifies that the new network should be appended to the current network. Functions are
associated between the two networks using the long names of each network. Name conflicts (where two
functions attempt to define the same name) generate warning messages and are resolved by renaming the
signal from the new network.
The -s option, though accepted, has no effect on read_eqn and is instead reserved for the read_pla
command. Note that since the characters ’(’ and ’)’ are used for grouping, they cannot be part of a sig-
nal name.
read_kiss [filename]
Reads a kiss2 format file into a state transition graph. The state names may be symbolic or strings of
"0" and "1". Inputs and outputs should be strings of "0", "1", and "-"; inputs should not be symbolic.
The kiss2 format is described in doc/blif.tex. Note that there is no mechanism for specifying the names
of the I/O pins in kiss2. Naming can be done in SIS by specifying a blif file containing the .inputs and
.outputs lines (which give I/O names) followed by the embedded kiss2 file. See also stg_to_network,
read_kiss_net.
Note that read_kiss followed by write_kiss alters the ordering of the product terms. This could make a
difference in the nova output.
read_oct cell[:view]
Read in a network from the Oct facet ‘cell:view:contents’. If ‘view’ is not specified, it defaults to
‘logic’. The network name is set to ‘cell:view’. Oct nets without names are given machine-generated
unique names. All primary inputs and outputs are named the same as the equivalent Oct formal termi-
nals of the facet.
This operation replaces the current network with the new network.
read_slif filename
Read in a network from the file filename which is in slif format. SLIF is a hierarchical circuit descrip-
tion language and the root network, the one returned to the caller, is defined to be the first network
encountered in the file filename.
For combinational circuits, external don’t cares are automatically taken into account when the don’t care
network is attached to the care network. The PI’s and PO’s of the external don’t care network (when it
is not NIL) must match exactly with the care network. That is, the don’t care network cannot specify
only a subset of the PI’s or PO’s of the care network. If this condition is not met, then the atpg package
automatically adds dummy primary inputs and outputs to the external don’t care network.
The -h option restricts the boolean satisfiability algorithm to not use non-local implications. Four greedy
ordering heuristics are tried in this case instead of the default of eight. Hard-to-test faults that can only
be tested with non-local implication information are aborted by this option.
The -q specifies "quick redundancy removal." With this option, the deterministic test generation algo-
rithm identifies only those redundant faults that cannot be excited from any reachable state. In practice,
quick redundancy removal usually gives the same results as regular redundancy removal, in much less
time.
The -r option causes the test generator not to perform random test pattern generation.
The -R option causes the test generator not to perform random propagation. (Deterministic propagation
is still attempted).
The -p option causes the test generator not to build any product machines. Thus, neither deterministic
propagation nor good/faulty product machine traversal will be performed.
The -t option first converts the network to arbitrary fanin AND and OR gates. The decomposed network
is returned.
The -d option allows the specification of the length of the random sequences applied during random test
generation. The default length is the depth of the circuit’s state transition graph.
The -n option allows the specification of the number of sequences to fault simulate at one time during
fault simulation. The default is the system word length.
The -v allows the specification of the verbosity level of the output.
The -y option allows the specification of the length of the random sequences applied during random pro-
pagation. The default length is 20.
Note: in order to use this command with sequential circuits, the circuit reset state must be specified in
the circuit input file.
reduce_depth [-b] [-d #] [-g] [-r] [-s #] [-v #] [-R #.#] [-S #] [-f #]
This command is to be used to improve the speed of a network before technology mapping. It performs
a partial collapse of the network by first clustering nodes according to some criteria and collapsing each
cluster into a single node. The clusters are formed as follows: a maximum cluster size is first computed,
and the algorithm finds a clustering that respects this size limit and minimizes the number of levels in
the network after the collapsing of the clusters. The size limit is a limit on the number of nodes covered
by the cluster, and does not take into account the complexity of the nodes. Therefore this command
should only be used on networks decomposed into simple gates. The cluster size limit can be provided
in a variety of ways, depending on which option is used.
The -b option performs the clustering under the duplication ratio constraint specified by -R option.
The -d # option specifies the desired depth of the network after clustering. The depth counts the number
of nodes. Since each node is expressed as a sum-of-products, specifying depth of 1 corresponds to col-
lapsing the network to two levels of logic. The algorithm computes the minimum cluster size limit that
yields a depth of n.
The -g option prints out statistics based on cluster sizes. No clustering is done.
The -r option specifies a modification of the clustering algorithm that produces the same number of
logic levels but with less duplication of logic.
reset_name [-ls]
Resets either the short names (starting again from the single letter a) with the -l option, or the SIS-
generated long-names (starting again from [0]) with the -s option.
retime [-nfim] [-c #.#] [-t #.#] [-d #.#] [-a #.#] [-v #]
Applies the retiming transformation on the circuit in an effort to reduce the cycle time. The retiming
operation is supported only for single phase, edge-triggered designs. Both mapped and unmapped net-
works can be retimed. The algorithm attempts to maintain the initial state information.
The algorithm expects to work on mapped networks so that accurate delays on the gates can be used.
However, an unmapped network can be retimed by using the -n option. In that case the delay through
each node is computed according to the unit-fanout delay model. The user should be aware of the fact
that when retiming circuits containing complex registers (JK, D-flip flops with enables/presets), the com-
plex registers may have to be decomposed into simpler gates.
By default the algorithm uses a relaxation based approach which is very fast. An alternate formulation
uses a mathematical programming formulation and can be selected using the -f option. After profiling
on a number of circuits only one will be retained.
The -m option can be used to minimize the number of registers under cycle time constraints. If the cycle
time is not specified using the -c option then this command will try to minimize the cycle time. Thus to
obtain the absolute minimum number of registers for a circuit the user should specify a very loose cycle
time constraint (very large value for the -c option).
The retiming algorithm will try to compute the new initial states of the latches. In case no feasible ini-
tial state exists the retiming is aborted and the network is not modified. To suppress the initialization
routine use the -i option. In that case the initial values for all the latches after retiming is set to value of
2 (DONT_CARE).
The desired clock period can be specified with the -c value option. When this option is not used the
algorithm first checks to see if there is a cycle_time specification with the current network (the value
depends on the current setting of the clock_flag in the network) and tries to meet this. If no cycle_time
is specified with the design the retiming operation tries to minimize the cycle time. For this it uses a
binary search for testing feasible clock values. The tolerance of the binary search can be specified with
the -t value option (the default is 0.1).
Latches in the network can be assigned a propogation delay and an area. These are helpful in the realis-
tic modelling of the circuit delay and area. Use the -d value option to specify the delay through a latch
(to approximate the setup and propogation delay of the latch) and the -a value option to specify the area
of a latch. In case of mapped networks, these values are automatically determined from the library of
gates.
The -v value selects the verbosity level. The range is 1-100 (100 will literally swamp you with a lot of
unneeded data). Use the value 1 to see the progress of the algorithm.
save filename
Save a copy of the current executable to a file which can be restarted. This can be used to freeze the
current network or the current library for later optimization. When the executable filename is executed,
execution returns to the top-level of the command interpreter.
NOTE: The save command is very operating-system dependent and may not be implemented on your
system. If this is the case then the save command is unusable on your system.
set_delay [-a d i l r f] [-A f] [-D f] [-I f] [-L f] [-R f] [-S f] [-W f][o1 o2 ... i1 i2 ...]
Set various delay parameters for the inputs and outputs of a network. These timing constraints are used
by the print_delay command in addition to commands like speed_up, buffer_opt, and map that per-
form delay optimizations. The values for these constraints are numbers and it is the user’s responsibility
to ensure that these values are meaningful when a particular delay model is used during the optimiza-
tions. Capitalized options set defaults, lower-case options set the parameters for the nodes in nodelist,
which is either a list of output nodes or a list of input nodes.
The option -A sets the default arrival time for primary inputs to the real value f. The option -R sets the
default required time for primary outputs to f. The -D option sets the default drive on a primary input
to f, and the -L option sets the default load on primary outputs to f. The -I option specifies the default
value for the maximum load that can be present at a primary input. The -S option sets the wire load per
fanout to f. The wire loads for a given number of fanouts can be specified with the -W option. With the
ith use of the -W option, the load for a gate driving i outputs is set to the value f.
The settings can be undone by using a negative number for the value. This will result in the parameter
to be "unspecified" and the individual commands will use appropriate defaults if neccessary.
The -a, -r, -d, -i, and -l options can be used to specify the delay constraints on specific nodes (as
opposed to the uppercase options which specify a default value for ALL terminals). These terminal-
specific values will supersede the defaults specified with the uppercase options. The -a (-r) option sets
the arrival (required) time to f for the specified nodes if the node list given is a list of primary inputs
(outputs). The -d (-i) option sets the drive (maximum load limit) for each node in the list to f; if there
is a non-primary input in the list this is an error. The -l option sets the load on each node in the list to
f; if there is a non-primary output in the list this is an error.
The -F option causes the test generator not to use reverse fault simulation.
The -h option restricts the boolean satisfiability algorithm to not use non-local implications. Four greedy
ordering heuristics are tried in this case instead of the default of eight. Hard-to-test faults that can only
be tested with non-local implication information are aborted by this option.
The -i option causes the test generator not to append new tests onto the end of old tests.
The -r option causes the test generator to perform random test pattern generation and random propaga-
tion.
The -t option first converts the network to arbitrary fanin AND and OR gates. The decomposed network
is returned.
The -v allows the specification of the verbosity level of the output.
The -V causes the test generator to not use the three-step algorithm to generate tests. Instead, only
good/faulty product machine verification is used to generate tests, thus guaranteeing that each individual
test generated is the shortest possible.
If file is specified, test patterns are written out to the given file.
Note: in order to use this command with sequential circuits, the circuit reset state must be specified in
the circuit input file.
of the input values and the primary inputs can be determined by the order in which the primary inputs
and outputs are printed using the write_eqn command.
For example, for a three-input AND gate, the command
simulate 1 1 0
will produce a
0
NOTE: For sequential circuits, this command essentially assumes that all latches are clocked simultane-
ously by a single clock. Simulation will take the current values on the latches (which can be displayed
by using print_latch) and the user-supplied primary input values and simulate the network, placing the
new latch values in the current state of the latches. The values of the outputs and the new state are
printed. If a more sophisticated simulation method is needed, timing simulation should be used; this is
not currently implemented in SIS.
read_blif %:2
collapse
write_eqn %:2.eqn
Typing "source test.scr lion.blif" on the command line will execute the sequence
read_blif lion.blif
collapse
write_eqn lion.blif.eqn
If you type "alias st source test.scr" and then type "st lion.blif bozo", you will execute
read_blif bozo
collapse
write_eqn bozo.eqn
because "bozo" was the second argument on the last command line typed. In other words,
command substitution in a script file depends on how the script file was invoked.
Some standard script files are provided. script (executed by typing source script is a script that works
well on most examples. script.boolean uses a larger part of the don’t care set during two-level minimi-
zation, requiring more time and producing better results. script.algebraic uses a smaller part of the
don’t care set. script.rugged uses the newest BDD-based techniques, and script.delay synthesizes a cir-
cuit for a final implementation that is optimal with respect to speed.
speed_up [-m model] [-d #] [-w #] [-t #.#] [-i] [-c] [-T] [-a #] [-vD] node-list
Speed-up the nodes in the node-list. If no nodes are specified, it selects the nodes to be speeded-up in
order to speed-up the entire network. The best decomposition seen so far is accepted (except with the -c
flag). The network after running speed_up is composed of 2-input AND gates and inverters.
The -m model option selects the delay model according to which the delay data is computed. The values
allowed for model are unit, unit-fanout and mapped. The unit delay model counts the level of the cir-
cuit as its delay. The unit-fanout model is intended to capture a technology-independent model and it
assigns a delay of 1 unit to each gate and 0.2 units to each fanout stem. The mapped delay model uses
the delay data in the library to compute delay.
The -d # option selects the distance up to which the critical fanins are collapsed in order to do the
speed-up. A fast value is 3, a good one is 6.
The -t #.# option determines which nodes are considered critical. The critical nodes are those with a
slack within #.# of the most negative slack.
The -w # option selects between the area mode and the pure timing mode. A value of 0 selects pure-
timing mode while a value of 1 will conserve as much area as possible.
The -i option specifies that only the initial 2-input NAND decomposition be carried out.
The -c option specifies that one pass be carried out. The new decomposition is always accepted, even if
it results in a slower circuit.
The -T option displays the delay as the iterations progress.
The -a # option tries to do the specified number of attempts when restructuring a node. By default the
algorithm tries only one attempt at the restructuring. This option is for experimental use at this stage.
The -v and -D options display debugging information.
A one-hot encoding can be obtained by using state_assign progname -e h. Note that nova and jedi
produce different results for one-hot encoding. jedi produces typical one-hot codes (1000) while nova
produces one-hot codes with don’t care conditions (1---).
stg_cover
Check to see that the behavior of the STG covers that of the logic implementation. This operation is
provided for the user to check that two descriptions of the same machine are consistent. Each edge in
the STG is symbolically simulated in the logic implementation to ensure that the logic implementation
behaves as specified by the STG.
sweep
Successively eliminate all the single-input nodes and constant nodes (0 or 1) from the current network.
NOTE: Successfully invoking a sweep command on a mapped network can possibly "unmap" the net-
work.
time
Prints the processor time used since the last time command, and the total processor time used since SIS
was started.
undo
A simple 1-level undo is supported. It reverts the network to its state before the last command which
changed the network. Note that interrupting a command (with ˆC) which changes the network uses up
the one level of undo.
A variable environment is maintained by the command interpreter. The set command sets a variable to
a particular value, and the unset command removes the definition of a variable. If set is given no argu-
ments, it prints the definition of all variables.
Different commands use environment information for different purposes. The command interpreter
makes use of the following:
autoexec
Defines a command string to be automatically executed after every command processed by the
command interpreter. This is useful for things like timing commands, or tracing the progress
of optimization.
sisout Standard output (normally stdout) can be re-directed to a file by setting the variable sisout.
siserr Standard error (normally stderr) can be re-directed to a file by setting the variable siserr.
open_path
open_path (in analogy to the shell-variable PATH) is a list of colon-separated strings giving
directories to be searched whenever a file is opened for read. Typically the current directory
(.) is first in this list. The standard system library (typically $SIS/sis_lib) is always implicitly
appended to the current path. This provides a convenient short-hand mechanism for reaching
standard library files.
prompt defines the prompt string
usage
Prints a formatted dump of processor-specific usage statistics. For Berkeley Unix, this includes all of
the information in the getrusage() structure.
write_bdnet [filename]
Write the current network to file filename in the format for a net-list defined by bdnet(1). This is
allowed only after the network has been mapped into a final implementation technology.
The environment variable OCT-CELL-PATH defines where the cell library is located. If a cell does not
have a leading ’˜’ or ’/’ in its name, then OCT-CELL-PATH is prepended to the filename.
The variable OCT-CELL-VIEW defines the viewname to be used if the cell does not have a ’:’ in its
name to separate the cell name from the view name.
The variables OCT-TECHNOLOGY, OCT-VIEWTYPE, and OCT-EDITSTYLE define the technology,
view-type, and edit-style properties for the Oct cell.
write_kiss [filename]
The current state transition graph is saved in kiss2 format to the file filename or printed to the screen if
no filename is given.
write_pla [filename]
Write the current network to file filename in the Berkeley PLA Format. No optimization is done on the
PLA.
XILINX
Description
This is a package to optimize the Boolean network and map it onto the Xilinx Programmable Gate
Array architecture (reference: Xilinx, the Programmable Gate Array Data Book, Xilinx Corporation).
All the routines except xl_merge can be used to map the design onto an architecture with a CLB
(Configurable Logic Block) realizing an arbitrary function of up to n inputs, where n >= 2. The pack-
age contains the following commands available to the user for experimentation.
Suggested script
time
sweep
simplify
sweep
simplify
xl_split -n 5
sweep
simplify
xl_split -n 5
sweep
xl_partition -n 5
sweep
simplify
xl_partition -n 5
sweep
xl_k_decomp -n 5
sweep
xl_cover -n 5 -h 3
xl_merge
time
-b: for best results, use this option. Effective on a node only if its number of literals is greater than
lit_bound. In that case, after the good decomposition, recursively call the command for each of the
nodes in decomposition. Time consuming.
-c: sets the limit for the cover algorithm used after each decomposition. If the number of feasible nodes
for an infeasible node is no more than cover_node_limit, then exact cover is used, else heuristic (-h 3)
option is used. (default = 25).
-g: if 0 (default), do not use decomp -g for cube-packing, just SOP. If 1, use only decomp -g, not SOP.
If 2, use both decomp -g and SOP for cube-packing, and pick the best result.
-l: if the infeasible node has greater than lit_bound literals, does a good decomposition of the node (i.e.
decomp -g) (default: 50)
-m: While doing partition, move fanins around for a node with at most MAX_FANINS (default 15).
-v: this sets the verbosity level (amount of information printed as the algorithm proceeds) to
verbosity_level.
xl_k_decomp [-n support] [-p node_name] [-v verbosity_level] [-f MAX_FANINS_K_DECOMP] [-de]
Uses Karp_Roth disjoint decomposition to recursively decompose nodes of the network having fanin
greater than support to obtain nodes each having fanin of at most support. If -p node_name is
specified, only the node with the name node_name is decomposed. Otherwise, all the nodes that have
fanin greater than support are decomposed. If -d option is specified, then if k_decomp fails to find a
disjoint decomposition on a node, the node is not decomposd by cube-packing. Option -e allows an
exhaustive search over all possible partitions to pick the best decomposition of a node. Then the option
-f MAX_FANINS_K_DECOMP sets the limit on maximum number of fanins of a node for exhaustive
decomposition. If the number of fanins is higher, only the first input partition is considered.
$SIS/sis_lib/∗
SEE ALSO
espresso(1CAD), espresso(5CAD), eqntott(1CAD), nova(1CAD), stamina(UC Boulder), jedi(1CAD),
doc/blif.tex, doc/SPEC.
AUTHORS
Ellen Sentovich
Kanwar Jit Singh
OTHER CONTRIBUTORS
Bill Lin, Luciano Lavagno, Sharad Malik, Cho Moon, Rajeev Murgai, Alex Saldanha, Hamid Savoj,
Narendra Shenoy, Tom Shiple, Paul Stephan, Colin Stevens, Herve Touati, Tiziano Villa, and Carol
Wawrukiewicz. Jose Monteiro (MIT) contributed the power estimation package. David Long (AT&T
Bell Laboratories) contribued the BDD package. June Rho (CU Boulder) contributed the stamina pro-
gram. Roberto Rambaldi (D.E.I.S. Universita’ di Bologna) contributed the vst2blif program. Richard
Rudell and Albert Wang wrote the program MISII, upon which SIS is built.
BUGS
If a state machine has only one state, calling state assignment using nova causes a fatal error. This is
due to the fact that if a PLA has outputs that are all 0, espresso returns no PLA (when the type
requested is the ON-set). nova tries to read the pla using SIS and fails.
The simulate command does not work as it should for sequential circuits. Gated clocks are not simu-
lated correctly, and incorrect results are obtained when the network has a clock and the STG does not.
COMMENTS
Mapping information is lost during factoring. Once a circuit is mapped, it is not expected that any
further operations on the logic will be performed, hence, if they are, the mapping is lost.
Many of the new routines (e.g. extract_seq_dc, full_simplify, verify_fsm) use BDDs and can be very
time- and memory-consuming. Work is underway on this problem.