Cílem této práce bylo navázání na mojí bakalářskou práci - Parametrizovaný generátor náhodných booleovských funkcí \cite{Bakal} a upravit stávající generátor opravením několika chyb a přidáním několika funkcí.

Dalším úkolem bylo rozšířit jeho funkčnost na tvorbu konečných automatů. Zde se zaměřit především na možnost tvorby deterministických automatů. Dále pak implementovat metody, aby generovaný automat byl spojitý, aby se v něm nenacházely stavy ze kterých nelze nikam přejít a aby se v automatu neobjevili nedostupné stavy.

V neposlední řadě bylo za úkol vytvořit generátor víceúrovňového logického obvodů formou zapojení jednoduchých kombinačních hradel. Tento úkol byl od počátku zjednodušen volbou, že se v obvodě nebudou nacházet zpětné vazby. Program měl brát v úvahu složitější parametry jako celková testovatelnost obvodu, maximální větvení všech interních spojů a počet úrovní obvodu. Bylo nutné vygenerovat nejdříve náhodný triviální obvod s pevnými parametry a ten posléze zkusit měnit některou optimalizační metodou tak, aby co nejvíce odpovídal zadaným parametrům.

Nakonec bylo důležité tento generátor obvodů otestovat na vliv jeho některých vstupních parametrů a na reálnou testovatelnost obvodu. Především na počet nedetekovatelných poruch, zjištěných nástrojem ATPG. Dále pak na obtížnost resyntézy tvořených obvodů pomocí nástrojů na minimalizaci. K tomuto účelu mi byl poskytnut nástroj SIS \cite{SIS}.

\section{Požadavky a cíle}

Zde uvádím finální požadavky na všechny tři části generátoru, které se v průběhu práce po konzultacích drobně měnily s nově objevenými komplikacemi.

U testování byl kladen důraz na ověření funkčnosti a použitelnosti vytvořeného generátoru, na vyvození správných zavěrů a navrhnutí dalšího pokračování. 

{\bf 1.část --- generátor obvodu ve formátu pravdivostní tabulky (genpla)}
\bitem
\item opravit chyby v již hotovém programu, způsobující jeho pády
\item doplnit o možnost kontroly duplicitních termů
\item zefektivnit práci programu
\eitem
{\bf 2.část --- generátor obvodu ve formátu konečného automatu (genstate)}
\bitem
\item základní parametry obvodu --- počet vstupů, počet výstupů, počet stavů, počet přechodů.
\item možnost generování ekvivalentních stavů
\item možnost generování deterministického i úplného automatu 
\item možnost různé metody na ošetření dostupnosti/spojitosti stavů automatu
\item ukládaní automatu ve formátu KISS
\eitem
{\bf 3.část --- generátor obvodu sítí hradel (gennetwork)}
\bitem
\item zadané neměnné parametry obvodu --- počet vstupů, počet výstupů a počet hradel
\item v obvodech nebudou zpětné vazby
\item obvod bude tvořen základními hradly (AND, NAND, OR, NOR, XOR, XNOR, NOT)
\item hradla budou vícevstupová a jejich maximalní stupeň půjde nastavit
\item libovolný spoj v obvodě nepřesáhne zadaný stupeň větvení
\item obvod se bude generovat s ohledem na testovatelnost a na počet úrovní obvodu
\item výstup obvodu ve formátech BENCH a BLIF
\eitem
{\bf Testování}
\bitem
\item otestovat vygenerované sítě hradel s ohledem na reálnou testovatelnost vypočítanou nástrojem ATPG. 
\item ověřit funkci obvodů jejich resyntézou pomocí nástroje na minimalizaci SIS.
\item zjistit z testů případné závislosti na vstupních parametrech generovaných obvodů.
\eitem