[11] | 1 | |
---|
| 2 | synthesize_network - Synthesizes a network using ZDD factorization method. |
---|
| 3 | _________________________________________________________________ |
---|
| 4 | |
---|
| 5 | synthesize_network [-d <divisor>] [-e] [-f <factoringMethod>] [-h] [-i |
---|
| 6 | <prefix>] [-o <fileHead>] [-r <reachMethod>] [-t <timeOut>] [-v] [-A] |
---|
| 7 | [-O <outputOrdering>] [-R <reorder>] [-T] |
---|
| 8 | |
---|
| 9 | This command synthesizes a network to have as few literals as possible |
---|
| 10 | and outputs a blif file and an equation file. Those files are the |
---|
| 11 | results of the synthesis. By default, the names of the files are |
---|
| 12 | model_name.ml.blif and model_name.eq unless users specify the |
---|
| 13 | model_name explicitly using -o option. But, when the output blif file |
---|
| 14 | is read in sis, it may have slightly different number of literals. |
---|
| 15 | This problem will be fixed in the later version. Currently, this |
---|
| 16 | command can be used only with CUDD package. Designs described in BLIF |
---|
| 17 | or BLIF-MV format can be synthesized by this command. However, |
---|
| 18 | multiple valued variables are not supported. Hence, signals in the |
---|
| 19 | designs described in BLIF-MV need to be restricted to binary values. |
---|
| 20 | There are 4 divisor functions to find a good divisor of a function. |
---|
| 21 | Neither of them consistently generates the best result. And, there are |
---|
| 22 | 2 factoring methods: simple factoring and generic factoring. Also, |
---|
| 23 | neither of two always does better than the other. |
---|
| 24 | |
---|
| 25 | Command options: |
---|
| 26 | |
---|
| 27 | -d <divisor> |
---|
| 28 | Choose a divisor. |
---|
| 29 | |
---|
| 30 | 0 : Fast divisor. We find a divisor on a ZDD graph. As soon as |
---|
| 31 | any shared node(variable) is found, the variable is returned as |
---|
| 32 | a divisor. |
---|
| 33 | |
---|
| 34 | 1 : (default) Least occuring literal divisor. If a variable |
---|
| 35 | occurs the least frequently(but, should be more than one) in |
---|
| 36 | cubes, it returns the variable as a divisor. |
---|
| 37 | |
---|
| 38 | 2 : Most occuring literal divisor. If a variable occurs the |
---|
| 39 | most frequently in cubes, it returns the variable as a divisor. |
---|
| 40 | |
---|
| 41 | 3 : Level-0 divisor. It finds a divisor that is a level-0 |
---|
| 42 | cokernel. |
---|
| 43 | |
---|
| 44 | -e |
---|
| 45 | Dump the synthesized circuit in equation format also. Default |
---|
| 46 | is not to. |
---|
| 47 | |
---|
| 48 | -f <factoringMethod> |
---|
| 49 | Choose a factoring method. |
---|
| 50 | |
---|
| 51 | 0 : (default) Simple factoring. This method uses a simple |
---|
| 52 | recursion. First, it finds a proper divisor of a function, then |
---|
| 53 | divide the function by the divisor, then it gets a quotient and |
---|
| 54 | a remainder. And, it does the same thing recursively for each |
---|
| 55 | divisor, quotient, and remainder. |
---|
| 56 | |
---|
| 57 | 1 : Generic factoring. This method is quite similar to the |
---|
| 58 | simple factoring, but it does more in terms of considering |
---|
| 59 | cube-free and common divisor and literal factoring. But, it |
---|
| 60 | does not always generate better results than the simple |
---|
| 61 | factoring does. |
---|
| 62 | |
---|
| 63 | -h |
---|
| 64 | Print the command usage. |
---|
| 65 | |
---|
| 66 | -i <prefix> |
---|
| 67 | Specify the prefix of internal node names. By default, the |
---|
| 68 | prefix is "_n". |
---|
| 69 | |
---|
| 70 | -o <fileHead> |
---|
| 71 | Specify the output file name (without extension). By default, |
---|
| 72 | the model name in a blif file is used. |
---|
| 73 | |
---|
| 74 | -r <reachMethod> |
---|
| 75 | If the network is sequential, then use unreachable states as |
---|
| 76 | dont cares in the optimization. By default no reachability |
---|
| 77 | analysis is performed. See -A option of command compute_reach |
---|
| 78 | for more details. The various options are: |
---|
| 79 | |
---|
| 80 | 0 : Do not use dont cares (default). |
---|
| 81 | |
---|
| 82 | 1 : Use normal breadth first search method for reachability |
---|
| 83 | analysis. |
---|
| 84 | |
---|
| 85 | 2 : Use high density traversal method for reachablity analysis. |
---|
| 86 | |
---|
| 87 | 3 : Use approximate unreachable states(a subset of actual |
---|
| 88 | unreachable states) as dont cares. |
---|
| 89 | |
---|
| 90 | -t <timeOut> |
---|
| 91 | Time in seconds allowed to perform synthesize_network. The |
---|
| 92 | default is no limit. |
---|
| 93 | |
---|
| 94 | -v |
---|
| 95 | Print debug information. |
---|
| 96 | |
---|
| 97 | -A |
---|
| 98 | Allow realignment to ZDD/BDD after BDD/ZDD reordering, |
---|
| 99 | respectively. This option is effective when only one reordering |
---|
| 100 | in BDD or ZDD is enabled. |
---|
| 101 | |
---|
| 102 | -O <outputOrdering> |
---|
| 103 | Choose an output ordering method. |
---|
| 104 | |
---|
| 105 | 0 : No ordering. |
---|
| 106 | |
---|
| 107 | 1 : (default) Use support variable set of output functions. |
---|
| 108 | |
---|
| 109 | 2 : Use BDD size of output functions. |
---|
| 110 | |
---|
| 111 | -R <reorder> |
---|
| 112 | Allow reordering in BDD and/or ZDD. |
---|
| 113 | |
---|
| 114 | 0 or n : (default) No reordering neither in BDD nor in ZDD. |
---|
| 115 | |
---|
| 116 | 1 or b : Allows reordering only in BDD, not in ZDD. |
---|
| 117 | |
---|
| 118 | 2 or z : Allows reordering only in ZDD, not in BDD. |
---|
| 119 | |
---|
| 120 | 3 or a : Allows reordering both in BDD and in ZDD. |
---|
| 121 | |
---|
| 122 | -T |
---|
| 123 | Try to share more nodes during symbolic factorization. Existing |
---|
| 124 | divisors are checked for potential reuse before extracting |
---|
| 125 | divisors from the current boolean function. |
---|
| 126 | ____________________________________________________ |
---|
| 127 | |
---|
| 128 | Last updated on 20050519 10h16 |
---|