\chapter{Závěr}
Převod ATPG nástroje, programu Atalanta-M je hotov. Projdu jednotlivé cíle bakalářské práce a zhodnotím co z nich bylo splněno a co ne.
\section{Převod do jazyka C++ a objektový model}
Převod do jazyka C++ a vytvoření objektového modelu bylo již z velké části vytvořeno studentem Zlatuškou. Já jsem implementoval chybějící metody, které byly potřeba pro správnou funkci programu. Navíc jsem během ladění programu přišel na spoustu chyb, které jsem musel opravit, aby program fungoval správně. To mi zabralo spoustu času stráveného s otevřeným debugerem a zkoumáním kódu co vlastně dělá a co by dělat měl. Musím říci, že ladění algoritmu FAN bylo velmi náročné, protože je zde jeden veliký switch (programový kód pro větvení programu), který je navíc rozdělen do několika metod. Nicméně tento převod je hotový a finální verze je vidět na diagramu UML. Tento cíl byl tedy splněn a nemám k němu žádné další poznámky.
\section{Rozšíření pro rozsáhlejší obvody}
Rozšíření pro rozsáhlejší obvody spočívalo ve vyhledání "`úzkých"' míst, které omezovala spuštění programu Atalanta-M. Tyto místa byla identifikována a implementován příslušných programový kód, který by tyto omezení eliminoval. Bohužel při testování jsem narazil na problémy. Problémy spočívaly v tom, že v programu byla vyhozena vyjímka, která značila nepřípustný zápis do paměti. Najití příčiny problému nebylo možné najít v rozumném časovém horizontu, protože větší obvody jsou zpracovávány neoptimalizovaným programem až \textbf{40 minut} než dojde k dané chybě. Spuštění neoptimalizovaného programového kódu je nutné kvůli debugeru, aby bylo možné ladit programový kód. Pokud se program přeloží s optimalizacemi a spustí se debuger, tak je možné krokovat kód, ale pouze v jazyku assembler. Aby byla zachována funkčnost programu tak, byly vráceny konstanty omezující funkčnost, ale dynamická pole zůstala. Z toho vyplývá, že program je připraven na odstranění těchto limit, ale tyto limity odstraněny nebyly. Tento cíl nebyl úplně splněn a bude třeba strávit další čas na odladění tohoto problému.
\section{Vytvoření rozhraní pro volání jednotlivých funkcí}
Bylo vytvořeno rozhraní pro volání jednotlivých funkcí. Metody, které by měly být přístupné jsou definovány jako public. Ostatní metody jsou definovány buď jako protected nebo private a vně knihovny nejsou proto použitelné.
\section{Vytvoření dynamicky linkované knihovny}
Programový kód byl upraven tak, aby bylo možné ze zdrojových kódů zkompilovat dynamickou knihovnu, která bude využitelná i v jiných aplikacích. Abych umožnil plné využití programových funkcí nástroje ATPG a simulátoru, bylo nutné upravit rozhraní mezi knihovnou a ostatními aplikacemi. Byly vytvořeny potřebné metody pro nastavení parametrů. Tyto metody ve výsledné knihovně nejsou definovány jako public, protože byla implementována třída Params, která obsahuje všechny nastavitelné parametry. Byla definována metoda setParams, která parametry nastaví pro vlastní algoritmy. Třída Params obsahuje i ověření platnosti nastavovaných parametrů. Pro výměnu většího objemu dat byly definovány datové proudy, které přesun většího počtu dat umožňují a jejich abstrakce umožňuje na vstup nebo výstup připojit jak diskový soubor, tak i nějaké jiné zařízení nebo programovou aplikaci, bez nutnosti změny zdrojového programu. Myslím si, že tento cíl byl splněn. V adresáři doc je navíc html nápověda, která obsahuje popis rozhraní knihovny.
\section{Ověření funkčnosti}
Ověření proběhlo pomocí testů na reálných obvodech, kde byly porovnávány vygenerované soubory. Blíže jsou výsledky popsány v kapitole \ref{sec:Testovani}. Vygenerovné soubory byly shodné. Tím došlo k ověření funkčnosti nově vygenerovaného programu.
\section{Srovnání rychlosti}
Nakonec bylo provedeno srovnání rychlosti. Nově vytvořený program je o něco málo pomalejší, ale pouze za předpokladu, že jsou při kompilaci nastaveny optimalizace generovaného kódu.
\section{Zhodnocení}
Všechny cíle kromě jednoho byly splněny. Program bude třeba ještě upravit, aby se odstranily limity pro malé obvody. Variabilita programu však velice stoupla, protože byl převeden na dynamickou knihovnu. Po odladění knihovny pro velké soubory je možné pokračovat v integraci této knihovny do ostatních aplikací typu CAD nebo CAM, aby se docílilo automatizace a tím i zrychlení výroby.
