Metody projektowania i algorytmy syntezy logicznej

Moje prace w tej dziedzinie obejmują opracowywanie algorytmów umożliwiających efektywne projektowanie systemów cyfrowych (i nie tylko). Zagadnienia, którymi się zajmuję to m.in.:

  • syntezy układów kombinacyjnych dla struktur programowalny FPGA
  • syntezy automatów FSM dla struktur programowalny FPGA,
  • syntezy filtrów FIR w strukturach FPGA,
  • realizacji układów rewersyjnych,
  • realizacji sieci neuronowych.

Do tych celów wykorzystuje metody oparte na koncepcji dekompozycji (funkcjonalnej, arytmetycznej).

Dekompozycja jest główną metodą analizy i projektowania złożonych systemów. Jest ona fundamentalna dla wielu dziedzin nowoczesnej techniki i nauki  Nowoczesna mikroelektronika umożliwia projektowanie złożonych układów cyfrowych i systemów cyfrowych względnie niskim kosztem oraz dostarcza dużą różnorodność bloków logicznych do ich konstrukcji. Biblioteki elementów zawierają różnorodne bramki, wiele złożonych bramek może być wygenerowane w projektach w technologii (semi-)custom CMOS, zaś rodzina układów programowalnych zawiera różnorodne układy (C)PLD i FPGA. Jednakże możliwości dostarczane przez nowoczesną mikroelektronikę nie mogą być w pełni wykorzystane z powodu słabości tradycyjnych metod projektowania.

Dekompozycja funkcjonalna polega na podziale złożonego systemu na sieć małych i względnie niezależnych , współpracujących podsystemów, w taki sposób aby funkcje podstawowego systemu zostały zachowane. Uzasadnieniem zastosowania dekompozycji funkcjonalnej w analizie i projektowaniu jest zredukowanie złożoności problemu i znalezieniu spójnych podsystemów: system jest dekomponowany na zbiór mniejszych podsystemów, tak aby każdy z nich był łatwiejszy w analizie, zrozumieniu i syntezie logicznej. Pomimo tego, że wielopoziomowa dekompozycja funkcjonalna daje doskonałe rezultaty w syntezie logicznej układów cyfrowych, jej praktyczna użyteczność dla bardzo złożonych systemów jest ograniczona przez brak efektywnych metody konstruowania podsystemów. Biorąc pod uwagę heterogeniczną budowę nowoczesnych struktur programowalnych znalezienie odpowiednich podsytemów staje się problemem o ogromnej złożoności obliczeniowej. Metoda systematyczna poszukiwania dekompozycji oparta na sprawdzaniu wszystkich możliwych rozwiązań jest nieefektywna dla przypadku bardzo złożonych systemów, co może zdyskredytować dekompozycję funkcjonalną jako metodę analizy i syntezy takich systemów. Niezbędne  staje się stosowanie metod heurystycznych pozwalających na przeprowadzenie procesu syntezy logicznej układu cyfrowego w rozsądnym czasie.