You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							379 lines
						
					
					
						
							14 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							379 lines
						
					
					
						
							14 KiB
						
					
					
				
								.\" $Id: nanotrav.1,v 1.23 2009/02/21 06:00:31 fabio Exp fabio $
							 | 
						|
								.\"
							 | 
						|
								.TH NANOTRAV 1 "18 June 2002" "Release 0.11"
							 | 
						|
								.SH NAME
							 | 
						|
								nanotrav \- a simple state graph traversal program
							 | 
						|
								.SH SYNOPSIS
							 | 
						|
								.B nanotrav
							 | 
						|
								[option ...]
							 | 
						|
								.SH DESCRIPTION
							 | 
						|
								
							 | 
						|
								nanotrav builds the BDDs of a circuit and applies various reordering
							 | 
						|
								methods to the BDDs. It then traverses the state transition graph of
							 | 
						|
								the circuit if the circuit is sequential, and if the user so requires.
							 | 
						|
								nanotrav is based on the CUDD package. The ordering of the variables
							 | 
						|
								is affected by three sets of options: the options that specify the
							 | 
						|
								initial order (-order -ordering); the options that specify the
							 | 
						|
								reordering while the BDDs are being built (-autodyn -automethod); and
							 | 
						|
								the options to specify the final reordering (-reordering
							 | 
						|
								-genetic). Notice that both -autodyn and -automethod must be specified
							 | 
						|
								to get dynamic reordering. The first enables reordering, while the
							 | 
						|
								second says what method to use.
							 | 
						|
								.SH OPTIONS
							 | 
						|
								.TP 10
							 | 
						|
								.B \fIfile\fB
							 | 
						|
								read input in blif format from \fIfile\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-f \fIfile\fB
							 | 
						|
								read options from \fIfile\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-trav
							 | 
						|
								traverse the state transition graph after building the BDDs. This
							 | 
						|
								option has effect only if the circuit is sequential. The initial
							 | 
						|
								states for traversal are taken from the blif file.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-depend
							 | 
						|
								perform dependent variable analysis after traversal.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-from \fImethod\fB
							 | 
						|
								use \fImethod\fR to choose the frontier states for image computation
							 | 
						|
								during traversal. Allowed methods are: \fInew\fR (default), \fIreached\fR,
							 | 
						|
								\fIrestrict\fR, \fIcompact\fR, \fIsqueeze\fR, \fIsubset\fR, \fIsuperset\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-groupnsps \fImethod\fB
							 | 
						|
								use \fImethod\fR to group the corresponding current and next state
							 | 
						|
								variables. Allowed methods are: \fInone\fR (default), \fIdefault\fR,
							 | 
						|
								\fIfixed\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-image \fImethod\fB
							 | 
						|
								use \fImethod\fR for image computation during traversal. Allowed
							 | 
						|
								methods are: \fImono\fR (default), \fIpart\fR, \fIdepend\fR, and
							 | 
						|
								\fIclip\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-depth \fIn\fB
							 | 
						|
								use \fIn\fR to derive the clipping depth for image
							 | 
						|
								computation. It should be a number between 0 and 1. The default value
							 | 
						|
								is 1 (no clipping).
							 | 
						|
								.TP 10
							 | 
						|
								.B \-verify \fIfile\fB
							 | 
						|
								perform combinational verification checking for equivalence to
							 | 
						|
								the network in \fIfile\fR. The two networks being compared must use
							 | 
						|
								the same names for inputs, outputs, and present and next state
							 | 
						|
								variables.  The method used for verification is extremely
							 | 
						|
								simplistic. BDDs are built for all outputs of both networks, and are
							 | 
						|
								then compared.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-closure
							 | 
						|
								perform reachability analysis using the transitive closure of the
							 | 
						|
								transition relation.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-cdepth \fIn\fB
							 | 
						|
								use \fIn\fR to derive the clipping depth for transitive closure
							 | 
						|
								computation. It should be a number between 0 and 1. The default value
							 | 
						|
								is 1 (no clipping).
							 | 
						|
								.TP 10
							 | 
						|
								.B \-envelope
							 | 
						|
								compute the greatest fixed point of the state transition
							 | 
						|
								relation. (This greatest fixed point is also called the outer envelope
							 | 
						|
								of the graph.)
							 | 
						|
								.TP 10
							 | 
						|
								.B \-scc
							 | 
						|
								compute the strongly connected components of the state transition
							 | 
						|
								graph. The algorithm enumerates the SCCs; therefore it stops after a
							 | 
						|
								small number of them has been computed.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-maxflow
							 | 
						|
								compute the maximum flow in the network defined by the state graph.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-sink \fIfile\fB
							 | 
						|
								read the sink for maximum flow computation from \fIfile\fR. The source
							 | 
						|
								is given by the initial states.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-shortpaths \fImethod\fB
							 | 
						|
								compute the distances between states.  Allowed methods are: \fInone\fR
							 | 
						|
								(default), \fIbellman\fR, \fIfloyd\fR, and \fIsquare\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-selective
							 | 
						|
								use selective tracing variant of the \fIsquare\fR method for shortest
							 | 
						|
								paths.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-part
							 | 
						|
								compute the conjunctive decomposition of the transition relation.  The
							 | 
						|
								network must be sequential for the test to take place.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-sign
							 | 
						|
								compute signatures. For each output of the circuit, all inputs are
							 | 
						|
								assigned a signature. The signature is the fraction of minterms in the
							 | 
						|
								ON\-set of the positive cofactor of the output with respect to the
							 | 
						|
								input. Signatures are useful in identifying the equivalence of circuits
							 | 
						|
								with unknown input or output correspondence.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-zdd
							 | 
						|
								perform a simple test of ZDD functions. This test is not executed if
							 | 
						|
								-delta is also specified, because it uses the BDDs of the primary
							 | 
						|
								outputs of the circuit. These are converted to ZDDs and the ZDDs are
							 | 
						|
								then converted back to BDDs and checked against the original ones.  A
							 | 
						|
								few more functions are exercised and reordering is applied if it is
							 | 
						|
								enabled. Then irredundant sums of products are produced for the
							 | 
						|
								primary outputs.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-cover
							 | 
						|
								print irredundant sums of products for the primary outputs.  This
							 | 
						|
								option implies \fB\-zdd\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-second \fIfile\fB
							 | 
						|
								read a second network from \fIfile\fR. Currently, if this option is
							 | 
						|
								specified, a test of BDD minimization algorithms is performed using
							 | 
						|
								the largest output of the second network as constraint.  Inputs of the
							 | 
						|
								two networks with the same names are merged.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-density
							 | 
						|
								test BDD approximation functions.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-approx \fImethod\fB
							 | 
						|
								if \fImethod\fR is \fIunder\fR (default) perform underapproximation
							 | 
						|
								when BDDs are approximated. If \fImethod\fR is \fIover\fR perform
							 | 
						|
								overapproximation when BDDs are approximated.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-threshold \fIn\fB
							 | 
						|
								Use \fIn\fR as threshold when approximating BDDs.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-quality \fIn\fB
							 | 
						|
								Use \fIn\fR (a floating point number) as quality factor when
							 | 
						|
								approximating BDDs. Default value is 1.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-decomp
							 | 
						|
								test BDD decomposition functions.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-cofest
							 | 
						|
								test cofactor estimation functions.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-clip \fIn file\fB
							 | 
						|
								test clipping functions using \fIn\fR to determine the clipping depth
							 | 
						|
								and taking one operand from the network in \fIfile\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dctest \fIfile\fB
							 | 
						|
								test functions for equality and containment under don't care
							 | 
						|
								conditions taking the don't care conditions from \fIfile\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-closest
							 | 
						|
								test function that finds a cube in a BDD at minimum Hamming distance
							 | 
						|
								from another BDD.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-clauses
							 | 
						|
								test function that extracts two-literal clauses from a DD.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-char2vect
							 | 
						|
								perform a simple test of the conversion from characteristic function
							 | 
						|
								to functional vector.  If the network is sequential, the test is
							 | 
						|
								applied to the monolithic transition relation; otherwise to the primary
							 | 
						|
								outputs.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-local
							 | 
						|
								build local BDDs for each gate of the circuit.  This option is not in
							 | 
						|
								effect if traversal, outer envelope computation, or maximum flow
							 | 
						|
								computation are requested.  The local BDD of a gate is in terms of its
							 | 
						|
								local inputs.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-cache \fIn\fB
							 | 
						|
								set the initial size of the computed table to \fIn\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-slots \fIn\fB
							 | 
						|
								set the initial size of each unique subtable to \fIn\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-maxmem \fIn\fB
							 | 
						|
								set the target maximum memory occupation to \fIn\fR MB.  If this
							 | 
						|
								parameter is not specified or if \fIn\fR is 0, then a suitable value
							 | 
						|
								is computed automatically.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-memhard \fIn\fB
							 | 
						|
								set the hard limit to memory occupation to \fIn\fR MB.  If this
							 | 
						|
								parameter is not specified or if \fIn\fR is 0, no hard limit is
							 | 
						|
								enforced by the program.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-maxlive \fIn\fB
							 | 
						|
								set the hard limit to the number of live BDD nodes to \fIn\fR.  If
							 | 
						|
								this parameter is not specified, the limit is four billion nodes.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dumpfile \fIfile\fB
							 | 
						|
								dump BDDs to \fIfile\fR. The BDDs are dumped just before program
							 | 
						|
								termination. (Hence, after reordering, if reordering is specified.)
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dumpblif
							 | 
						|
								use blif format for dump of BDDs (default is dot format). If blif is
							 | 
						|
								used, the BDDs are dumped as a network of multiplexers. The dot format
							 | 
						|
								is suitable for input to the dot program, which produces a
							 | 
						|
								drawing of the BDDs.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dumpmv
							 | 
						|
								use blif-MV format for dump of BDDs.  The BDDs are dumped as a network
							 | 
						|
								of multiplexers.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dumpdaVinci
							 | 
						|
								use daVinci format for dump of BDDs.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dumpddcal
							 | 
						|
								use DDcal format for dump of BDDs.  This option may produce an invalid
							 | 
						|
								output if the variable and output names of the BDDs being dumped do
							 | 
						|
								not comply with the restrictions imposed by the DDcal format.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-dumpfact
							 | 
						|
								use factored form format for dump of BDDs. This option must be used
							 | 
						|
								with caution because the size of the output is proportional to the
							 | 
						|
								number of paths in the BDD.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-storefile \fIfile\fB
							 | 
						|
								Save the BDD of the reachable states to \fIfile\fR. The BDD is stored at
							 | 
						|
								the iteration specified by \fB\-store\fR. This option uses the format of
							 | 
						|
								the \fIdddmp\fR library. Together with \fB\-loadfile\fR, it implements a
							 | 
						|
								primitive checkpointing capability. It is primitive because the transition
							 | 
						|
								relation is not saved; because the frontier states are not saved; and
							 | 
						|
								because only one check point can be specified.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-store \fIn\fB
							 | 
						|
								Save the BDD of the reached states at iteration \fIn\fR. This option
							 | 
						|
								requires \fB\-storefile\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-loadfile \fIfile\fB
							 | 
						|
								Load the BDD of the initial states from \fIfile\fR.  This option uses the
							 | 
						|
								format of the \fIdddmp\fR library. Together with \fB\-storefile\fR, it
							 | 
						|
								implements a primitive checkpointing capability.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-nobuild
							 | 
						|
								do not build the BDDs. Quit after determining the initial variable
							 | 
						|
								order.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-drop
							 | 
						|
								drop BDDs for intermediate nodes as soon as possible. If this option is
							 | 
						|
								not specified, the BDDs for the intermediate nodes of the circuit are
							 | 
						|
								dropped just before the final reordering.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-delta
							 | 
						|
								build BDDs only for the next state functions of a sequential circuit.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-node
							 | 
						|
								build BDD only for \fInode\fR.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-order \fIfile\fB
							 | 
						|
								read the variable order from \fIfile\fR. This file must contain the
							 | 
						|
								names of the inputs (and present state variables) in the desired order.
							 | 
						|
								Names must be separated by white space or newlines.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-ordering \fImethod\fB
							 | 
						|
								use \fImethod\fR to derive an initial variable order. \fImethod\fR can
							 | 
						|
								be one of \fIhw\fR, \fIdfs\fR. Method \fIhw\fR uses the order in which the
							 | 
						|
								inputs are listed in the circuit description.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-autodyn
							 | 
						|
								enable dynamic reordering. By default, dynamic reordering is disabled.
							 | 
						|
								If enabled, the default method is sifting.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-first \fIn\fB
							 | 
						|
								do first dynamic reordering when the BDDs reach \fIn\fR nodes.
							 | 
						|
								The default value is 4004. (Don't ask why.)
							 | 
						|
								.TP 10
							 | 
						|
								.B \-countdead
							 | 
						|
								include dead nodes in node count when deciding whether to reorder
							 | 
						|
								dynamically. By default, only live nodes are counted.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-growth \fIn\fB
							 | 
						|
								maximum percentage by which the BDDs may grow while sifting one
							 | 
						|
								variable. The default value is 20.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-automethod \fImethod\fB
							 | 
						|
								use \fImethod\fR for dynamic reordering of the BDDs. \fImethod\fR can
							 | 
						|
								be one of none, random, pivot, sifting, converge, symm, cosymm, group,
							 | 
						|
								cogroup, win2, win3, win4, win2conv, win3conv, win4conv, annealing,
							 | 
						|
								genetic, linear, linconv, exact. The default method is sifting.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-reordering \fImethod\fB
							 | 
						|
								use \fImethod\fR for the final reordering of the BDDs. \fImethod\fR can
							 | 
						|
								be one of none, random, pivot, sifting, converge, symm, cosymm, group,
							 | 
						|
								cogroup, win2, win3, win4, win2conv, win3conv, win4conv, annealing,
							 | 
						|
								genetic, linear, linconv, exact. The default method is none.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-genetic
							 | 
						|
								run the genetic algorithm after the final reordering (which in this case
							 | 
						|
								is no longer final). This allows the genetic algorithm to have one good
							 | 
						|
								solution generated by, say, sifting, in the initial population.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-groupcheck \fImethod\fB
							 | 
						|
								use \fImethod\fR for the the creation of groups in group sifting.
							 | 
						|
								\fImethod\fR can be one of nocheck, check5, check7. Method check5 uses
							 | 
						|
								extended symmetry as aggregation criterion; group7, in addition, also
							 | 
						|
								uses the second difference criterion. The default value is check7.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-arcviolation \fIn\fB
							 | 
						|
								percentage of arcs that violate the symmetry condition in the aggregation
							 | 
						|
								check of group sifting. Should be between 0 and 100. The default value is
							 | 
						|
								10. A larger value causes more aggregation.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-symmviolation \fIn\fB
							 | 
						|
								percentage of nodes that violate the symmetry condition in the aggregation
							 | 
						|
								check of group sifting. Should be between 0 and 100. The default value is
							 | 
						|
								10. A larger value causes more aggregation.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-recomb \fIn\fB
							 | 
						|
								threshold used in the second difference criterion for aggregation. (Used
							 | 
						|
								by check7.) The default value is 0. A larger value causes more
							 | 
						|
								aggregation. It can be either positive or negative.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-tree \fIfile\fB
							 | 
						|
								read the variable group tree from \fIfile\fR. The format of this file is
							 | 
						|
								a sequence of triplets: \fIlb ub flag\fR. Each triplet describes a
							 | 
						|
								group: \fIlb\fR is the lowest index of the group; \fIub\fR is the
							 | 
						|
								highest index of the group; \fIflag\fR can be either D (default) or F
							 | 
						|
								(fixed). Fixed groups are not reordered.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-genepop \fIn\fB
							 | 
						|
								size of the population for genetic algorithm. By default, the size of
							 | 
						|
								the population is 3 times the number of variables, with a maximum of 120.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-genexover \fIn\fB
							 | 
						|
								number of crossovers at each generation for the genetic algorithm. By
							 | 
						|
								default, the number of crossovers is 3 times the number of variables,
							 | 
						|
								with a maximum of 50.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-seed \fIn\fB
							 | 
						|
								random number generator seed for the genetic algorithm and the random
							 | 
						|
								and pivot reordering methods.
							 | 
						|
								.TP 10
							 | 
						|
								.B \-progress
							 | 
						|
								report progress when building the BDDs for a network. This option
							 | 
						|
								causes the name of each primary output or next state function to be
							 | 
						|
								printed after its BDD is built. It does not take effect if local BDDs
							 | 
						|
								are requested.
							 | 
						|
								.TP 10
							 | 
						|
								.B -p \fIn\fB
							 | 
						|
								verbosity level. If negative, the program is very quiet. Larger values cause
							 | 
						|
								more information to be printed.
							 | 
						|
								.SH SEE ALSO
							 | 
						|
								The documentation for the CUDD package explains the various
							 | 
						|
								reordering methods.
							 | 
						|
								
							 | 
						|
								The documentation for the MTR package provides details on the variable
							 | 
						|
								groups.
							 | 
						|
								
							 | 
						|
								dot(1)
							 | 
						|
								.SH REFERENCES
							 | 
						|
								F. Somenzi,
							 | 
						|
								"Efficient Manipulation of Decision Diagrams,"
							 | 
						|
								Software Tools for Technology Transfer,
							 | 
						|
								vol. 3, no. 2, pp. 171-181, 2001.
							 | 
						|
								
							 | 
						|
								S. Panda, F. Somenzi, and B. F. Plessier,
							 | 
						|
								"Symmetry Detection and Dynamic Variable Ordering of Decision Diagrams,"
							 | 
						|
								IEEE International Conference on Computer-Aided Design,
							 | 
						|
								pp. 628-631, November 1994.
							 | 
						|
								
							 | 
						|
								S. Panda and F. Somenzi,
							 | 
						|
								"Who Are the Variables in Your Neighborhood,"
							 | 
						|
								IEEE International Conference on Computer-Aided Design,
							 | 
						|
								pp. 74-77, November 1995.
							 | 
						|
								
							 | 
						|
								G. D. Hachtel and F. Somenzi,
							 | 
						|
								"A Symbolic Algorithm for Maximum Flow in 0-1 Networks,"
							 | 
						|
								IEEE International Conference on Computer-Aided Design,
							 | 
						|
								pp. 403-406, November 1993.
							 | 
						|
								.SH AUTHOR
							 | 
						|
								Fabio Somenzi, University of Colorado at Boulder.
							 |