Tato práce se zabývá zkušebními obvody pro testování algoritmů pro logickou
syntézu, nazývanými též benchmarky. Popisuje způsoby, jakými lze zapsat různé
typy zkušebních obvodů a sady zkušebních obvodů, které jsou k dispozici
odborné veřejnosti. Tyto sady vznikly jako výsledek práce institucí z
oblasti výzkumu a vzdělávání a obsahují zkušební obvody v rozličných formátech.
Tyto formáty popisují zkušební obvody na různé úrovni, od popisu chování
v behaviorálních modelech, až po detailní popis struktury obvodu. Některé
formáty jsou lépe čitelné člověkem, jiné hůře, některé jsou snáze
počítačově analyzovatelné a jiné velmi obtížně. Po prozkoumání používaných
formátů a po domluvě se zadavatelem práce jsem dospěl k pětici často používaných formátů,
na jejichž zpracování jsem se zaměřil - jsou to formáty PLA, KISS2, BENCH, 
BLIF a SLIF.

{ \odstavec

Jedním z úkolů, které přede mnou stály, bylo naprogramovat řádkový analyzátor
formátů zkušebních obvodů. Pro vybranou pětici formátů jsem vytvořil program,
který vypisuje základní parametry zkušebních obvodů těchto formátů.

Databáze zkušebních obvodů slouží k jejich katalogizaci, umožňuje vyhledávání
těchto obvodů podle nejrůznějších kritérií, jejich stahování - jednotlivě nebo
agregovaně (všechny nalezené soubory jsou zabalené v jednom archivu). Při
vkládání zkušebního obvodu má uživatel dvě možnosti, jak zadat vlastnosti
obvodu. Přirozenou možností je zadat vlastnosti ručně, ovšem díky vypracovanému
analyzátoru souborů je možné vložit mnohé údaje s pomocí tohoto analyzátoru
automaticky.

Údaje o zkušebních souborech jsou uloženy v relačním databázovém systému
s podporou SQL - konkrétně byl pro implementaci použit databázový systém PostgreSQL,
ale volba podpůrných knihoven a technik zohledňuje možnost nasazení jiného
databázového systému.

Uživatelské rozhraní je tvořeno webovou aplikací napsanou v dynamickém programovacím
jazyce PHP s využitím HTTP serveru Apache. Vývojovou platformou byl operační systém
Linux, cílovou platformou pro pilotní nasazení je operační systém FreeBSD.

Řádkový analyzátor a některé pomocné programy byly naprogramovány v jazyce Python.
Výhodou nasazení tohoto jazyka je vysoká flexibilita, dobře čitelný kód a podpora
mnoha platforem.

Práce obsahuje analýzu řešených problémů, vysvětluje, proč byla zvolena konkrétní
řešení a popisuje implementaci aplikační části z hlediska bezpečnosti a udržovatelnosti
kódu a zabývá se i problematikou testování aplikace.

Kapitola 2 se zabývá analýzou cílů práce, na které budou postaveny další kapitoly.

Kapitola 3 podrobněji probírá funkcionalitu aplikační části bez řešení konkrétní
implementace.

Kapitola 4 stručně pojedná o základních podporovaných formátech zkušebních obvodů,
zjišťuje, jaké informace je možné v daných formátech nalézt, díky čemuž bude
možné lépe rozhodnout o struktuře databáze a povaze uložených dat.

V kapitole 5 se zabývám různými možnostmi řešení aplikační části diplomové práce a volbou
konkrétních řešení. Krátce pojednám i o používaných technologiích a programech pro
lepší uvedení do problematiky samotné implementace.

Provoz každé aplikace je ohrožen bezpečnostními riziky. Bezpečnostní rizika ohrožují
provoz aplikace, ukládaná data i systém, na kterém aplikace běží. O možných bezpečnostních
problémech a jejich řešení pojednává kapitola 6.

V kapitole 7 postoupím k popisu implementace a jejích jednotlivých částí.
Konkrétně se zastavím u problematiky automatické analýzy jednotlivých
benchmarkových formátů a výpisu získaných parametrů, potom vysvětlím strukturu
dat uložených v databázi, implementaci webového rozhraní databáze benchmarků,
dávkové a interaktivní plnění databáze a agregované stahování dat.

Úspěšná implementace zadané funkcionality aplikace je hlavním a na první pohled i jediným cílem 
softwarového projektu. Ve skutečnosti je situace složitější. Projekt je obvykle zapotřebí
udržovat a rozvíjet, což vyžaduje dodržování určitých zásad při vytváření kódu. 
V kapitole 8 se krátce zmíním o některých zásadách psaní udržovatelného kódu a o efektivní
správě zdrojového kódu.

Kapitola 9 se zabývá testováním funkčnosti aplikační části. Důraz je kladen na testování
systémové a akceptační, ale ukážu i praktickou ukázku jednotkového testování specifické
operace a zmíním se i o automatizované kontrole korektnosti kódu bez vazby na znalost
požadované funkce aplikace.

Závěr hodnotí dosažené výsledky a zamýšlím se v něm nad možným pokračováním.

Struktura, rozhraní, chování, parametry zkušebního obvodu apod. jsou uloženy v
souborech několika různých formátů. Tyto formáty mají různé vyjadřovací
možnosti, které se snaží tato práce popsat. Příloha A se bude podrobněji
zabývat těmito formáty, jejich strukturou a možnostmi.

V současné době existuje vícero různých sad benchmarků, které vznikaly v
různých dobách, na jejich vzniku se podílely nejrůznější výzkumné a vzdělávací
instituce, používají různé benchmarkové formáty apod.  Příloha B se
stručně zmíní o významných sadách benchmarků, jejich struktuře, používaných
formátech a dalších charakteristikách.

Instalační a uživatelskou příručku, stejně jako další materiály, jsem umístil na
CD. Jeho obsah je předmětem přílohy C.
}

% vim:enc=iso8859-2:fenc=iso8859-2:syntax=tex:
