Lazy Man’s Logic Synthesis Wenlong Yang Lingli Wang State Key Lab of ASIC and System Fudan University, Shanghai, China Alan Mishchenko Department of EECS University of California, Berkeley 1 Introduction Previous Work Lazy Man’s Logic Synthesis(LMS) Experimental Results Conclusion & Future Work 2 Goal of logic synthesis: Deriving a circuit or improving an available circuit We proposed a “Lazy” approach to reuse optimal structures derived by other synthesis tools based on a pre-computed library Other tools A Function with N variables AIG LMS precomputed library 3 Introduction Previous Work Lazy Man’s Logic Synthesis(LMS) Experimental Results Conclusion 4 • • • • Logic synthesis based on precomputed library have been proposed in several papers, but they are all different from LMS: Previous work Precompute structures in terms of LUTs [Kennings, IWLS, 2010 ] Didn't use preexisting benchmarks or tools [Bjesse, ICCAD , 2004] Look at only 4-5 input functions [Li, IWLS, 2011] Only compute multiple structure choices [Chatterjee, TCAD, 2006] LMS • Precompute structures in terms of AIGs • Use public benchmarks and existing tools • Look at 6-16 input functions • Store many equivalent structures 5 • • • • For each node Compute several k-input cuts Perform delay-optimal tree balancing of the SOP Select the best one to replace the current structure. F = !c*!b + !c*a An AIG subgraph found in benchmark s27.blif where SOP balancing loses to the proposed approach F’ = !c*!(b*!a) 6 Introduction Previous Work Lazy Man’s Logic Synthesis(LMS) Equivalence Classes Library Representation/Construction Implementation Experimental Results Conclusion 7 LMS is based on collecting, storing, and re-using circuit structures of Boolean functions with 6-16 input variables. The total number of completely-specified Boolean functions of N variables is 2^(2^N). Experiments shows that even for the practical functions, this number can be very large. To reduce the number and memory need to store functions in a library, a canonical form is used to break them into Equivalence Classes. 8 Two functions are NPN-equivalent if one of them can be obtained from the other by negation and/or permutation of the inputs and outputs. Drawbacks of NPN computation: • Time-consuming • Complicated Complete NPN canonical form is not affordable to LMS 9 The idea is to order the input variables and the polarities of inputs/outputs using the number of positive minterms and cofactors w.r.t. each variable. Input: TruthTable F 1. Determine the polarity of F by the number of 1’s in TruthTable 2. Determine the polarity of each variable by the number of 1s in the negative cofactor w.r.t. each variable 3. Sort input variables by the number of 1s in their negative cofactors and permute inputs accordingly Output: canonicized TruthTable F A reasonable trade-off between accuracy and speed 10 An N-input library contains functions up to N variables. Structures of all functions are represented as a shared AIG Each output of the AIG is the root node of one logic structure. When a library is loaded, the following actions are performed: A hash table is created to hash the outputs by its semi-canonical form. For each structure, the area and pin-to-output delays are computed and stored. 11 Suppose arrival time:{3, g:1 + Pin-to-output delay:{3, c:3 3, 3, 5, 5, 4, 1} = a:3 b:3 2, 4, 5, 2, 3, 1} f:4 d:5 e:5 {6, 5, 7, 10, 7, 7, 2} Example of using pin-to-output delays to compute structure delay If one structure’s pin-to-output delay is worse than another with respect to every input, the structure is dominated. 12 LUT mapper if in ABC is used as a structural cut browser to generate Kinput cuts whose logic structures are added to the library. Input: Cut C 1. If cut C does not meet the requirements return 2. Compute Boolean function F of cut C as a truthtable 3. Compute the semi-canonical form of F 4. 5. 6. Rebuild the structure of the cut in the library If ( the structure already exists or is dominated ) return Add a new primary output to store the structure in the hash table 13 Input: And-Inverter Graph For each node, in a topological order Compute several K-input cuts For each cut ▪ Compute truth table ▪ Look up in the library ▪ If there is no structure for this function Mark the cut to ensure it is not selected as best cut ▪ Else if the best structure found leads to smaller AIG level Save the cut as the best cut If there is an improvement in level, update AIG 14 The LMS algorithm is implemented in ABC. The LUT mapper if in ABC is used as: (a) A cut browser for computing the libraries (b) A mapper in the case study on AIG level minimization Commands related to library construction: rec_start: Starts the LMS recorder. rec_add: Add structures from benchmarks rec_filter: Removes the structures with less frequency rec_merge: Merges two previously computed libraries rec_ps: Prints statistics for the currently loaded library rec_use: Transforms the internal library to the current network in ABC rec_stop: Deletes the current library. Commands used to perform LMS mapping: if –y –K <num> -C<num> • • • -y enables level optimization by LMS -K <num> is the cut size -C <num> is the number of cuts used at each node 15 Introduction Previous Work Lazy Man’s Logic Synthesis(LMS) Experimental Results Library Coverage 6-input Library Optimize Delay After LUT Mapping Conclusion 16 This experiment was performed to show that LMS has practical memory requirements for functions up to 12 inputs. Semi-canonical classes of all functions appearing in the cuts of the benchmark circuits without synthesis, were collected and the frequency of their appearance was recorded. 1,500,000 1,000,000 500,000 Function # 2,000,000 • ~2 M classes in total • ~740 K classes for 90% functions • ~400MB for truth tables 0 25% 50% 75% 90% 95% 100% occurrence frequency 17 The goal of this experiment is to derive a 6-input library used in the following case study of AIG level minimization. The following ABC scripts are used to collect structures: • read file; st; rec_add; • dc2; rec_add; • if -K 8; bidec; st; rec_add; • if -K 8; mfs; st; rec_add; • if -K 8; bidec; st; rec_add; • if -g -K 6; st; rec_add; • if -g -K 6; st; rec_add; Statistics of the precomputed 6-input library Inputs 2 3 4 5 6 Total Classes # Structures # 3 3 32 88 2,430 12,673 98,208 471,973 1,148,556 5,202,924 1,249,229 5,687,661 Ratio 1.00 2.75 5.22 4.81 4.53 4.55 • ~77MB AIGER file 18 Two sets of benchmarks are used in this paper: 20 MCNC benchmarks and 10 large Altera benchmarks. LUT mapping was performed by the following scripts: Map: st; resyn2; if -K 4 or 6 MapC: st; resyn2; dch -f; if -K 4 or 6 SOPBC: st; if -gm -K 6; st; resyn2; dch -f; if -K 4 or 6 LMSC: st; if -ym -K 6; st; resyn2; dch -f; if -K 4 or 6 Benchmarks were run on a workstation with a Intel Xeon Quad Core CPU and 256 GBytes RAM (~4GB used for the experiment) The resulting networks were verified by command cec in ABC. 19 4-LUT count 4-LUT levels Design Map MapC SOPBC LMSC 40 38856 39842 42092 42371 88 76 17902 17401 18538 18800 19 19 14 8995 9114 12221 11158 20 19 17 13 10967 10940 14590 14321 radar20_opt.blif 39 38 23 16 16834 17216 17717 20663 screen_saver_cyclone.blif 18 18 16 17 35627 35183 35614 35900 sudoku_check.blif 11 11 10 10 20998 20774 21094 21286 top_rs_decode.blif 43 43 31 24 31381 30729 30798 30926 umass_weather.blif 38 38 25 17 15821 15734 18250 18292 uoft_raytracer.blif 70 69 58 30 33294 33852 37118 40147 1.00 0.99 0.80 0.63 1.00 1.00 1.11 1.13 Map MapC SOPBC LMSC 68 68 53 119 116 oc_video_compression_systems_dct_opt.blif 19 oc_video_compression_systems_jpeg_opt.blif carpat.blif fp_operators.blif Ratio LMSC reduced delay by 37% with an area increase of 13% 20 Design 6-LUT levels 6-LUT count Map MapC SOPBC LMSC Map MapC SOPBC LMSC carpat.blif 35 35 35 27 29826 31098 32243 33321 fp_operators.blif 67 66 57 50 10541 11118 12005 11982 oc_video_compression_systems_dct_opt.blif 10 10 12 9 7349 7566 8816 8606 oc_video_compression_systems_jpeg_opt.blif 10 10 12 9 7796 7822 8365 9537 radar20_opt.blif 20 20 13 10 12351 12705 12871 14964 screen_saver_cyclone.blif 13 12 12 12 27129 27113 27503 27373 sudoku_check.blif 7 7 7 7 14542 14355 14707 15501 top_rs_decode.blif 24 24 20 16 21271 21324 21668 21615 umass_weather.blif 24 24 16 10 12196 11990 13287 14123 uoft_raytracer.blif 36 35 31 19 26128 26666 29802 31356 1.00 0.99 0.92 0.74 1.00 1.02 1.08 1.13 Ratio LMSC reduced delay by 26% with an area increase of 13% 21 Design alu4 apex2 b14 b15 b17 b20 b21 b22 clma des elliptic ex5p frisc i10 pdc s38584 s5378 seq spla tseng Raito Map 7 8 21 22 31 23 23 23 13 6 8 6 20 14 9 9 6 6 9 13 1.00 4-LUT level MapC SOPBC 7 7 8 8 20 17 22 21 31 27 22 19 22 20 23 19 13 12 6 6 8 8 6 6 20 19 14 13 8 8 9 8 6 5 6 6 9 9 13 12 0.99 0.92 LMSC 7 8 17 21 26 19 19 19 12 6 8 6 16 12 8 8 5 6 8 10 0.90 Map 694 871 1761 3147 9676 3692 3768 5423 4016 1228 431 471 2279 746 1926 4021 459 946 1899 756 1.00 4-LUT count MapC SOPBC 701 702 867 874 1771 1913 3103 3186 9507 9527 3587 3886 3612 3847 5280 5693 4008 4189 1257 1249 432 442 462 472 2261 2332 741 743 2047 1925 3978 3985 451 470 935 948 1803 1860 800 743 1.00 1.02 LMSC 714 890 1849 3233 9570 3829 3908 5729 4150 1273 443 481 2279 741 2075 3980 468 941 1928 809 1.03 Map 5 6 13 15 21 15 15 15 9 5 6 5 13 9 7 6 4 5 7 8 1.00 6-LUT level MapC SOPBC 5 5 6 6 13 10 15 14 21 16 15 12 15 11 15 12 9 8 5 5 6 6 4 5 12 11 9 9 7 6 6 6 4 4 5 5 7 6 8 6 0.99 0.90 LMSC 5 6 11 13 16 12 12 11 8 4 6 4 9 9 7 6 4 5 6 6 0.88 Map 503 691 1275 2119 6510 2679 2701 3985 2975 824 317 351 1807 598 1428 2720 356 685 1414 648 1.00 6-LUT count MapC SOPBC 525 520 683 728 1263 1517 2211 2255 6356 6667 2619 3070 2577 3114 3847 4638 2894 3145 862 866 317 327 382 378 1811 1883 608 575 1350 1619 2802 2816 355 369 668 707 1361 1445 694 689 1.00 1.07 LMSC 532 711 1442 2419 6670 3044 3115 4677 3246 953 333 408 1948 583 1416 2831 358 696 1455 731 1.08 4-LUTs: LMSC reduced delay by 10% with an area increase of 3% 6-LUTs: LMSC reduced delay by 12% with an area increase of 8% 22 A new method to harvest and re-use circuit structures produced by different tools on benchmark circuits The “lazy” approach is made practical by A semi-canonical form to reduce the number of equivalence classes Using AIGs to store precomputed libraries in memory and on disk Using truth tables to manipulate Boolean functions As the case-study, the proposed approach was applied to improve delay after FPGA mapping For industrial benchmarks, compared to SOP balancing, the delay was reduced by 17% (18%) for LUT4 (LUT6) the area penalty was 2% (5%) 23 Improving implementation Reducing memory by using a low-memory AIG Building libraries in terms of multi-input gates Filtering libraries based on their performance Giving the user control over the area increase Continuing experiments Performing case studies with larger functions Evaluating delay improvements after P&R 24 Authors' E-mail: WenlongYang allanwin@hotmail.com Lingli Wang llwang@fudan.edu.cn Alan Mishchenko alanmi@eecs.berkeley.edu 25 Deriving a circuit for a Boolean function or improving an available circuit are typical tasks solved by logic synthesis. Numerous algorithms in this area have been proposed and implemented over the last 50 years. This paper presents a "lazy” approach to logic synthesis based on the following observations: (a) optimal or near-optimal circuits for many practical functions are already derived by the tools, making it unnecessary to implement new algorithms or even run the old ones repeatedly; (b) larger circuits are composed of smaller ones, which are often isomorphic up to a permutation/negation of inputs/outputs. Experiments confirm these observations. Moreover, a case-study shows that logic level minimization using lazy man’s synthesis improves delay after LUT mapping into 4- and 6-input LUTs, compared to earlier work on high-effort delay optimization.