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

userguide updated

parent 54e82605
......@@ -167,10 +167,38 @@ injection units using the \textit{Append Empty \ac{FIU}} button and remove
them selectively using the trash can icon next to each \ac{FIU}.
Added \ac{FIU}s are ``empty'', i.e., they have no associated net and driver.
\begin{figure}[ht]
\centering
\input{img/fiji_setup_fius_marked}
%\includegraphics[width=0.85\linewidth]{img/\ac{FIJI}_setup_screenshot.png}
\caption{\ac{FIJI} Setup Tool: \ac{FIU} Tab}
\label{fig:FIUtab}
\end{figure}
The \ac{FIU}s can be configured in the following way:
Once the user starts to enter a net name (and a valid netlist is loaded),
suggestions for nets are displayed below the net name entry field (1).
When a net is selected, \textit{\ac{FIJI} Setup} checks if this net is actually
Once a netlist is loaded, the user may start with selecting a net to be
instrumented. This is done using a filter dialog which is opened by pressing
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 net or perl-style regular expression
to search the netlist for. Once the user presses the \textit{Search} button, all matching
nets are displayed in the left list box (``Matching nets''). The desired net
can now be selected for fault injection by first selecting it in the
left list box and then pressing the ``\textgreater'' button. Once a net is selected,
it is shown in the list box on the right. Now, clicking ``OK'' selects this
net for the current \ac{FIU}. An already selected net may be de-selected
by pressing the ``\textless'' button. The net selection dialog is used
wherever a net has to be selected: Also the clock net and the fault detection
nets are selected using this method.
\begin{figure}[ht]
\centering
\includegraphics[width=0.6\linewidth]{img/fiji_net_selection.png}
\caption{\ac{FIJI} Setup Tool: Net selection dialog}
\label{fig:netsel}
\end{figure}
Once a net is selected, \textit{\ac{FIJI} Setup} checks if this net is actually
present in the DUT netlist. The user must then select the driver for
this net using the \textit{Driver} button (3). This opens up a dialog
with all possible driver objects for this net prompting the user to select
......@@ -188,13 +216,7 @@ LFSR corresponding to `1`s in the \textit{mask} are ANDed together,
resulting in the ``floating'' value of the
corresponding net.
\begin{figure}[ht]
\centering
\input{img/fiji_setup_fius_marked}
%\includegraphics[width=0.85\linewidth]{img/\ac{FIJI}_setup_screenshot.png}
\caption{\ac{FIJI} Setup Tool: \ac{FIU} Tab}
\label{fig:FIUtab}
\end{figure}
At the bottom of the user interface (see Figure~\ref{fig:setup}),
the \textit{Resource Panel} (4) displays the combinational resources
......
......@@ -52,7 +52,7 @@ To do this via the Synplify GUI, the following steps have to be observed:
\item Create the project and implementation, and add all source files
including the DUT netlist
\item Synplify needs to parse the design's hierarchy. Thus, perform
\textit{Compile only} (\keystroke{F7}).
\textit{Compile only} \keystroke{F7}.
\item Afterwards, open the SCOPE constraints editor (e.g., be double-clicking
on the \texttt{fdc} file where the constraints shall be added)
\item In the \textit{Compile Points} tab, add a new compile point:
......@@ -73,6 +73,20 @@ define_compile_point {v:[<library>].<DUT toplevel entity name>} -type {locked}
The \textit{library} string point to the library where the DUT can be
found. It can be omitted if the DUT is compiled into the \texttt{work} library.
\subsubsection{Constraints Export}
When the \textit{Optimizations} setting in the \textit{\ac{FIJI} Setup} tool
(see Section~\ref{sec:setup}) is set to \texttt{OPTIMIZATION\_OFF} or \texttt{FIX\_PLACEMENT},
\textit{\ac{FIJI} Instrument} generates an ``.fdc'' template constraints file for Synplify.
This file contains the necessary constraints to prevent cross-boundary optimization
between the fault injection logic and the logic in the DUT netlist. In order to
use the constraints contained in this file, it needs to be added as a source
file to the Synplify project and activated in the ``Implementation Options``.
The file is written to the output directory, where also the instrumented netlist file is placed.
\subsection{Place and Route}
\label{sec:place_and_route}
......@@ -102,7 +116,7 @@ of P\&R tools:
is added by the wrapper entity.
\end{enumerate}
\subsubsection{Fixing Physical Placement}
\subsubsection{Fixing Physical Placement Manually}
\label{sec:fixing_physical_placement}
It may be desired to fix the physical location of the DUT netlist, so
......@@ -199,4 +213,16 @@ perform the following steps in the Vivado GUI:
floorplan.
\end{enumerate}
\todo{Describe how to use exported constraints files}
\subsubsection{Constraints Export}
When the \textit{Optimizations} setting in the \textit{\ac{FIJI} Setup} tool
(see Section~\ref{sec:setup}) is set to \texttt{FIX\_PLACEMENT},
\textit{\ac{FIJI} Instrument} generates template constraints files for
the selected P\&R tool (``.qsf'' for Altera Quartus, ``.xdc'' for Xilinx Vivado).
These files contain the necessary directives to set up a physical partition for the
DUT entity. They can either be imported into the P\&R tool directly or copied
manually to a central constraints file.
The files are written to the output directory, where also the instrumented netlist file is placed.
......@@ -340,4 +340,55 @@ following entries:
its dependencies (packages) and the exported simulation architecture.
\end{itemize}
\subsection{Gate-Level Simulation}
As mentioned above, \ac{FIJI} helps with re-executing a test run in actual
hardware as a gate-level simulation run. To that end, \textit{\ac{FIJI} instrument}
is able to export the executed tests as a VHDL architecture for the top-level
entity of the fault injection logic. This architecture replaces the \ac{FIC} and
the \acp{FIU} with a simulation-only description which sets the modified
net outputs according to the timing of the test run previously executed in
hardware.
To perform a gate-level simulation with a previously executed test sequence,
the following steps need to be performed:
\begin {enumerate}
\item Perform a ``Sequence'' or ``Random'' test using \textit{\ac{FIJI} instrument}
until a fault is detected
\item Export the test run to a ``VHDL architecture for gate-level simulation''
\item Set up a work library and compile the FPGA primitives required
for gate-level simulation into that library using a logic simulator.
\item Compile the following source files into the work library:
\begin{itemize}
\item \texttt{<path/to/fiji>/hw/rtl/fault\_selection\_type\_pkg.vhd}:
The 'fault selection type' required by the fault injection logic's toplevel
\item The VHDL configuration package generated by \textit{\ac{FIJI} instrument}
\item The following required parts of the FIJI HDL source:
\begin{itemize}
\item \texttt{<path/to/fiji>/hw/rtl/private\_config\_pkg.vhd}
\item \texttt{<path/to/fiji>/hw/rtl/fault\_injection\_top\_pkg.vhd}
\item \texttt{<path/to/fiji>/hw/rtl/fault\_injection\_top\_.vhd}
\end{itemize}
\item The exported simulation architecture
\item The instrumented netlist generated by \textit{\ac{FIJI} instrument}
\item The VHDL wrapper generated by \textit{\ac{FIJI} instrument}
\item A testbench which instantes the VHDL wrapper and
supplies stimuli to its inputs
\end{itemize}
\item Run the simulation until the simulation architecture of the
fault injection logic reports the end of the test run.
\end{enumerate}
\section{Demo: MC8051}
\todo{Describe TMR Use-Case here instead?}
\subsection{Original Design}
This demo design is intended for use with the \textit{Cyclone V SoC FPGA Development Kit}
from Altera with the \textit{HSMC debug header breakout board} attached.
......@@ -113,7 +116,7 @@ $ cp ../../synp/fpga_top_cyclonev_mc8051_rom_quartus_altsyncram_component.mif .
Prefix all Multicycle paths with \textit{i\_DUT.} after the \textit{n:} (in Tab Delay Paths)
Save, exit editor
\item Run (\keystroke{F8})
\item Run \keystroke{F8}
\end{enumerate}
\subsubsection{Place-and-Route using Quartus II 13.0}
......
docs/userguide/img/fiji_setup_fius.png

67.6 KB | W: | H:

docs/userguide/img/fiji_setup_fius.png

66.6 KB | W: | H:

docs/userguide/img/fiji_setup_fius.png
docs/userguide/img/fiji_setup_fius.png
docs/userguide/img/fiji_setup_fius.png
docs/userguide/img/fiji_setup_fius.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -4,10 +4,10 @@
\draw (8.5,3.15) node[inner sep=0.2mm,circle,red,draw] {\footnotesize 3};
\draw (12,4.55) node[inner sep=0.2mm,circle,red,draw] {\footnotesize 2};
\draw (8.5,4.55) node[inner sep=0.2mm,circle,red,draw] {\footnotesize 1};
\draw[red,thick,rounded corners] (6.2,3.85) rectangle (10.6,4.35); % Net
\draw[red,thick,rounded corners] (6.2,3.35) rectangle (10.6,3.85); % Driver
\draw[red,thick,rounded corners] (10.6,3.85) rectangle (13.7,4.35); % Net
\draw[red,thick,rounded corners] (10.6,3.35) rectangle (13.7,3.85); % Net
\draw[red,thick,rounded corners] (6.2,3.80) rectangle (10.6,4.35); % Net
\draw[red,thick,rounded corners] (6.2,3.30) rectangle (10.6,3.80); % Driver
\draw[red,thick,rounded corners] (10.6,3.80) rectangle (13.7,4.35); % Net
\draw[red,thick,rounded corners] (10.6,3.30) rectangle (13.7,3.80); % Net
% \draw[red,thick,rounded corners] (10.7,0.1) rectangle (15.3,0.75); % Buttons
% \draw[red,thick,rounded corners] (0,0.75) rectangle (15.3,5.7); % Main Area
% \draw[red,thick,rounded corners] (0,5.7) rectangle (15.3,6.3); % Tab Area
......
Markdown is supported
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