1 | |
---|
2 | spfd_pilo - Perform SPFD-based placement independent logic optimization. |
---|
3 | _________________________________________________________________ |
---|
4 | |
---|
5 | spfd_pilo [-a <[0,1]>] [-D <depth>] [-f <file>] [-h] [-i <freq>] [-p |
---|
6 | <percent>] [-r] [-S <n>] [-t <sec>] [-v <n>] [-w <file>] |
---|
7 | |
---|
8 | This command performs SPFD-based wire removal/replacement and |
---|
9 | reprogramming of combinational circuits mapped to LUT-based FPGAs to |
---|
10 | reduce the number of wires and nodes in the circuit. The flexibilities |
---|
11 | in the circuit are represented by SPFDs. The following references |
---|
12 | explain in detail the theory behind SPFDs. |
---|
13 | |
---|
14 | S. Yamashita, H. Sawada, and A. Nagoya. A new method to express |
---|
15 | functional permissibilities for LUT based FPGAs and its applications. |
---|
16 | In International Conference on Computer Aided Design, pages 254-261, |
---|
17 | 1996. |
---|
18 | |
---|
19 | Subarnarekha Sinha and Robert K. Brayton. Implementation and use of |
---|
20 | SPFDs in optimizaing Boolean networks. In International Conference on |
---|
21 | Computer Aided Design, 1998. |
---|
22 | |
---|
23 | Instead of computing the flexibilities for every node in the network |
---|
24 | at once, the algorithm computes the flexibilities for one cluster at a |
---|
25 | time. Working with clusters allows us to avoid the BDD explosion |
---|
26 | problem and hence, handle large circuits. The SPFDs are computed for |
---|
27 | the cluster and the cluster nodes are reprogrammed based on the |
---|
28 | flexibility derived. Switching activity is used to drive the choice of |
---|
29 | alternate function to be implemented at the node. In the absence of |
---|
30 | switching activity information, the function that can reduce support |
---|
31 | of the node can be chosen (not implemented). Currently, an arbitrary |
---|
32 | choice is made from the flexibilities provided by SPFDs. (-S 0, -S 2, |
---|
33 | and -S 4) |
---|
34 | |
---|
35 | Before calling this command a network should be created for the design |
---|
36 | (use flatten_hierarchy) and MDD ids for every node in the network |
---|
37 | should be created (static_order -o all -n append, for example). |
---|
38 | Dynamic variable ordering (dvo -e sift) can be enabled to reduce BDD |
---|
39 | sizes. |
---|
40 | |
---|
41 | Command options: |
---|
42 | |
---|
43 | -a <alpha> |
---|
44 | A convex combination of switched capacitance (switching |
---|
45 | activity * fanout count, SWC) and topological depth is used to |
---|
46 | sort the fanin nodes during SPFD computation. alpha is between |
---|
47 | 0 and 1.0. The cost function is alpha*SWC + |
---|
48 | (1.0-alpha)*topDepth. The default value is 0.5. |
---|
49 | |
---|
50 | -D <depth> |
---|
51 | A cluster is computed which includes nodes within the specified |
---|
52 | 'depth'. The default value is 1. |
---|
53 | |
---|
54 | -f <file> |
---|
55 | File with simulation vectors. The file format is as below. The |
---|
56 | format is simple but strict and hence, few checks are made. |
---|
57 | |
---|
58 | .i c n d o e p f q g r h s i t j u k a l b m |
---|
59 | .s |
---|
60 | 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 ; |
---|
61 | 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 0 1 ; |
---|
62 | 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 ; |
---|
63 | 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 ; |
---|
64 | The .i statement specifies the primary inputs of the network. |
---|
65 | The patterns start after .s key word. Each vector is a space |
---|
66 | separated list of bits and ends in a semi-colon. The length of |
---|
67 | any vector should be equal to the number of signals specified |
---|
68 | in the .i statement. A line starting with # is a comment. |
---|
69 | |
---|
70 | -h |
---|
71 | Print usage. |
---|
72 | |
---|
73 | -i <freq> |
---|
74 | Number of iterations after which to update node switching |
---|
75 | activity. This is valid only if patterns are provided in a file |
---|
76 | using -f option. The default value is every 5 iterations. |
---|
77 | |
---|
78 | -m <n> |
---|
79 | Heuristics to optimize a selected node. |
---|
80 | 0: Reduce the selected node's support. |
---|
81 | 1: Reprogram the selected node. |
---|
82 | 2: Reprogram the selected node's fanin nodes. (default) |
---|
83 | 3: Reduce the selected node's fanout wires. |
---|
84 | |
---|
85 | -p <percent> |
---|
86 | The percentage of vectors, specified via -f option, used to |
---|
87 | perform simulation (to update switching activity) during logic |
---|
88 | optimization. The default value is 10%. |
---|
89 | |
---|
90 | -r |
---|
91 | Do not reprogram LUTs if no structural changes have been |
---|
92 | performed with in the cluster, i.e., if no nodes or wires have |
---|
93 | been removed do not change the local implementation of LUTs |
---|
94 | even if alternate implementations are availabe from SPFD |
---|
95 | information. The default is to reprogram. |
---|
96 | |
---|
97 | -S <n> |
---|
98 | Method used to sort nodes. The nodes are then optimized in that |
---|
99 | order. |
---|
100 | 0: Random node is chosen. (default) |
---|
101 | 1: If switching activity is available, node with maximum SWC is |
---|
102 | chosen. |
---|
103 | 2: Node with maximum fanout is chosen. |
---|
104 | 3: If switching activity is available, node with minimum SWC is |
---|
105 | chosen. |
---|
106 | 4: Node with minimum fanout is chosen. |
---|
107 | |
---|
108 | -t <sec> |
---|
109 | Time in seconds allowed to complete the command. If the |
---|
110 | computation time goes above that limit, the process is aborted. |
---|
111 | The default is no limit. |
---|
112 | |
---|
113 | -v <n> |
---|
114 | Verbosity level. Default value is 0. |
---|
115 | |
---|
116 | -w <file> |
---|
117 | File to output final optimized circuit. |
---|
118 | __________________________________________________________ |
---|
119 | |
---|
120 | Last updated on 20050519 10h16 |
---|