% $Id: bench.tex,v 1.1 2007/01/18 22:20:29 jarda Exp $

\section{Formát BENCH}

Jedná se o víceúrovňový popis kombinačního nebo sekvenčního obvodu - jde
o přímé propojení hradel a klopných obvodů (tzv. netlist).

\subsection{Syntaxe}

{\odstavec

INPUT(\textbf{identifikátor}) - definuje vstupní proměnnou

OUTPUT(\textbf{název\_proměnné}) - definuje vstupní proměnnou

identifikátor = \textit{logický prvek}(identifikátor[, identifikátor ...]) -
kombinační prvek (hradlo) nebo klopný obvod s jedním nebo několika vstupy a
jedním výstupem

Identifikátor může obsahovat jakékoliv znaky kromě znaků ()=\#,
klíčové slovo (INPUT, OUTPUT nebo podporovaný název logického prvku) nesmí být
použito jako identifikátor proměnné. 

}

\subsection{Podporované logické prvky}

\begin{itemize}

\item
BUF nebo BUFF - opakovač

\item
NOT - invertor

\item
AND - logický součin

\item
OR - logický součet

\item
XOR - obvod exclusive OR

\item
XNOR - negace exkluzivního OR

\item
NAND - negace funkce AND

\item
NOR - negace funkce OR

\item
DFF - klopný obvod typu D

\end{itemize}

\subsection{Příklad}

Následující příklad je převzatý z benchmarku s27.bench:

\begin{verbatim}
# 4 inputs
# 1 outputs
# 3 D-type flipflops
# 2 inverters
# 8 gates (1 ANDs + 1 NANDs + 2 ORs + 4 NORs)

INPUT(G0)
INPUT(G1)
INPUT(G2)
INPUT(G3)

OUTPUT(G17)

G5 = DFF(G10)
G6 = DFF(G11)
G7 = DFF(G13)

G14 = NOT(G0)
G17 = NOT(G11)

G8 = AND(G14, G6)

G15 = OR(G12, G8)
G16 = OR(G3, G8)

G9 = NAND(G16, G15)

G10 = NOR(G14, G11)
G11 = NOR(G5, G9)
G12 = NOR(G1, G7)
G13 = NOR(G2, G12)
\end{verbatim}

Formát je popsán v \cite{brg89}.

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