nanotrav.1 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. .\" $Id: nanotrav.1,v 1.23 2009/02/21 06:00:31 fabio Exp fabio $
  2. .\"
  3. .TH NANOTRAV 1 "18 June 2002" "Release 0.11"
  4. .SH NAME
  5. nanotrav \- a simple state graph traversal program
  6. .SH SYNOPSIS
  7. .B nanotrav
  8. [option ...]
  9. .SH DESCRIPTION
  10. nanotrav builds the BDDs of a circuit and applies various reordering
  11. methods to the BDDs. It then traverses the state transition graph of
  12. the circuit if the circuit is sequential, and if the user so requires.
  13. nanotrav is based on the CUDD package. The ordering of the variables
  14. is affected by three sets of options: the options that specify the
  15. initial order (-order -ordering); the options that specify the
  16. reordering while the BDDs are being built (-autodyn -automethod); and
  17. the options to specify the final reordering (-reordering
  18. -genetic). Notice that both -autodyn and -automethod must be specified
  19. to get dynamic reordering. The first enables reordering, while the
  20. second says what method to use.
  21. .SH OPTIONS
  22. .TP 10
  23. .B \fIfile\fB
  24. read input in blif format from \fIfile\fR.
  25. .TP 10
  26. .B \-f \fIfile\fB
  27. read options from \fIfile\fR.
  28. .TP 10
  29. .B \-trav
  30. traverse the state transition graph after building the BDDs. This
  31. option has effect only if the circuit is sequential. The initial
  32. states for traversal are taken from the blif file.
  33. .TP 10
  34. .B \-depend
  35. perform dependent variable analysis after traversal.
  36. .TP 10
  37. .B \-from \fImethod\fB
  38. use \fImethod\fR to choose the frontier states for image computation
  39. during traversal. Allowed methods are: \fInew\fR (default), \fIreached\fR,
  40. \fIrestrict\fR, \fIcompact\fR, \fIsqueeze\fR, \fIsubset\fR, \fIsuperset\fR.
  41. .TP 10
  42. .B \-groupnsps \fImethod\fB
  43. use \fImethod\fR to group the corresponding current and next state
  44. variables. Allowed methods are: \fInone\fR (default), \fIdefault\fR,
  45. \fIfixed\fR.
  46. .TP 10
  47. .B \-image \fImethod\fB
  48. use \fImethod\fR for image computation during traversal. Allowed
  49. methods are: \fImono\fR (default), \fIpart\fR, \fIdepend\fR, and
  50. \fIclip\fR.
  51. .TP 10
  52. .B \-depth \fIn\fB
  53. use \fIn\fR to derive the clipping depth for image
  54. computation. It should be a number between 0 and 1. The default value
  55. is 1 (no clipping).
  56. .TP 10
  57. .B \-verify \fIfile\fB
  58. perform combinational verification checking for equivalence to
  59. the network in \fIfile\fR. The two networks being compared must use
  60. the same names for inputs, outputs, and present and next state
  61. variables. The method used for verification is extremely
  62. simplistic. BDDs are built for all outputs of both networks, and are
  63. then compared.
  64. .TP 10
  65. .B \-closure
  66. perform reachability analysis using the transitive closure of the
  67. transition relation.
  68. .TP 10
  69. .B \-cdepth \fIn\fB
  70. use \fIn\fR to derive the clipping depth for transitive closure
  71. computation. It should be a number between 0 and 1. The default value
  72. is 1 (no clipping).
  73. .TP 10
  74. .B \-envelope
  75. compute the greatest fixed point of the state transition
  76. relation. (This greatest fixed point is also called the outer envelope
  77. of the graph.)
  78. .TP 10
  79. .B \-scc
  80. compute the strongly connected components of the state transition
  81. graph. The algorithm enumerates the SCCs; therefore it stops after a
  82. small number of them has been computed.
  83. .TP 10
  84. .B \-maxflow
  85. compute the maximum flow in the network defined by the state graph.
  86. .TP 10
  87. .B \-sink \fIfile\fB
  88. read the sink for maximum flow computation from \fIfile\fR. The source
  89. is given by the initial states.
  90. .TP 10
  91. .B \-shortpaths \fImethod\fB
  92. compute the distances between states. Allowed methods are: \fInone\fR
  93. (default), \fIbellman\fR, \fIfloyd\fR, and \fIsquare\fR.
  94. .TP 10
  95. .B \-selective
  96. use selective tracing variant of the \fIsquare\fR method for shortest
  97. paths.
  98. .TP 10
  99. .B \-part
  100. compute the conjunctive decomposition of the transition relation. The
  101. network must be sequential for the test to take place.
  102. .TP 10
  103. .B \-sign
  104. compute signatures. For each output of the circuit, all inputs are
  105. assigned a signature. The signature is the fraction of minterms in the
  106. ON\-set of the positive cofactor of the output with respect to the
  107. input. Signatures are useful in identifying the equivalence of circuits
  108. with unknown input or output correspondence.
  109. .TP 10
  110. .B \-zdd
  111. perform a simple test of ZDD functions. This test is not executed if
  112. -delta is also specified, because it uses the BDDs of the primary
  113. outputs of the circuit. These are converted to ZDDs and the ZDDs are
  114. then converted back to BDDs and checked against the original ones. A
  115. few more functions are exercised and reordering is applied if it is
  116. enabled. Then irredundant sums of products are produced for the
  117. primary outputs.
  118. .TP 10
  119. .B \-cover
  120. print irredundant sums of products for the primary outputs. This
  121. option implies \fB\-zdd\fR.
  122. .TP 10
  123. .B \-second \fIfile\fB
  124. read a second network from \fIfile\fR. Currently, if this option is
  125. specified, a test of BDD minimization algorithms is performed using
  126. the largest output of the second network as constraint. Inputs of the
  127. two networks with the same names are merged.
  128. .TP 10
  129. .B \-density
  130. test BDD approximation functions.
  131. .TP 10
  132. .B \-approx \fImethod\fB
  133. if \fImethod\fR is \fIunder\fR (default) perform underapproximation
  134. when BDDs are approximated. If \fImethod\fR is \fIover\fR perform
  135. overapproximation when BDDs are approximated.
  136. .TP 10
  137. .B \-threshold \fIn\fB
  138. Use \fIn\fR as threshold when approximating BDDs.
  139. .TP 10
  140. .B \-quality \fIn\fB
  141. Use \fIn\fR (a floating point number) as quality factor when
  142. approximating BDDs. Default value is 1.
  143. .TP 10
  144. .B \-decomp
  145. test BDD decomposition functions.
  146. .TP 10
  147. .B \-cofest
  148. test cofactor estimation functions.
  149. .TP 10
  150. .B \-clip \fIn file\fB
  151. test clipping functions using \fIn\fR to determine the clipping depth
  152. and taking one operand from the network in \fIfile\fR.
  153. .TP 10
  154. .B \-dctest \fIfile\fB
  155. test functions for equality and containment under don't care
  156. conditions taking the don't care conditions from \fIfile\fR.
  157. .TP 10
  158. .B \-closest
  159. test function that finds a cube in a BDD at minimum Hamming distance
  160. from another BDD.
  161. .TP 10
  162. .B \-clauses
  163. test function that extracts two-literal clauses from a DD.
  164. .TP 10
  165. .B \-char2vect
  166. perform a simple test of the conversion from characteristic function
  167. to functional vector. If the network is sequential, the test is
  168. applied to the monolithic transition relation; otherwise to the primary
  169. outputs.
  170. .TP 10
  171. .B \-local
  172. build local BDDs for each gate of the circuit. This option is not in
  173. effect if traversal, outer envelope computation, or maximum flow
  174. computation are requested. The local BDD of a gate is in terms of its
  175. local inputs.
  176. .TP 10
  177. .B \-cache \fIn\fB
  178. set the initial size of the computed table to \fIn\fR.
  179. .TP 10
  180. .B \-slots \fIn\fB
  181. set the initial size of each unique subtable to \fIn\fR.
  182. .TP 10
  183. .B \-maxmem \fIn\fB
  184. set the target maximum memory occupation to \fIn\fR MB. If this
  185. parameter is not specified or if \fIn\fR is 0, then a suitable value
  186. is computed automatically.
  187. .TP 10
  188. .B \-memhard \fIn\fB
  189. set the hard limit to memory occupation to \fIn\fR MB. If this
  190. parameter is not specified or if \fIn\fR is 0, no hard limit is
  191. enforced by the program.
  192. .TP 10
  193. .B \-maxlive \fIn\fB
  194. set the hard limit to the number of live BDD nodes to \fIn\fR. If
  195. this parameter is not specified, the limit is four billion nodes.
  196. .TP 10
  197. .B \-dumpfile \fIfile\fB
  198. dump BDDs to \fIfile\fR. The BDDs are dumped just before program
  199. termination. (Hence, after reordering, if reordering is specified.)
  200. .TP 10
  201. .B \-dumpblif
  202. use blif format for dump of BDDs (default is dot format). If blif is
  203. used, the BDDs are dumped as a network of multiplexers. The dot format
  204. is suitable for input to the dot program, which produces a
  205. drawing of the BDDs.
  206. .TP 10
  207. .B \-dumpmv
  208. use blif-MV format for dump of BDDs. The BDDs are dumped as a network
  209. of multiplexers.
  210. .TP 10
  211. .B \-dumpdaVinci
  212. use daVinci format for dump of BDDs.
  213. .TP 10
  214. .B \-dumpddcal
  215. use DDcal format for dump of BDDs. This option may produce an invalid
  216. output if the variable and output names of the BDDs being dumped do
  217. not comply with the restrictions imposed by the DDcal format.
  218. .TP 10
  219. .B \-dumpfact
  220. use factored form format for dump of BDDs. This option must be used
  221. with caution because the size of the output is proportional to the
  222. number of paths in the BDD.
  223. .TP 10
  224. .B \-storefile \fIfile\fB
  225. Save the BDD of the reachable states to \fIfile\fR. The BDD is stored at
  226. the iteration specified by \fB\-store\fR. This option uses the format of
  227. the \fIdddmp\fR library. Together with \fB\-loadfile\fR, it implements a
  228. primitive checkpointing capability. It is primitive because the transition
  229. relation is not saved; because the frontier states are not saved; and
  230. because only one check point can be specified.
  231. .TP 10
  232. .B \-store \fIn\fB
  233. Save the BDD of the reached states at iteration \fIn\fR. This option
  234. requires \fB\-storefile\fR.
  235. .TP 10
  236. .B \-loadfile \fIfile\fB
  237. Load the BDD of the initial states from \fIfile\fR. This option uses the
  238. format of the \fIdddmp\fR library. Together with \fB\-storefile\fR, it
  239. implements a primitive checkpointing capability.
  240. .TP 10
  241. .B \-nobuild
  242. do not build the BDDs. Quit after determining the initial variable
  243. order.
  244. .TP 10
  245. .B \-drop
  246. drop BDDs for intermediate nodes as soon as possible. If this option is
  247. not specified, the BDDs for the intermediate nodes of the circuit are
  248. dropped just before the final reordering.
  249. .TP 10
  250. .B \-delta
  251. build BDDs only for the next state functions of a sequential circuit.
  252. .TP 10
  253. .B \-node
  254. build BDD only for \fInode\fR.
  255. .TP 10
  256. .B \-order \fIfile\fB
  257. read the variable order from \fIfile\fR. This file must contain the
  258. names of the inputs (and present state variables) in the desired order.
  259. Names must be separated by white space or newlines.
  260. .TP 10
  261. .B \-ordering \fImethod\fB
  262. use \fImethod\fR to derive an initial variable order. \fImethod\fR can
  263. be one of \fIhw\fR, \fIdfs\fR. Method \fIhw\fR uses the order in which the
  264. inputs are listed in the circuit description.
  265. .TP 10
  266. .B \-autodyn
  267. enable dynamic reordering. By default, dynamic reordering is disabled.
  268. If enabled, the default method is sifting.
  269. .TP 10
  270. .B \-first \fIn\fB
  271. do first dynamic reordering when the BDDs reach \fIn\fR nodes.
  272. The default value is 4004. (Don't ask why.)
  273. .TP 10
  274. .B \-countdead
  275. include dead nodes in node count when deciding whether to reorder
  276. dynamically. By default, only live nodes are counted.
  277. .TP 10
  278. .B \-growth \fIn\fB
  279. maximum percentage by which the BDDs may grow while sifting one
  280. variable. The default value is 20.
  281. .TP 10
  282. .B \-automethod \fImethod\fB
  283. use \fImethod\fR for dynamic reordering of the BDDs. \fImethod\fR can
  284. be one of none, random, pivot, sifting, converge, symm, cosymm, group,
  285. cogroup, win2, win3, win4, win2conv, win3conv, win4conv, annealing,
  286. genetic, linear, linconv, exact. The default method is sifting.
  287. .TP 10
  288. .B \-reordering \fImethod\fB
  289. use \fImethod\fR for the final reordering of the BDDs. \fImethod\fR can
  290. be one of none, random, pivot, sifting, converge, symm, cosymm, group,
  291. cogroup, win2, win3, win4, win2conv, win3conv, win4conv, annealing,
  292. genetic, linear, linconv, exact. The default method is none.
  293. .TP 10
  294. .B \-genetic
  295. run the genetic algorithm after the final reordering (which in this case
  296. is no longer final). This allows the genetic algorithm to have one good
  297. solution generated by, say, sifting, in the initial population.
  298. .TP 10
  299. .B \-groupcheck \fImethod\fB
  300. use \fImethod\fR for the the creation of groups in group sifting.
  301. \fImethod\fR can be one of nocheck, check5, check7. Method check5 uses
  302. extended symmetry as aggregation criterion; group7, in addition, also
  303. uses the second difference criterion. The default value is check7.
  304. .TP 10
  305. .B \-arcviolation \fIn\fB
  306. percentage of arcs that violate the symmetry condition in the aggregation
  307. check of group sifting. Should be between 0 and 100. The default value is
  308. 10. A larger value causes more aggregation.
  309. .TP 10
  310. .B \-symmviolation \fIn\fB
  311. percentage of nodes that violate the symmetry condition in the aggregation
  312. check of group sifting. Should be between 0 and 100. The default value is
  313. 10. A larger value causes more aggregation.
  314. .TP 10
  315. .B \-recomb \fIn\fB
  316. threshold used in the second difference criterion for aggregation. (Used
  317. by check7.) The default value is 0. A larger value causes more
  318. aggregation. It can be either positive or negative.
  319. .TP 10
  320. .B \-tree \fIfile\fB
  321. read the variable group tree from \fIfile\fR. The format of this file is
  322. a sequence of triplets: \fIlb ub flag\fR. Each triplet describes a
  323. group: \fIlb\fR is the lowest index of the group; \fIub\fR is the
  324. highest index of the group; \fIflag\fR can be either D (default) or F
  325. (fixed). Fixed groups are not reordered.
  326. .TP 10
  327. .B \-genepop \fIn\fB
  328. size of the population for genetic algorithm. By default, the size of
  329. the population is 3 times the number of variables, with a maximum of 120.
  330. .TP 10
  331. .B \-genexover \fIn\fB
  332. number of crossovers at each generation for the genetic algorithm. By
  333. default, the number of crossovers is 3 times the number of variables,
  334. with a maximum of 50.
  335. .TP 10
  336. .B \-seed \fIn\fB
  337. random number generator seed for the genetic algorithm and the random
  338. and pivot reordering methods.
  339. .TP 10
  340. .B \-progress
  341. report progress when building the BDDs for a network. This option
  342. causes the name of each primary output or next state function to be
  343. printed after its BDD is built. It does not take effect if local BDDs
  344. are requested.
  345. .TP 10
  346. .B -p \fIn\fB
  347. verbosity level. If negative, the program is very quiet. Larger values cause
  348. more information to be printed.
  349. .SH SEE ALSO
  350. The documentation for the CUDD package explains the various
  351. reordering methods.
  352. The documentation for the MTR package provides details on the variable
  353. groups.
  354. dot(1)
  355. .SH REFERENCES
  356. F. Somenzi,
  357. "Efficient Manipulation of Decision Diagrams,"
  358. Software Tools for Technology Transfer,
  359. vol. 3, no. 2, pp. 171-181, 2001.
  360. S. Panda, F. Somenzi, and B. F. Plessier,
  361. "Symmetry Detection and Dynamic Variable Ordering of Decision Diagrams,"
  362. IEEE International Conference on Computer-Aided Design,
  363. pp. 628-631, November 1994.
  364. S. Panda and F. Somenzi,
  365. "Who Are the Variables in Your Neighborhood,"
  366. IEEE International Conference on Computer-Aided Design,
  367. pp. 74-77, November 1995.
  368. G. D. Hachtel and F. Somenzi,
  369. "A Symbolic Algorithm for Maximum Flow in 0-1 Networks,"
  370. IEEE International Conference on Computer-Aided Design,
  371. pp. 403-406, November 1993.
  372. .SH AUTHOR
  373. Fabio Somenzi, University of Colorado at Boulder.