Commit cc4bb87d authored by Christian Fibich's avatar Christian Fibich Committed by Stefan Tauner
Browse files

Extended User Guide

parent d35f67c2
\section{Introduction}
%Silence bibtex error \cite{adams2007hitchhiker}
\ No newline at end of file
%Silence bibtex error \cite{adams2007hitchhiker}
\begin{figure}[ht]
\centering
\includegraphics[width=0.85\linewidth]{img/Overview.pdf}
\caption{FIJI Overview}
\end{figure}
\ No newline at end of file
\section{Installation \& Setup}
\ No newline at end of file
\section{Installation \& Setup}
The prerequesites for running the \textit{FIJI} fault injection toolflow are
listed in Table~\ref{tab:prerequesites} alongside the version FIJI was
tested with. This does not include the Perl modules which need to be installed,
which can be found in Table~\ref{tab:perlmod}.
\begin{table}[h]
\caption{Software prerequesites for FIJI}
\label{tab:prerequesites}
\begin{center}
\begin{tabular}{llll}
\hline
Category & OS & Name & Version \\
\hline
Perl Interpreter & Unix/Linux & Perl & v5.22.1 \\
& Windows & Strawberry Perl & v5.16.3 \\
FPGA Synthesis Tool & Unix/Linux, Windows & Synopsys Synplify & I-2013.09-SP1 \\
FPGA Implementation Tool & Unix/Linux, Windows & Altera Quartus II & 13.0 \\
& Unix/Linux, Windows & Xilinx ISE & \todo{Test} \\
\hline
\end{tabular}
\end{center}
\end{table}
\begin{table}[h]
\caption{Perl Modules required by FIJI}
\label{tab:perlmod}
\begin{center}
\begin{tabular}{llll}
\hline
Module & Description & Version & FIJI Tool \\
\hline
Clone & Deep object copy & tbd & All tools \\
Config::Simple & INI-style configuration file parsing & tbd & All tools \\
enum & Enumerated types & tbd & All tools \\
Device::SerialPort & Serial communication mapping for Unix/Linux & tbd & \textit{FIJI Download + GUI} \\
Digest::CRC & CRC calculation & tbd & \textit{FIJI Instrument}, \textit{FIJI Download + GUI} \\
Doxygen::Filter::Perl & Doxygen documentation output & tbd & All tools \\
Log::Log4Perl & Easy logging & tbd & All tools \\
Log::Dispatch::Output & Base class for custom log appenders & tbd & \textit{FIJI Download GUI} \\
Params::Validate & ??? & tbd & ??? \\
Scalar::Util & ??? & tbd & ??? \\
Switch & Switch statement support & tbd & ??? \\
Test::Deep & Deep hash comparison & tbd & \textit{FIJI Setup}, \textit{FIJI Download GUI} \\
Tk & Graphical User Interface library & tbd & \textit{FIJI Setup}, \textit{FIJI Download GUI} \\
Tk::StatusBar & StatusBar widget for Tk & tbd & \textit{FIJI Setup}, \textit{FIJI Download GUI} \\
Verilog::Language & Verilog parser/generator & 99 & \textit{FIJI Setup}, \textit{FIJI Instrument} \\
\hline
\end{tabular}
\end{center}
\end{table}
......@@ -53,6 +53,115 @@ The script also accepts the following \underline{optional} command-line argument
Displays usage information on the terminal and exits
\end{itemize}
In \textit{Random} mode, the following options can be used to overrule
the values defined in the supplied \textit{FIJI Tests} file:
\begin{itemize}
\item \texttt{-a, {-}{-}timer-1-min=<duration>}
Minimum value for duration $t_1$
\item \texttt{-b, {-}{-}timer-2-min=<duration>}
Minimum value for duration $t_2$
\item \texttt{-A, {-}{-}timer-1-max=<duration>}
Maximum value for duration $t_1$
\item \texttt{-B, {-}{-}timer-2-max=<duration>}
Maximum value for duration $t_2$
\item \texttt{-$\emptyset$, {-}{-}prob-s0=<probability>}
Absolute probability of a stuck-at-0 fault on any net
\item \texttt{-1, {-}{-}prob-s1=<probability>}
Absolute probability of a stuck-at-1 fault on any net
\item \texttt{-d, {-}{-}prob-dly=<probability>}
Absolute probability of a delay fault on any net
\item \texttt{-f, {-}{-}prob-seu=<probability>}
Absolute probability of an SEU fault on any net
\item \texttt{-o, {-}{-}prob-so=<probability>}
Absolute probability of a stuck-open fault on any net
\end{itemize}
The entered durations must fit into the timer width specified in the
\textit{FIJI Settings} file, with the maximum duration being greater
than or equal to the minimum duration.
The sum of the fault probabilities must not exceed $1.0$. The difference
between this sum and $1.0$ is assumed to be the probability of fault-free
operation.
When choosing \texttt{manual} as mode, \textit{FIJI Download} prompts
the user for fault configurations before they are downloaded as shown
in Snippet~\ref{lst:manualprompt}.
\begin{minipage}{\linewidth}
\begin{lstlisting}[frame=single]
Enter configuration for FIU #0 in t2 (default: 0x7): 0
Enter configuration for FIU #0 after t2 (default: 0x7): 1
Enter configuration for FIU #1 in t2 (default: 0x7): 2
Enter configuration for FIU #1 after t2 (default: 0x7): 3
Enter configuration for FIU #2 in t2 (default: 0x7): 4
Enter configuration for FIU #2 after t2 (default: 0x7): 5
Enter duration t1 (default: 0x0): 100
Enter duration t2 (default: 0x0): 1000
Enable trigger (default: 0)? 1
Use external/not internal trigger (default: 0)? 0
Enable reset (default: 0)? 0
\end{lstlisting}
\label{lst:manualprompt}
\end{minipage}
\begin{table}[h]
\caption{Mapping between fault indices and models}
\label{tab:faultmap}
\begin{center}
\begin{tabular}{ll}
\hline
Index & Fault Model \\
\hline
0 & No fault \\
1 & Stuck at 0 \\
2 & Stuck at 1 \\
3 & Delay \\
4 & Single Event Upset \\
5 & Stuck open \\
6 & Reserved - No fault \\
7 & Reserved - No fault \\
\hline
\end{tabular}
\end{center}
\end{table}
The mapping between fault indices and fault models is shown in Table~\ref{tab:faultmap}.
After the fault configurations for the different FIUs in both phases,
the time values for both duration have to be entered in clock cycles.
Following the time durations, the trigger mode must be selected, where
\texttt{1} maps to enabling the trigger facility. If the user enters a \texttt{1},
\textit{FIJI Download} asks if the internal trigger (\texttt{0}) or the
external trigger (\texttt{1}) shall be used.
Finally, the user has to enter if the fault injection logic shall apply
a reset to the DUT before applying this fault injection pattern.
Informations other than the fault patterns (e.g., the serial port,
baud rate, or \texttt{HOLD\_ON\_FAULT\_DETECT} information) are read from
the \textit{FIJI Settings} and \textit{FIJI Tests} files.
\subsection{GUI Tool}
......@@ -78,13 +187,76 @@ following \underline{optional} command-line arguments:
Displays usage information on the terminal and exits
\end{itemize}
The main elements in the user interface of the \textit{FIJI Download GUI} tool
can be seen in Figure~\ref{fig:download_gui}:
\begin{enumerate}[(1)]
\item The \textit{Control Area} is used for loading and saving \textit{FIJI Tests} files
\item The \textit{Tab Area} switches between test modes
\item In the \textit{Main Area}, the tests in the selected mode
can be configured.
\item The \textit{Logging Window} shows the progress running fault injection
operations. Warnings and error messages are color-coded in orange
and red.
\item Small green or red panels show the most recent status reported
back by the FIJI logic in the \textit{FIC Status Panel}:
\begin{itemize}
\item \textit{U}: UART framing error
\item \textit{I}: Design ID mismatch
\item \textit{C}: CRC error
\item \textit{1}: Fault detect signal 1 active
\item \textit{2}: Fault detect signal 2 active
\end{itemize}
\item The message type and the running time of the current test
are displayed in the \textit{Injection Status Panel}:
\item The buttons in the \textit{Button Panel} allow to control the test execution:
\begin{itemize}
\item \textit{Update}: When the FIC is ready (after $t_2$), request
an update of the fault detect signals
\item \textit{Start}: Run the currently configured test
\item \textit{Stop}: When an unbounded test is executed (repeating sequence
or random): Stop the current execution
\item \textit{Help}: Open this document in a PDF viewer
\end{itemize}
\end{enumerate}
\begin{figure}[ht]
\centering
\input{img/fiji_download_sequence_screenshot_marked.tex}
\caption{FIJI Download Tool: Sequence Mode}
\label{fig:download_gui}
\end{figure}
BlablaBlabla
\subsubsection{Sequence}
In \textit{Sequence Mode}, \textit{FIJI Download GUI} provides the
possibiltiy to edit a sequence of fault patterns to be downloaded one
after another. In the \textit{Main Area} of the sequence mode tab
an overview of the currently configured sequence of test patterns
is displayed. Only the durations are displayed, the configured faults
are omitted in this view.
Test patterns can be configured by clicking the \textit{Edit} button
next to the \textit{Duration~T2} column. This opens a dialog box where
the timer values can be changed, the individual FIUs configured, and
reset and trigger options enabled.
Test patterns can be appended at the end by \textit{Append Test} and
deleted individually by clicking the respective \textit{Delete Test} button.
Appended tests are always ``empty'', i.e., their durations are set to
0 cycles each, the FIUs are configured fault-free (``NONE''), and the trigger and
reset options are disabled.
Additionally, parameters for the test execution itself can be set: If the
sequence is to be repeated once completed, and after which pattern the repetion
should start again (this is particularly useful if the first pattern is
used to reset the DUT), and under which circumstances to halt test execution.
In addition to these configurable halting conditions, test execution is
always stopped when an ID or CRC error is encountered.
Finally, a Perl script can be selected to be executed upon test completion.
This script could then, for example, be used to send an email that the
test is done or failed.
\subsubsection{Manual}
\begin{figure}[ht]
\centering
......@@ -92,7 +264,7 @@ BlablaBlabla
\caption{FIJI Download Tool: Manual Mode}
\end{figure}
BlablaBlablaBlabla
\subsubsection{Random}
\begin{figure}[ht]
\centering
......
......@@ -4,9 +4,9 @@
\node[anchor=south west, minimum width=6.15cm, minimum height=0.8cm, rectangle,red,thick,rounded corners,draw] (stat) at (4.45,0.1) {} ; % status
\node[anchor=south west, minimum width=4.7cm, minimum height=0.8cm, rectangle,red,thick,rounded corners,draw] (btn) at (10.6,0.1) {} ; % Buttons
\node[anchor=south west, minimum width=15.3cm, minimum height=3cm, rectangle,red,thick,rounded corners,draw] (log) at (0,0.9) {} ; % Logging
\node[anchor=south west, minimum width=15.3cm, minimum height=7cm, rectangle,red,thick,rounded corners,draw] (main) at (0,3.9) {} ; % Main
\node[anchor=south west, minimum width=15.3cm, minimum height=0.7cm, rectangle,red,thick,rounded corners,draw] (tabs) at (0,10.9) {} ; % Tabs
\node[anchor=south west, minimum width=15.3cm, minimum height=2.3cm, rectangle,red,thick,rounded corners,draw] (ctrl) at (0,11.6) {} ; % Control
\node[anchor=south west, minimum width=15.3cm, minimum height=8.1cm, rectangle,red,thick,rounded corners,draw] (main) at (0,3.9) {} ; % Main
\node[anchor=south west, minimum width=15.3cm, minimum height=0.7cm, rectangle,red,thick,rounded corners,draw] (tabs) at (0,12.0) {} ; % Tabs
\node[anchor=south west, minimum width=15.3cm, minimum height=2.3cm, rectangle,red,thick,rounded corners,draw] (ctrl) at (0,12.7) {} ; % Control
% \draw[red,thick,rounded corners] (0,0.9) rectangle (15.3,5.7); % Main Area
% \draw[red,thick,rounded corners] (0,5.7) rectangle (15.3,6.3); % Tab Area
% \draw[red,thick,rounded corners] (0,6.3) rectangle (15.3,8.4); % Control Area
......@@ -14,7 +14,7 @@
\node[below=0.2cm of ctrl.north,inner sep=0.2mm,circle,red,draw] {\footnotesize 1};
\node[left=0.3cm of tabs.east,inner sep=0.2mm,circle,red,draw] {\footnotesize 2};
\node[below left=0.5cm of main.north east,inner sep=0.2mm,circle,red,draw] {\footnotesize 3};
\node[below left=0.5cm of log.north east,inner sep=0.2mm,circle,red,draw] {\footnotesize 4};
\node[below left=0.8cm of log.north east,inner sep=0.2mm,circle,red,draw] {\footnotesize 4};
\node[below=0.2cm of err.south,inner sep=0.2mm,circle,red,draw] {\footnotesize 5};
\node[below=0.2cm of stat.south,inner sep=0.2mm,circle,red,draw] {\footnotesize 6};
\node[below=0.2cm of btn.south,inner sep=0.2mm,circle,red,draw] {\footnotesize 7};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment