Rola i znaczenie syntezy logicznej w technice układów FPGA i analizie danych Tadeusz Łuba (luba@tele.pw.edu.pl) Faculty of Electronics and Information Technology Warsaw University of Technology II Sympozjum FPGA 2016, Uniwersytet Jagielloński, Kraków 2016 1
Motto Why Again Logic Synthesis? Giovanni De Micheli, EPFL Workshop on Logic Synthesis and Verification, 10 December 2015 Why Again Logic Synthesis? “Most logic synthesis and optimization problems are not inherently solved, as demonstrated by the fact that current commercial systems are based on heuristics”. Niedoskonałość metod syntezy logicznej w komercyjnych systemach projektowania 2
Przyczyny… Powszechnie stosowaną metodą syntezy logicznej jest minimalizacja funkcji boolowskich, a ta procedura jest niedostosowana do zasobów układów FPGA, wyposażonych w komórki LUT oraz pamięci ROM. 3
Logic synthesis 3.3. Functional decomposition Próby zaradzenia tej sytuacji podejmowane były od dawna, ale szczególnej intensywności nabrały stosunkowo niedawno… Mocnym głosem okazała się książka .., w której po raz pierwszy tak wyraźnie stwierdzono, że jedynymi skutecznymi metodami syntezy Dla układów FPGA są: Redukcja argumentów Dekompozycja funkcjonalna 3.3. Functional decomposition 11. Reduction of the Number of Variables 4
zastępuje się pamięcią ROM Filtr f5 w technice DA .i 11 .o 11 .p 2048 00000000000 00000000000 00000000001 00000000011 00000000010 00000000000 00000000011 00000000011 00000000100 11111100111 00000000101 11111101010 00000000110 11111100111 00000000111 11111101010 00000001000 00000000000 00000001001 00000000011 00000001010 00000000000 00000001011 00000000011 00000001100 11111100111 00000001101 11111101010 00000001110 11111100111 00000001111 11111101010 ....................... 11111110010 01000010110 11111110011 01000011001 11111110100 00111111101 11111110101 01000000000 11111110110 00111111101 11111110111 01000000000 11111111000 01000010110 11111111001 01000011001 11111111010 01000010110 11111111011 01000011001 11111111100 00111111101 11111111101 01000000000 11111111110 00111111101 11111111111 01000000000 . .i 7 .o 11 .p 128 0000000 00000000000 0000001 00000000011 0000010 11111100111 0000011 11111101010 0000100 00010010110 0000101 00010011001 0000110 00001111101 0000111 00010000000 0001000 00100000000 0001001 00100000011 0001010 00011100111 0001011 00011101010 0001100 00110010110 0001101 00110011001 0001110 00101111101 0001111 00110000000 ................... 1110010 00001100111 1110011 00001101010 1110100 00100010110 1110101 00100011001 1110110 00011111101 1110111 00100000000 1111000 00110000000 1111001 00110000011 1111010 00101100111 1111011 00101101010 1111100 01000010110 1111101 01000011001 1111110 00111111101 1111111 01000000000 . Układ mnożenia zastępuje się pamięcią ROM R e j s t r y ROM + R .i 11 .o 11 .p 2048 .i 7 .o 11 .p 128 5
Bez redukcji Synteza programem Vivado 2015.4.2 Dla układu Virtex-7 6
Po redukcji Synteza programem Vivado 2015.4.2 Dla układu Virtex-7 (xc7vx330tffg1157-2) 7
Realizacje układu AR filtru f5 Bez redukcji argumentów Z redukcją argumentów System and chip LE pcs Vivado 2015.4.2 Virtex-7 (xc7vx330tffg1157-2) LUT6 LUT5 LUT4 LUT3 LUT2 MUXF7 MUXF8 330 86 49 34 32 5 1 9 Altera Quartus II Stratix V (5SEE9H40I2) ALUT7 ALUT6 ALUT5 ALUT4 ALUT3 62 294 2675 1022 1677 140 160 65 61 PrecisionRTL Synthesis 2015.1.6 VIRTEX-7 (7VX330TFFG1157) LUT 1915 (total) 8
Zastosowania: Index Generation Functions, T. Sasao: Index Generation Functions: Logic Synthesis for Pattern Matching Index Generation Functions, to metodyka syntezy logicznej układów cyfrowych starająca się sprostać wyzwaniom stawianym przez konieczność precyzyjnego wyodrębniania właściwych danych z ogromnej masy danych niepotrzebnych. Zastosowania: dystrybucja adresów IP, skanowanie wirusów, wykrywanie niepożądanych danych, konwersja kodów itp. 9
Układ do wykrywania wzorców x1 y1 x2 Pattern matching circuit y2 x3 y3 y4 x40 Trzeba wykryć stosunkowo niewielką liczbę wzorów spośród ogromnej liczby innych wektorów 40-bitowych… T. Sasao, Index Generation Functions: Logic Synthesis for Pattern Matching, EPFL Workshop on Logic Synthesis & Verification, Dec. 2015. 10
Jak zaprojektować układ do wykrywania wzorców? 10 wektorów 40 bitowych 0110000100010000101001100001000100001010 0101111101101010001101011111011010100011 1111010101110111000011110101011101110001 0001111000010001011100011110000100010111 0011110000000100010100111100000001000101 0111001001000100100101110010010001001001 0010001110001111001000100011100011110010 1111111111010001111000100011100011110010 1110111000110001011011101110001100010110 1010000110100100001110100001101001000011 Jak zaprojektować układ do wykrywania wzorców? T. Sasao, Index Generation Functions: Logic Synthesis for Pattern Matching, EPFL Workshop on Logic Synthesis & Verification, Dec. 2015. 11
Głównym problemem jest zatem obliczanie reduktów! Generator indeksów Zadanie takie rozwiązuje się algorytmem redukcji argumentów 5 4 x1 4 5 Linear Circuity Main Memory AND AUX Memory 35 x2 35 Głównym problemem jest zatem obliczanie reduktów! 35 Comparator x2 T. Sasao, Index Generation Functions: Logic Synthesis for Pattern Matching, EPFL Workshop on Logic Synthesis & Verification, Dec. 2015. 12
Komentarz Najpilniejsze zadanie… Current Projects • Minimizers for input variables – high-speed applications – exact minimum • Functional decomposition – using multiple IGUs T. Sasao, Index Generation Functions: Logic Synthesis for Pattern Matching EPFL Workshop on Logic Synthesis & Verification, Dec. 2015. 13
Błyskawica http://logic.mimuw.edu.pl/~rses/ Reduction of attributes 14
Błyskawica …wszystkie redukty (ponad 100tys.) w czasie 292 sek; redukty najmniejsze (2261) znajduje w czasie 1435 ms. Jeden z najmniejszych reduktów x6, x16, x24 i x31 Wynik Sasao 0110000100010000101001100001000100001010 0101111101101010001101011111011010100011 1111010101110111000011110101011101110001 0001111000010001011100011110000100010111 0011110000000100010100111100000001000101 0111001001000100100101110010010001001001 0010001110001111001000100011100011110010 1111111111010001111000100011100011110010 1110111000110001011011101110001100010110 1010000110100100001110100001101001000011 0000 1011 1111 1110 1010 0010 0100 1100 1101 0001 01100 01011 11110 00011 00111 01110 00100 11111 11101 10100 15
Dodatkowe uproszczenie struktury Generator indeksów 5 4 4 x1 4 5 4 Linear Circuity Main Memory AND AUX Memory 35 x2 36 35 36 35 Comparator x2 36 Dodatkowe uproszczenie struktury 16
RSES vs Błyskawica 15000 razy szybciej! 60 min. 250 ms. 5574 reduktów .type fr .i 21 .o 1 .p 31 100110010110011111101 1 111011111011110111100 1 001010101000111100000 1 001001101100110110001 1 100110010011011001101 1 100101100100110110011 1 001100100111010011011 1 001101100011011011001 1 110110010011001001101 1 100110110011010010011 1 110011011011010001100 1 010001010000001100111 0 100110101011111110100 0 111001111011110011000 0 101101011100010111100 0 110110000001010100000 0 110110110111100010111 0 110000100011110010001 0 001001000101111101101 0 100100011111100110110 0 100011000110011011110 0 110101000110101100001 0 110110001101101100111 0 010000111001000000001 0 001001100101111110000 0 100100111111001110010 0 000010001110001101101 0 101000010100001110000 0 101000110101010011111 0 101010000001100011001 0 011100111110111101111 0 .end {x2, x4, x7, x9, x16} .type fr .i 5 .o 1 .p 22 01001 1 10111 1 00111 1 01000 1 01101 1 01100 1 11000 1 10010 1 10001 0 01111 0 10110 0 01011 0 11001 0 11100 0 10100 0 00001 0 00000 0 11011 0 00101 0 00011 0 00100 0 11111 0 .e Czas obliczeń: RSES 60 min. 5574 reduktów Błyskawica 250 ms. 15000 razy szybciej! 17
Klasyczna metoda redukcji atrybutów… polega na transformacji wyrażenia boolowskiego CNF na DNF (Dysjunkcyjna Postać Normalna). Transformacja taka tradycyjnie jest obliczana metodami przekształceń boolowskich. Klasyczną metodę można ulepszyć... przez zastosowanie procedury uzupełniania funkcji boolowskiej Zamiast transformować CNF na DNF Reprezentuje się macierz rozróżnialności (CNF) w postaci binarnej macierzy M, a następnie jako funkcję boolowską F liczy się uzupełnienie F (Complement) tej funkcji. Uzupełnienie reprezentuje wszystkie redukty 18
Algorytm redukcji argumentów… Macierz rozróżnialności Discernibility Matrix (DM) Funkcja rozróżnialności Discernibility Function (DF) 1100000 0000011 x1 x2 x3 x4 x5 x6 x7 f 1 2 3 4 5 6 7 8 9 0010101 0010011 0110000 ....... 0001000 0101011 1001011 0101000 0111110 0111000 0110001 0100111 0100001 0000010 Zredukowana macierz rozróżnialności 1100000 0010101 0110000 0100001 Zmienne niezbędne 19
Klasyczna metoda redukcji atrybutów To są wszystkie redukty… CNF Iloczyn sum DNF Suma iloczynów - Macierz rozróżnialności Funkcja rozróżnialności (x1 + x2) (x3 + x5 + x7) (x2 + x3) (x2 + x7) = (x1, x2) = (x2 +x1)(x2 + x3)(x2 + x7)(x3 + x5 + x7) = (x3, x5, x7) (x2, x3) =(x2 +x1x3x7) (x3 + x5 + x7) = (x2, x7) = x2x3 + x2x5 +x2x7 + x1x3x7 {x4,x6} {x2,x3,x4,x6} {x2,x4,x5,x6} {x2,x4,x6,x7} {x1,x3,x4,x6,x7} To są wszystkie redukty… 20
Redukcja argumentów Funkcja jest zależna od {x2,x4,x6,x7} 21 x1 x2 x3 2 3 4 5 6 7 8 9 x2 x4 x6 x7 f 1 2 3 4 5 6 7 8 9 21
…w algorytmie uzupełniania F = x4 x6(x1 + x2) (x3 + x5 + x7)(x2 + x3)(x2 + x7) .i 7 .o 1 .p 6 11----- 1 --1-1-1 1 -11---- 1 -1----1 1 ---1--- 1 -----1- 1 .end .i 7 .o 1 .p 4 0-00-00 0 -000-0- 0 -0-000- 0 -0-0-00 0 .end Complement {x1,x3,x4,x6,x7} {x2,x3,x4,x6} …ten sam wynik co poprzednio {x2,x4,x5,x6} {x2,x4,x6,x7} 22
Obliczanie uzupełnienia Dla koniunkcyjnej postaci normalnej obliczonej w przykładzie reprezentację funkcji F zapisaną w postaci zbioru kostek wpisujemy do Tablicy Karnaugha x5x7 x1x2x3 00 01 11 10 000 001 1 011 010 110 111 101 100 (x1 + x2) (x2 + x3) (x2 + x7) (x3 + x5 + x7) x1x2x3x5x7 11--- -11-- -1--1 --111 {x1,x2} {x2,x3} {x2,x7} {x3,x5,x7} 23
Obliczanie uzupełnienia Uzupełnienie funkcji (Complement) obliczamy bezpośrednio z tablicy Karnaugha {x2,x3} x5x7 x1x2x3 00 01 11 10 000 001 1 011 010 110 111 101 100 {x2,x5} x x {x2,x7} {x1,x3,x7} x x Po dodaniu zmiennych niezbędnych mamy ten sam wynik jak poprzednio 24
Metoda uzupełniania Sprytna procedura uzupełniania polega na iteracyjnym rozkładzie zbioru kostek macierzy M na kofaktory. Kofaktory te są obliczane tak długo, aż odpowiadające im zbiory kostek staną się „łatwe” do obliczenia ich uzupełnienia. Proces kończy „scalanie” wyników cząstkowych. Matrix M Cofactor …. Cofactor 1 Cofactor 0 Complement 25
Metoda uzupełniania… Kilka tysięcy razy! Cytowania … …. Matrix M cofactor …. cofactor 1 cofactor 0 complement Kilka tysięcy razy! Borowik G., Łuba T., Fast Algorithm of Attribute Reduction Based on the Complementation of Boolean Function, Ch. 2, pp. 25-41, Springer International Publishing, 2014, Cytowania … Guilong Liu et al.: Attribute reduction approaches for general relation decision systems, pp. 81-87, Pattern Recognition Letters, Vol. 65, Nov. 2015. „Note that we use fast algorithm based on the complementation of Boolean function, proposed by Borowik and Luba (Borowik and Luba, 2014), in calculation process of transforming CNF into DNF and finding a minimum set implicants”. 26
Redukcja argumentów (atrybutów) Najnowsza realizacja… Fast algorithm for feature extraction : Borowik, G., Jankowski, J., Kowalski, K. Proceedings of SPIE - The International Society for Optical Engineering, 2015 Oblicza 1 redukt; potrafi obliczyć redukt dla bazy 2 mln. obiektów w ciągu 1000 s. 27
Niestety… KOD 2 z 16 1100000000000000 0000000 1010000000000000 0000001 1001000000000000 0000010 1000100000000000 0000011 1000010000000000 0000100 1000001000000000 0000101 1000000100000000 0000110 1000000010000000 0000111 1000000001000000 0001000 1000000000100000 0001001 1000000000010000 0001010 1000000000001000 0001011 1000000000000100 0001100 1000000000000010 0001101 1000000000000001 0001110 0110000000000000 0001111 0101000000000000 0010000 0100100000000000 0010001 0100010000000000 0010010 0100001000000000 0010011 0100000100000000 0010100 0100000010000000 0010101 ................................................ 0000000000100100 1101011 0000000000100010 1101100 0000000000100001 1101101 0000000000011000 1101110 0000000000010100 1101111 0000000000010010 1110000 0000000000010001 1110001 0000000000001100 1110010 0000000000001010 1110011 0000000000001001 1110100 0000000000000110 1110101 0000000000000101 1110110 0000000000000011 1110111 …procedura redukcji argumentów nie zawsze jest skuteczna w redukowaniu wejść do pamięci ROM realizujących funkcje generowania indeksów Minimalna liczba argumentów dla k z n wynosi n - 1 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 28
(Linear Decomposition) Dekompozycja liniowa (Linear Decomposition) y1 = xi1 yi1 MUX n yp = xip yip . Linear Function General X n p q Łączenie argumentów w pary Zmniejszanie liczby wejść… T. Sasao, Index Generation Functions: Logic Synthesis for Pattern Matching, EPFL Workshop on Logic Synthesis & Verification, Dec. 2015. 29
Dekompozycja liniowa - ogólnie F = H(G1, G2,…, X) X reprezentuje zmienne nie biorące udziału w realizacji funkcji G Funkcję G nazywać można g-argumentem x0 x1 xn ROM Założenie: W dekompozycji liniowej stosujemy funkcje o zredukowanej liczbie argumentów. 30
Zbiory niezgodności Cpq = {x1, x3, x6,...} F: Dn {0,1}m Cpq = {xi: aibi = 1}, gdzie ai, bi, to składowe wektorów a, b a,b{0,1}n : F(a) ≠ F(b), będą reprezentowane liczbami p,q K = {1,..., | Dn |} x1 x2 x3 x6 xn p 1 output1 q output2 Cpq = {x1, x3, x6,...} Rodzina zbiorów Cpq - RCpq 31
Twierdzenie *) Dekompozycja nierozłączna: Dekompozycja wielokrotna: jest dekompozycją minimalno-argumentowej funkcji F, wtedy i tylko wtedy gdy {xi, xj} RCpq. Dekompozycja nierozłączna: Dekompozycja wielokrotna: zmienne wejściowe współdzielone są pomiędzy dwie lub wiele bramek: {xi xj , xj xk}, g-argumenty są powtarzane dla rozłącznych par zmiennych: {xi xj , xk xl , …}. *)Łuba, T., Rybnik J.: Algorithmic Approach to Discernibility Function with Respect to Attributes and Objects Reduction, Foundations of Computing and Decision Sciences, Vol. 18, No. 3-4, 241–258, 1993. 32
Dekompozycja nierozłączna i wielokrotna Istnienie dekompozycji z funkcją {xi xj , xj xk}, może zostać zweryfikowane przez sprawdzenie czy zbiór zmiennych {xi, xj, xk} zawarty jest w rodzinie RCpq. Istnienie dekompozycji z funkcją {xi xj , xk xl}, może zostać zweryfikowane przez sprawdzenie czy zbiór zmiennych {xi, xj, xk, xl} zawarty jest w rodzinie RCpq. Uzupełnienie RCpq względem rodziny wszystkich podzbiorów o liczności równej liczności analizowanych Cpq : COM(RCpq) 33
Przykład*) 1-OUT-OF-10 FUNCTION F = H(y1, y2, y3, y4, y5, y6) x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 ---------------------------------------- 1: | 1 0 0 0 0 0 0 0 0 0 | 2: | 0 1 0 0 0 0 0 0 0 0 | 3: | 0 0 1 0 0 0 0 0 0 0 | 4: | 0 0 0 1 0 0 0 0 0 0 | 5: | 0 0 0 0 1 0 0 0 0 0 | 6: | 0 0 0 0 0 1 0 0 0 0 | 7: | 0 0 0 0 0 0 1 0 0 0 | 8: | 0 0 0 0 0 0 0 1 0 0 | 9: | 0 0 0 0 0 0 0 0 1 0 | 10:| 0 0 0 0 0 0 0 0 0 1 | y1 y2 y3 y4 y5 y6 -------------------- y1 = y2 = y3 = y4 = y5 = y6 = 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 * T. Sasao, Index Generation Functions: Logic Synthesis for Pattern Matching EPFL Workshop on Logic Synthesis & Verification, Dec. 2015. 34
Przykład… Brak zmiennej x2 Nowe oznaczenia… x1 x3 x4 x5 x6 x7 x8 x9 1-OUT-OF-10 FUNCTION a1 a2 a3 a4 a5 a6 a7 a8 a9 1: | 1 0 0 0 0 0 0 0 0 | 2: | 0 0 0 0 0 0 0 0 0 | 3: | 0 1 0 0 0 0 0 0 0 | 4: | 0 0 1 0 0 0 0 0 0 | 5: | 0 0 0 1 0 0 0 0 0 | 6: | 0 0 0 0 1 0 0 0 0 | 7: | 0 0 0 0 0 1 0 0 0 | 8: | 0 0 0 0 0 0 1 0 0 | 9: | 0 0 0 0 0 0 0 1 0 | 10:| 0 0 0 0 0 0 0 0 1 | Brak zmiennej x2 Nowe oznaczenia… x1 x3 x4 x5 x6 x7 x8 x9 x10 a1 a2 a3 a4 a5 a6 a7 a8 a9 35
Przykład… Cała rodzina niezgodności a1 a2 a1 a3 a1 a4 a1 a5 a1 a6 1-OUT-OF-10 FUNCTION a1 a2 a3 a4 a5 a6 a7 a8 a9 1: | 1 0 0 0 0 0 0 0 0 | 2: | 0 0 0 0 0 0 0 0 0 | 3: | 0 1 0 0 0 0 0 0 0 | 4: | 0 0 1 0 0 0 0 0 0 | 5: | 0 0 0 1 0 0 0 0 0 | 6: | 0 0 0 0 1 0 0 0 0 | 7: | 0 0 0 0 0 1 0 0 0 | 8: | 0 0 0 0 0 0 1 0 0 | 9: | 0 0 0 0 0 0 0 1 0 | 10:| 0 0 0 0 0 0 0 0 1 | 36
wszystkie możliwe zbiory trzy elementowe Przykład… Rodzina niezgodności a1 a2 a1 a3 a1 a4 a1 a5 a1 a6 a1 a7 a1 a8 a1 a9 a2 a3 a2 a4 a2 a5 a2 a6 a2 a7 a2 a8 a2 a9 a3 a4 a3 a5 a3 a6 a3 a7 a3 a8 a3 a9 a4 a5 a4 a6 a4 a7 a4 a8 a4 a9 a5 a6 a5 a7 a5 a8 a5 a9 a6 a7 a6 a8 a6 a9 a7 a8 a7 a9 a8 a9 COM(RCpq) 36 par pusty zbiór par! ale są wszystkie możliwe zbiory trzy elementowe Wszystkie możliwe trójelementowe podzbiory zbioru: a1 a2 a3 a4 a5 a6 a7 a8 a9 37
Przykład… Nie ma żadnej dekompozycji: 1-OUT-OF-10 FUNCTION a1 a2 a3 a4 a5 a6 a7 a8 a9 1: | 1 0 0 0 0 0 0 0 0 | 2: | 0 0 0 0 0 0 0 0 0 | 3: | 0 1 0 0 0 0 0 0 0 | 4: | 0 0 1 0 0 0 0 0 0 | 5: | 0 0 0 1 0 0 0 0 0 | 6: | 0 0 0 0 1 0 0 0 0 | 7: | 0 0 0 0 0 1 0 0 0 | 8: | 0 0 0 0 0 0 1 0 0 | 9: | 0 0 0 0 0 0 0 1 0 | 10:| 0 0 0 0 0 0 0 0 1 | Nie ma żadnej dekompozycji: Nie ma żadnej dekompozycji rozłącznej wielokrotnej Natomiast ma dekompozycję nierozłączną wielokrotną dla wszystkich możliwych trójek argumentów: ai aj ak al am an ap aq ar 38
Konfrontacja z wynikiem Sasao …to również dla takich a1 a4 a5 a2 a6 a8 a3 a7 a9 …co jest zgodne z wynikiem Sasao: …który w jego artykule zapisany jest z inną kolejnością argumentów Sasao nie mógł nie natrafić na taką dekompozycję! 39
Sekwencyjna kompresja argumentów 1-OUT-OF-10 FUNCTION Reducing arguments [x0, x1, x2, x3, x4, x5, x6, x7, x8] .type fr .i 9 .o 4 .p 10 100000000 0001 010000000 0010 001000000 0011 000100000 0100 000010000 0101 000001000 0110 000000100 0111 000000010 1000 000000001 1001 000000000 1010 [x0, x1, x2, x3, x4, x5, x6, x7, x8, x9] .type fr .i 10 .o 4 .p 10 1000000000 0001 0100000000 0010 0010000000 0011 0001000000 0100 0000100000 0101 0000010000 0110 0000001000 0111 0000000100 1000 0000000010 1001 0000000001 1010 Redukcja argumentów 40
Sekwencyjna kompresja argumentów Reducing arguments [x0, x1, x2, x3, x4, x5, x6, x7, x8] [x3, x4, x5, x6, x7, x8, x0 ⊕ x1, x1 ⊕ x2] .type fr .i 9 .o 4 .p 10 100000000 0001 010000000 0010 001000000 0011 000100000 0100 000010000 0101 000001000 0110 000000100 0111 000000010 1000 000000001 1001 000000000 1010 .type fr .i 8 .o 4 .p 10 00000010 0001 00000011 0010 00000001 0011 10000000 0100 01000000 0101 00100000 0110 00010000 0111 00001000 1000 00000100 1001 00000000 1010 Dekompozycja dla trzech pierwszych zmiennych Compressing arguments [0, 1, 2] 41
Sekwencyjna kompresja… Plik wejściowy Wynik kompresji .type fr .i 10 .o 4 .p 10 1000000000 0001 0100000000 0010 0010000000 0011 0001000000 0100 0000100000 0101 0000010000 0110 0000001000 0111 0000000100 1000 0000000010 1001 0000000001 1010 .type fr .i 4 .o 4 .p 10 1000 0001 1010 0010 0010 0011 1100 0100 1111 0101 0011 0110 0100 0111 0101 1000 0001 1001 0000 1010 Obliczona dekompozycja liniowa y1 = x0 ⊕ x1 ⊕ x3 ⊕ x4, y2 = x3 ⊕ x4 ⊕ x6 ⊕ x7, y3 = x1 ⊕ x2 ⊕ x4 ⊕ x5, y4 = x4 ⊕ x5 ⊕ x7 ⊕ x8 Wynik lepszy od wyniku Sasao 42
Skuteczność… "Nasza metoda" - heurystyczne iteracyjne liczenie pokrycia kolumnowego na oryginalnych argumentach i bramkach XOR: 2-out-of16: Nasza metoda: 9 kolumn (Sasao s-min: 11 kolumn) 2-out-of-20: Nasza metoda: 11 kolumn (Sasao s-min: 14 kolumn) 43
Podsumowanie Nowe zadania syntezy logicznej: redukcja argumentów dekompozycja liniowa dekompozycja funkcjonalna są wynikiem nie tylko specyficznej budowy układów FPGA, ale również pojawiających się nowych zastosowań w analizie danych: dystrybucja adresów IP, skanowanie wirusów, wykrywanie niepożądanych danych, konwersja kodów itp. 44