Commit 8ffd8b6c authored by Stefan Tauner's avatar Stefan Tauner
Browse files

user manual: refine/add content and change FIJI Download to EE

 - add detailed installation instructions
 - refine appendix
 - various smaller refinements and style changes
parent 7fb3ae29
\acro{DUT}{Design Under Test}
\acro{FIC}{Fault Injection Controller}
\acro{FIJIEE}{\ac{FIJI} Execution Engine}
\acro{FIJI}{Fault InJection Instrumenter}
\acro{FIU}{Fault Injection Unit}
\acro{LFSR}{Linear Feedback Shift Register}
\acro{LUT}{Look-up Table}
\acro{VM}{Verilog Mapping}
\acro{VQM}{Verilog Quartus Mapping}
......@@ -4,7 +4,7 @@ The \ac{FIJI} suite provides a tool flow for
performing fault injection tests on chip designs in an FPGA-based environment.
In contrast to fault injection tests by modification of the RTL source,
\ac{FIJI} targets the already synthesized design at the FPGA primitive level (e.g.,
LUTs, Flip-Flops, and the nets connecting them). Compared to fault injection
\acp{LUT}, Flip-Flops, and the nets connecting them). Compared to fault injection
carried out with the help of partial reconfiguration, \ac{FIJI} is relatively
technology-independent as no knowledge about the bitstream format and
the mapping to configuration frames within the FPGA device is required.
......@@ -25,11 +25,11 @@ Instrumentation is done by the \textit{\ac{FIJI} Instrument} tool. This tool
modifies the original netlist, and generates wrapper and configuration
packages in VHDL.
The user is then required to perform synthesis and place~\&~route of the
The user is then required to perform synthesis and place\,\&\,route of the
modified design and download the generated bitstream to the target hardware.
Test execution is facilitated by the \textit{\ac{FIJI} Download} and
\textit{\ac{FIJI} Download GUI} tools. These tools communicate with the \ac{FIC}
Test execution is facilitated by the \textit{\acf{FIJIEE}} either via command line or its GUI.
These tools communicate with the \ac{FIC}
over a standard (TTL-)serial interface, and instruct the fault injection
logic which tests to perform. Both of these tools support the execution of
manually specified tests, execution of test sequences, and randomly generated
......@@ -42,9 +42,7 @@ test sequences.
\label{fig:fijiflow}
\end{figure}
Figure \ref{fig:fijioverview} provides an overview of the components
present in the host (PC) and the target hardware to facilitate fault
injection tests.
Figure \ref{fig:fijioverview} provides an overview of the modules representing the system to facilitate fault injection tests including the target hardware as well as a controlling host (PC).
\begin{figure}[ht]
\centering
......@@ -53,8 +51,7 @@ injection tests.
\label{fig:fijioverview}
\end{figure}
All \ac{FIJI} tools are written in Perl.
\begin{minipage}{\textwidth}
The following data is used as an input to \ac{FIJI}:
\begin{itemize}
\item The netlist to be subjected to fault injection.
......@@ -66,3 +63,6 @@ The following data is used as an input to \ac{FIJI}:
\item The desired fault injection configuration (which faults on which nets)
\item The desired capabilities of the Fault Injection Controller (e.g., communication data rate, timer sizes)
\end{itemize}
\end{minipage}
All \ac{FIJI} tools are written in Perl.
......@@ -2,9 +2,9 @@
\subsection{Prerequisites}
The prerequisites for running the \textit{\ac{FIJI}} fault injection toolflow are
listed in Table~\ref{tab:prerequisites} alongside the version \ac{FIJI} was
tested with. This does not include the Perl modules which need to be installed,
The prerequisites for running the \textit{\ac{FIJI}} fault injection tool flow are
listed in Table~\ref{tab:prerequisites} alongside the version of the respective software \ac{FIJI} was
initially tested with. This does not include the Perl modules that need to be installed,
which can be found in Table~\ref{tab:perlmod}.
\begin{table}[ht]
......@@ -16,7 +16,7 @@ which can be found in Table~\ref{tab:perlmod}.
Category & OS & Name & Version \\
\midrule
Perl Interpreter & Unix/Linux & Perl & v5.22.1 \\
& Windows & Strawberry Perl & v5.16.3 \\
& Windows & ActivePerl & 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 Vivado & \todo{Test} \\
......@@ -35,21 +35,111 @@ which can be found in Table~\ref{tab:perlmod}.
Clone & Deep object copy & tbd & All tools \\
Config::Simple & INI-style configuration files & tbd & All tools \\
enum & Enumerated types & tbd & All tools \\
Device::SerialPort & Serial port name mapping & tbd & \textit{Download (+GUI)} \\
Digest::CRC & CRC calculation & tbd & \textit{Instrument}, \textit{Download (+GUI)} \\
Device::SerialPort & Serial port name mapping & tbd & \textit{\acs{FIJIEE}} \\
Digest::CRC & CRC calculation & tbd & \textit{Instrument}, \textit{\acs{FIJIEE}} \\
Doxygen::Filter::Perl & Doxygen documentation & tbd & All tools \\
Log::Log4Perl & Logging & tbd & All tools \\
Log::Dispatch::Output & Base for custom log appenders & tbd & \textit{Download GUI} \\
Params::Validate & Validation of parameters & tbd & \textit{Download GUI} \\
Log::Dispatch::Output & Base for custom log appenders & tbd & \textit{\acs{FIJIEE} GUI} \\
Params::Validate & Validation of parameters & tbd & \textit{\acs{FIJIEE} GUI} \\
Scalar::Util & Mainly for \texttt{blessed()} & tbd & All tools \\
Test::Deep & Deep hash comparison & tbd & \textit{Setup}, \textit{Download GUI} \\
Tk & GUI library & tbd & \textit{Setup}, \textit{Download GUI} \\
Tk::StatusBar & StatusBar widget for Tk & tbd & \textit{Setup}, \textit{Download GUI} \\
Test::Deep & Deep hash comparison & tbd & \textit{Setup}, \textit{\acs{FIJIEE} GUI} \\
Tk & GUI library & tbd & \textit{Setup}, \textit{\acs{FIJIEE} GUI} \\
Tk::StatusBar & StatusBar widget for Tk & tbd & \textit{Setup}, \textit{\acs{FIJIEE} GUI} \\
Verilog::Language & Verilog parser/generator & custom & \textit{Setup}, \textit{Instrument} \\
\bottomrule
\end{tabular}
\end{table}
\subsubsection{Linux}
\label{sec:verilog-perl-install}
Linux distributions often have Perl interpreters installed by default and we recommend to use the one shipped with the distribution.
The availability of Perl packages varies greatly among distributions but if they are available in the distribution's repository the probably should work fine.
The only exception is Verilog-Perl that was modified quite significantly during the project and is unlikely to include our changes already.
Currently one has to compile Verilog-Perl from source because our modifications have not been merged upstream yet.
You will need the typical build utilities like \texttt{g++}, \texttt{bison}, \texttt{flex} and \texttt{make} for this.
Also, you need to acquire the respective source code from our Github repository at \url{https://github.com/uastw-embsys/Verilog-Perl/archive/pin-selects.zip}.
To build and install it, simply extract the archive, open a shell at the respective location and execute the commands in \Cref{lst:verilog-perl}.
\begin{lstlisting}[caption=Verilog-Perl installation,style=shell,label=lst:verilog-perl]
echo "foo"
perl Makefile.PL
# This generates a Makefile suitable for your OS
make
# Compiles Verilog-Perl and requires various build utilities as mentioned above
sudo make install
# Installs Verilog-Perl into a system-wide directory (usually /usr/local/...)
\end{lstlisting}
The remaining Perl packages should be available from the distributor in a suitable version.
However, \ac{FIJI} also comes with a script to install all required Perl packages from CPAN as well.
It is contained in \texttt{bin/install\_prerequisites.sh}.
\subsubsection{Windows}
On Windows there are basically three ways to use \ac{FIJI}:
\begin{enumerate}
\item via Cygwin
\item via a native Perl interpreter (e.g., \textit{Strawberry Perl})
\item via a virtual machine (e.g., \textit{VirtualBox})
\end{enumerate}
Due to the limitations of the Perl environment in Windows we recommend to use FIJI on Windows for evaluation purposes only.
While the other two ways are theoretically possible this guide does only show how to install \ac{FIJI} in Cygwin.
For Cygwin the installation works similar to that of a native Linux distribution.
Additionally to the given tools you will also need a working X server to display any FIJI GUIs.
If you have downloaded the Cygwin setup executable (for 64-bit Windows) to the current directory the following command should install all necessary packages:
% hint: this was found with the help of cygcheck -c
\begin{lstlisting}
setup-x86_64.exe -q -P gcc-g++,make,flex,bison,pkg-config,xorg-server,perl,perl-Carp,perl-Error,perl-Scalar-List-Utils,perl-Log-Log4perl,perl-Tk,perl-Clone,perl-Params-Validate,perl-Scalar-List-Utils,perl-Test-Deep
\end{lstlisting}
After that the following Perl packages remain to be installed from CPAN:
\begin{itemize}
\item enum
\item Log::Dispatch::Output
\item Config::Simple
\item Digest::CRC
\item Doxygen::Filter::Perl
\item Tk::StatusBar
\end{itemize}
That can be handled with the following command within a Cygwin shell.
\begin{lstlisting}
perl -MCPAN -e "CPAN::Shell->notest('install', 'enum', 'Log::Dispatch::Output', 'Config::Simple', 'Digest::CRC', 'Doxygen::Filter::Perl', 'Tk::StatusBar')"
\end{lstlisting}
Finally, you need also to install Verilog-Perl as shown in \Cref{sec:verilog-perl-install}.
When everything is set up you should be able to launch any FIJI script from a Cygwin shell.
The GUI applications (e.g., \textit{FIJI Setup}) require a running X server before launch.
To that end you can start one in the background with
\begin{lstlisting}
run -p /usr/X11R6/bin XWin -multiwindow -clipboard -silent-dup-error &
\end{lstlisting}
Also, make sure that you have the \texttt{DISPLAY} environment variable set correctly (e.g., \lstinline{DISPLAY=:0.0}).
\paragraph{Strawberry Perl \& ActivePerl}
The major obstacle to install FIJI for a native Perl interpreter is the building of Verilog-Perl and other packages not included by the respective interpreter package distribution.
Recent versions of ActivePerl do not come with \texttt{dmake} without an extra license at all, breaking many packages.
Strawberry Perl
\subsection{Repository Contents}
Since \ac{FIJI} is written in Perl there is no need (and no proposed way) to install it onto a system.
Simply checking out the source code repository and loading the respective scripts in a Perl interpreter should be enough to us it.
To help you navigate within the repository the directory structure is shown in Figure~\ref{fig:fijidir} and explained below.
All source code to be executed on a host PC including customized Perl libraries resides in \texttt{bin}.
Documentation including a demo project, the technical reference manual and this very document can be found in \texttt{docs}.
\texttt{hw} contains the VHDL code implementing the \ac{FIC}, \acp{FIU}, UART etc.\ and the respective test benches and simulation scripts.
Media files like logos and icons are found in \texttt{media}.
\begin{figure}[ht]
\centering
\input{img/fiji_dirs}
......
......@@ -9,7 +9,7 @@ net and driver selection by displaying suggestions parsed from the
netlist.
Although \textit{\ac{FIJI} Setup} is a graphical tool, it accepts the
following \underline{optional} command-line arguments:
following \emph{optional} command-line arguments:
\begin{itemize}
\item \texttt{-s, {-}{-}settings-file=<filename>}
......@@ -51,8 +51,10 @@ Using the \textit{Help} menu entry, license information as well as
this help document can be retrieved.
Upon startup, when no configuration file is specified via command-line
options, \textit{\ac{FIJI} Setup} starts with a default configuration with
some values already filled in. This configuration can either be used to
options, \textit{\ac{FIJI} Setup} starts with the \textit{Default Configuration}.
This includes default values for most signals and a single \ac{FIU} (cf.\ \Cref{sec:resource_usage}).
The initial configuration can either be used to
create a customized configuration using the GUI, or saved to a file and
edited manually using a text editor.
......@@ -68,35 +70,35 @@ different \textit{Tabs}. The following topics are available for
configuration:
\begin{itemize}
\item \underline{General Settings}
\item \textbf{General Settings}
Settings for the instrumentation and synthesis process,
as well as settings for the serial communication between \ac{FIJI} and host
and the fault injection timers are subsumed under this tab.
\item \underline{Clock Settings}
\item \textbf{Clock Settings}
The \textit{\ac{FIJI}} fault injection logic is clocked from the
clock of the clock domain in the \ac{DUT} where faults are injected.
The name and frequency of this clock net need to be specified.
\item \underline{LFSR Settings}
\item \textbf{\acs{LFSR} Settings}
\textit{\ac{FIJI}} emulates floating nets caused by \textit{Stuck-open}
faults by forcing pseudo-random binary levels onto the respective
net. These levels are derived from the value of a \textit{Linear
Feedback Shift Register}. In this tab, the width, polynomial,
and starting value of this register can be configured.
See \ref{sec:lfsrtable} for a list of complete LFSR polynomials
See \ref{sec:lfsrtable} for a list of complete \ac{LFSR} polynomials
for different lengths.
\item \underline{External Reset}
\item \textbf{External Reset}
The \ac{FIJI} logic can be configured to be reset from an external
pin. This feature can be turned on and off in this tab.
If an external reset pin is desired, the polarity and name must be entered.
\item \underline{Reset from \acs{DUT} to \ac{FIJI}}
\item \textbf{Reset from \acs{DUT} to \ac{FIJI}}
In addition to the external reset via pin, also any net of the
\ac{DUT} can be used to reset the \ac{FIJI} logic. This feature can be
......@@ -109,7 +111,7 @@ configuration:
\ac{FIJI} are enabled, the reset sources are ORed together and used
as the \ac{FIJI} logic's asynchronous reset signal.
\item \underline{Reset from \ac{FIJI} to \acs{DUT}}
\item \textbf{Reset from \ac{FIJI} to \acs{DUT}}
In contrast to the feature described above, the \ac{FIJI} logic can
also be used as a source for a reset net in the \ac{DUT}.
......@@ -119,7 +121,7 @@ configuration:
the polarity, target net name, and desired reset pulse duration
must be entered.
\item \underline{Trigger Settings}
\item \textbf{Trigger Settings}
In order to support dynamic test execution depending on
events external to \ac{FIJI}, trigger signals can be used to
......@@ -131,14 +133,14 @@ configuration:
For both the internal and the external trigger facilities,
the respective pin or net name and polarity must be specified.
\item \underline{Fault Detection Settings}
\item \textbf{Fault Detection Settings}
The value of up to two nets in the \ac{DUT} can be communicated back to the
host as a means for fault detection. The names and \textit{error}
levels of these nets need to be specified when they are used.
\item \underline{\acp{FIU}}
\item \textbf{\acfp{FIU}}
Here, the actual fault injection capabilities of the instrumented
design are configured. For each net into which faults shall be
......@@ -225,10 +227,10 @@ this \ac{FIU} and can be activated at runtime. In order to save resources and
timing budget, each \ac{FIU} can also be configured to support only a single
fault model. At runtime, this \ac{FIU} can then only be switched between the
selected fault model and fault-free operation.
For the emulation of a floating net, the output of an LFSR is used (see above).
Using the \textit{LFSR mask} element (4), the user needs to select a
bit mask at most as wide as the LFSR. The bits of the
LFSR corresponding to `1`s in the \textit{mask} are ANDed together,
For the emulation of a floating net, the output of an \ac{LFSR} is used (see above).
Using the \textit{\acs{LFSR} mask} element (4), the user needs to select a
bit mask at most as wide as the \ac{LFSR}. The bits of the
\ac{LFSR} corresponding to `1`s in the \textit{mask} are ANDed together,
resulting in the ``floating'' value of the
corresponding net.
......@@ -236,8 +238,8 @@ corresponding net.
At the bottom of the user interface (see Figure~\ref{fig:setup}),
the \textit{Resource Panel} (4) displays the combinational resources
(i.e., LUTs) and the registers needed to implement the current
configuration \textit{in relation to the default configuration}.
(i.e., \acp{LUT}) and the registers needed to implement the current
configuration \emph{in relation to the default configuration}.
Absolute resource numbers for different FPGA families are shown
in Table~\ref{tab:resources}.
Within the \textit{Button Panel} (5), the \text{Next} and \textit{Back}
......
......@@ -5,7 +5,7 @@ netlist and the configuration file edited using the \textit{\ac{FIJI} Setup}
tool.
Its main task is to actually perform the modifications of the \ac{DUT} netlist
specified in the \ac{FIJI} configuration file. For each \textit{[\acs{FIU}$n$]} entry
specified in the \ac{FIJI} configuration file. For each \texttt{[\acs{FIU}$n$]} entry
in this file, it breaks up the corresponding net in an \textit{original}
and a \textit{modified} net, routes these nets to the toplevel, and creates
an output and input for them, respectively.
......@@ -27,18 +27,18 @@ the following parameters and switches:
Specifies the path to the settings file for which to instrument
the original netlist.
\textit{This parameter is required.}
This parameter is \emph{required}.
\item \texttt{-n, {-}{-}netlist-file=<filename>}
Specifies the path to the original netlist file to be instrumented.
\textit{This parameter is required.}
This parameter is \emph{required}.
\item \texttt{-p, {-}{-}file-prefix=<prefix>}
Changes the filename prefix for all generated files.
\textit{This parameter is optional.} If it is not specified, the module
name of the toplevel in the \ac{DUT} netlist used.
This parameter is \emph{optional}.
If it is not specified, the module name of the toplevel in the \ac{DUT} netlist used.
\item \texttt{-o, {-}{-}output-dir=<path>}
......@@ -46,7 +46,7 @@ the following parameters and switches:
the specified path. This option takes precedence over the
\texttt{OUTPUT\_DIR} value specified in the \ac{FIJI} configuration file.
If the specified directory does not exist, it will be created.
\textit{This parameter is optional.}
This parameter is \emph{optional}.
\item \texttt{-h, --help}
......
......@@ -125,7 +125,7 @@ fault injection logic is modified. This can be useful in the following
cases:
\begin{itemize}
\item The baud rate for communication with the host is changed
\item The timer length or LFSR configuration (Length, polynomial, seed) is changed
\item The timer length or \ac{LFSR} configuration (Length, polynomial, seed) is changed
\item External trigger or reset support is added or removed
\item \textit{The \texttt{g\_implement\_fault\_injection} generic in the
wrapper is set to \texttt{false}}
......
\section{Run-time Control of Fault Injection}
\label{sec:runtime}
\subsection{Command-line Tool}
\subsection[FIJIEE Command-line Interface]{\acs{FIJIEE} Command-line Interface}
\label{sec:download-cli}
The \textit{\ac{FIJI} Download} tool is a command-line tool which facilitates
The \textit{\ac{FIJIEE}} tool is a command-line tool which facilitates
downloading test patterns to the \textit{\ac{FIJI}} logic embedded in the
instrumented netlist in the target FPGA device. It communicates with the
\textit{\ac{FIJI}} logic embedded in the instrumented netlist in the target
FPGA device, downloads test patterns and reads back status information.
\textit{\ac{FIJI} Download} works with \textit{\ac{FIJI} Tests} files, which can
\textit{\ac{FIJIEE}} works with \textit{\ac{FIJI} Tests} files, which can
contain (1) overall test execution parameters such as the serial device
to be used for communication with the fault injection logic, (2)
a succession of test patterns for sequenced tests along with test
execution information, and (3) test execution information for random
tests such as fault probabilities and minimum and maximum timer values.
\textit{\ac{FIJI} Download} may be invoked as follows:
The \textit{\ac{FIJIEE}} may be invoked as follows:
\texttt{perl fiji\_download.pl [OPTIONS]}
......@@ -41,7 +41,7 @@ The following command-line parameters are required regardless of operation mode:
Specifies the \textit{\ac{FIJI} Tests} file to use
\end{itemize}
The script also accepts the following \underline{optional} command-line arguments:
The script also accepts the following \emph{optional} command-line arguments:
\begin{itemize}
\item \texttt{-p, {-}{-}port=<port>}
......@@ -75,23 +75,23 @@ the values defined in the supplied \textit{\ac{FIJI} Tests} file:
\item \texttt{-$\emptyset$, {-}{-}prob-s0=<probability>}
Absolute probability of a stuck-at-0 fault on any net
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
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
Probability of a delay fault on any net
\item \texttt{-f, {-}{-}prob-seu=<probability>}
Absolute probability of an SEU fault on any net
Probability of an SEU fault on any net
\item \texttt{-o, {-}{-}prob-so=<probability>}
Absolute probability of a stuck-open fault on any net
Probability of a stuck-open fault on any net
\end{itemize}
The entered durations must fit into the timer width specified in the
......@@ -102,7 +102,7 @@ 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{\ac{FIJI} Download} prompts
When choosing the \texttt{manual} mode, \textit{\ac{FIJIEE}} prompts
the user for fault configurations before they are downloaded as shown
in \Cref{lst:manualprompt}.
......@@ -147,7 +147,7 @@ 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{\ac{FIJI} Download} asks if the internal trigger (\texttt{0}) or the
\textit{\ac{FIJIEE}} 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
......@@ -159,15 +159,15 @@ the \textit{\ac{FIJI} Settings} and \textit{\ac{FIJI} Tests} files.
\subsection{GUI Tool}
\subsection[FIJIEE GUI]{\acs{FIJIEE} GUI}
The \textit{\ac{FIJI} Download GUI} tool provides a graphical user interface to
The \textit{\ac{FIJIEE} GUI} tool provides a graphical user interface to
the functionality described in Section~\ref{sec:download-cli}. It also
provides the possibility to edit \textit{\ac{FIJI} Tests} files in a guided
manner, where entered values are checked for validity and sanity.
Although \textit{\ac{FIJI} Download} is a graphical tool, it accepts the
following \underline{optional} command-line arguments:
Although the \textit{\ac{FIJIEE}} GUI is a graphical tool, it accepts the
following \emph{optional} command-line arguments:
\begin{itemize}
\item \texttt{-s, {-}{-}settings-file=<filename>}
......@@ -183,8 +183,7 @@ 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{\ac{FIJI} Download GUI} tool
can be seen in Figure~\ref{fig:download_gui}:
The main elements of the \textit{\ac{FIJIEE} GUI} can be seen in Figure~\ref{fig:download_gui}:
\begin{enumerate}[(1)]
\item The \textit{Control Area} is used for loading and saving \textit{\ac{FIJI} Tests} files, as well as
for exporting test runs to \textit{\ac{FIJI} Tests} files or templates for RTL and gate-level simulation.
......@@ -218,14 +217,14 @@ can be seen in Figure~\ref{fig:download_gui}:
\begin{figure}[ht]
\centering
\input{img/fiji_download_sequence_screenshot_marked.tex}
\caption{\ac{FIJI} Download Tool: Sequence Mode}
\caption{\ac{FIJIEE} GUI: Sequence Mode}
\label{fig:download_gui}
\end{figure}
\subsubsection{Sequence}
\label{sec:sequence}
In \textit{Sequence} mode, \textit{\ac{FIJI} Download GUI} provides the
In \textit{Sequence} mode, the \textit{\ac{FIJIEE} GUI} provides the
possibility 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
......@@ -267,13 +266,13 @@ As can also be seen in the Figure, the
hardware configuration information from the \textit{\ac{FIJI} Settings} file
is incorporated in this view. In the hardware configuration for loaded
in the screenshot, the \acs{FIJI}-to-\acs{DUT} reset feature was turned off, and
\textit{\ac{FIJI} Download GUI} notifies the user by graying-out the respective
the \textit{\ac{FIJIEE} GUI} notifies the user by graying-out the respective
checkbox.
\begin{figure}[ht]
\centering
\includegraphics[width=0.85\linewidth]{img/fiji_download_manual_screenshot.png}
\caption{\ac{FIJI} Download Tool: Manual Mode}
\caption{\ac{FIJIEE} GUI: Manual Mode}
\label{fig:manual_download_gui}
\end{figure}
......@@ -298,7 +297,7 @@ are configurable:
\begin{figure}[ht]
\centering
\includegraphics[width=0.85\linewidth]{img/fiji_download_random_screenshot.png}
\caption{\ac{FIJI} Download Tool: Random Mode}
\caption{\ac{FIJIEE} GUI: Random Mode}
\label{fig:random_download_gui}
\end{figure}
......
\section{LFSR polynomials}
Table~\ref{tab:lfsrtable} provides \textit{maximum} polynomials for LFSRs
Table~\ref{tab:lfsrtable} provides \textit{maximum} polynomials for \acp{LFSR}
with widths between 2 and 64 bits ready to be used in a \textit{FIJI Settings}
file.
An LFSR implemented using a maximal polynomial
An \ac{LFSR} implemented using a maximal polynomial
provides a sequence with $2^{N}-1$ states where $N$ is the widths of the shift register.
It visits all possible bit vectors of length $N$ except all-zeroes.
\label{sec:lfsrtable}
\begin{table}[H]
\caption{Maximal period LFSR polynomials for lengths 2-64 \cite{tableLFSR}}
\caption{Maximal period \acs{LFSR} polynomials for lengths 2-64 \cite{tableLFSR}}
\label{tab:lfsrtable}
\centering
\input{content/lfsrtable4col.tex}
......
\section{Absolute Resource Usage}
\label{sec:resource_usage}
The estimated resource values for LUTs and registers displayed in the
The estimated resource values for \acp{LUT} and registers displayed in the
\textit{FIJI Setup} tool (see Section~\ref{sec:setup}) are relative to
the resources needed by the initial default configuration shown in the
\Cref{lst:fiji_def_cfg}. Table~\ref{tab:resources} provides absolute resource
usage values of this default configuration for different FPGA families.
the resources needed by the initial \textit{Default configuration} with a single \ac{FIU}.
The calculated values are referring to the hardware added by \ac{FIJI} only (i.e.\ the user design resources are not part of the calculation at all).
\begin{table}[H]
\caption{Absoulte resource usage of FIJI logic for different FPGA families}
\label{tab:resources}
\centering
\begin{tabular}{ l l l l }
\toprule
Family & Device & Combinational & Registers \\
\midrule
Arria II & EP2AGX260F & 325 & 241 \\
Stratix III & EP3SL70 & 325 & 243 \\
Cyclone III LS & EP3CLS200 & 239 & 230 \\
Cyclone V & 5CSXFC6C6 & 237 & 231 \\
Stratix V & 5SGTMC5K3 & 253 & 232 \\
Virtex 5 & XC5VLX20T & 219 & 229 \\
Zync & XC7Z020 & 214 & 229 \\
Spartan 6 & XC6SLX9 & 237 & 229 \\
Kintex 7 & XC7K70T & 219 & 229 \\
Artix 7 & XC7A100T & 218 & 229 \\
\bottomrule
\end{tabular}
\end{table}
\Cref{lst:fiji_def_cfg} shows the actual settings used for the estimation.
This includes the settings that influence the resource usage as shown below.
Table~\ref{tab:resources} provides absolute resource usage values of this configuration for different FPGA families.
\begin{itemize}
\item \texttt{FREQUENCY=50000000} i.e.\ 50\;MHz; higher frequency \textrightarrow{} more resources
\item \texttt{BAUDRATE=115200} lower baud rate \textrightarrow{} more resources
\item \texttt{TIMER\_WIDTH=4} i.e.\ 32\;bits; wider timers \textrightarrow{} more resources
\item \texttt{RESET\_DUT\_IN\_DURATION=1} longer resets \textrightarrow{} more resources
\item \texttt{LFSR\_WIDTH=16} wider \ac{LFSR} \textrightarrow{} more resources
% FIXME: LFSR_POLY does not influence the calculation although it (minimally) does
% \item \texttt{LFSR\_POLY=0x2d} more bits set in the polynomial \textrightarrow{} more resources
\item \texttt{FIU\_NUM=1} more \acp{FIU} \textrightarrow{} more resources
\end{itemize}
\begin{lstlisting}[caption=Initial FIJI configuration,label=lst:fiji_def_cfg,style=ini]
[CONSTS]
......@@ -77,3 +70,27 @@ FAULT_MODEL=RUNTIME
LFSR_MASK=0x0
NET_NAME=i2c_master_top|G_18_i_a3_8
\end{lstlisting}
\begin{table}[H]
\caption{Absoulte resource usage of FIJI logic for different FPGA families}
\label{tab:resources}
\centering
\begin{tabular}{ l l l l l }
\toprule
Vendor & Family & Device & Combinational & Registers \\
\midrule
Altera & Arria II & EP2AGX260F & 325 & 241 \\
Altera & Stratix III & EP3SL70 & 325 & 243 \\
Altera & Cyclone III LS & EP3CLS200 & 239 & 230 \\
Altera & Cyclone V & 5CSXFC6C6 & 237 & 231 \\
Altera & Stratix V & 5SGTMC5K3 & 253 & 232 \\
\midrule
Xilinx & Virtex 5 & XC5VLX20T & 219 & 229 \\
Xilinx & Zync & XC7Z020 & 214 & 229 \\
Xilinx & Spartan 6 & XC6SLX9 & 237 & 229 \\