@@ -127,7 +127,11 @@ Also, make sure that you have the \texttt{DISPLAY} environment variable set corr
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
Strawberry Perl on the other hand comes with \texttt{dmake} and allows to install all dependencies apart from Verilog-Perl easily.
To compile the latter however at least some changes to the build scripts are required.
The 32-bit version of both Perl distributions work fine with \ac{FIJIEE} to control the actual fault injection in realtime.
There is currently a bug in the 64-bit version of the Perl libraries used to access serial ports that renders these version unsuitable to do anything meaningful in the context of \ac{FIJI} at the moment.
\subsection{Repository Contents}
...
...
@@ -139,8 +143,9 @@ All source code to be executed on a host PC including customized Perl libraries
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}.
The \texttt{test} directory comprises tools and data used for testing \ac{FIJI}.
Using the \textit{Control Area}, file operations can be performed:
The user can select to load a \textit{\ac{FIJI} Configuration} file from disk
or save the current configuration to a file. Additionally, a Verilog
netlist file can be loaded.
These actions can be performed both via the buttons in the \textit{Control
Area} and the Menubar above. The settings file currently edited is
displayed along with the currently loaded netlist.
Using the \textit{Help} menu entry, license information as well as
this help document can be retrieved.
These actions can be performed both via the buttons in the \textit{Control Area} and the menu bar above.
The settings file currently edited is displayed along with the currently loaded netlist.
Using the \textit{Help} menu entry, license information as well as this help document can be accessed.
Upon startup, when no configuration file is specified via command-line
options, \textit{\ac{FIJI} Setup} starts with the \textit{Default Configuration}.
...
...
@@ -65,45 +64,46 @@ edited manually using a text editor.
A netlist must be loaded to perform netlist-related tasks
(choosing nets, pin names, and drivers). When a netlist is loaded, \ac{FIJI}
analyzes the contained Verilog modules and builds an internal representation
using Perl objects. Thus, larger netlists may take a while to load. During
analyzes the contained Verilog modules and builds an internal representation.
Thus, larger netlists may take a while to load. During
this time, a loading screen barring the user from interaction with the
GUI is displayed.
\subsection{Tabs and Main Area}
For clarity, the GUI separates the different configuration topics into
different \textit{Tabs}. The following topics are available for
configuration:
\begin{itemize}
\item\textbf{General Settings}
\begin{description}
\item[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\textbf{Clock Settings}
\item[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 \textit{\ac{FIJI}} fault injection logic is clocked from a clock domain in the \ac{DUT} where faults are injected.
The name and frequency of this clock net need to be specified.
\item\textbf{\acs{LFSR} Settings}
\item[\acs{LFSR} Settings]
\textit{\ac{FIJI}} emulates floating nets caused by \textit{Stuck-open}
\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,
net. These levels are derived from the value of a \textit{\ac{LFSR}}.
In this tab, the width, polynomial,
and starting value of this register can be configured.
See \ref{sec:lfsrtable} for a list of complete \ac{LFSR} polynomials
for different lengths.
\item\textbf{External Reset}
\item[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\textbf{Reset from \acs{DUT} to \ac{FIJI}}
\item[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
...
...
@@ -116,7 +116,7 @@ configuration:
\ac{FIJI} are enabled, the reset sources are ORed together and used
as the \ac{FIJI} logic's asynchronous reset signal.
\item\textbf{Reset from \ac{FIJI} to \acs{DUT}}
\item[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}.
...
...
@@ -126,7 +126,7 @@ configuration:
the polarity, target net name, and desired reset pulse duration
must be entered.
\item\textbf{Trigger Settings}
\item[Trigger Settings]
In order to support dynamic test execution depending on
events external to \ac{FIJI}, trigger signals can be used to
...
...
@@ -138,21 +138,20 @@ configuration:
For both the internal and the external trigger facilities,
the respective pin or net name and polarity must be specified.
\item\textbf{Fault Detection Settings}
\item[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}
host as a means for fault detection. The names and error
levels of these nets need to be specified when they are used.
\item\textbf{\acfp{FIU}}
\item[\acfp{FIU}]
Here, the actual fault injection capabilities of the instrumented
design are configured. For each net into which faults shall be
injected at runtime, a \textit{Fault Injection Unit} needs to
be added. Each \ac{FIU} has an associated net, a driver for this net,
and fault injection capabilities to be configured.
\end{itemize}
\end{description}
The left hand side of the \textit{Main Area} displays a graphical representation
of the current hardware configuration in all tabs. Changes in the configuration
...
...
@@ -189,15 +188,18 @@ the \textit{Select} button next to the net entry field (1).
An example for this dialog is shown in Figure~\ref{fig:netsel}. The entry field across
the top may be used to specify a hierarchical path to a net as perl-style regular expression\footnote{This means that the backslashes and other regex meta characters in escaped identifiers need to be escaped themselves, e.g. for net ``\texttt{{\textbackslash}escaped.identifier }'' write ``\texttt{{\textbackslash}{\textbackslash}escaped{\textbackslash}.identifier }''}.
A hierarchical path shall be constructed as follows:
\begin{minipage}{\textwidth}
A hierarchical path shall be constructed as follows in Extended Backus-Naur Form: