04-setup.tex 13.4 KB
 Stefan Tauner committed May 04, 2018 1 \section{Configuration}  Christian Fibich committed May 04, 2018 2 \label{sec:setup}  Christian Fibich committed May 04, 2018 3   Christian Fibich committed May 04, 2018 4 5 The \textit{\ac{FIJI} Setup} Tool provides a graphical user interface to create and edit a \textit{\ac{FIJI} Configuration} that can be used to  Christian Fibich committed May 04, 2018 6 7 8 9 10 instrument a netlist and run fault injection tests. It helps the user by checking the sanity of entered values, and eases net and driver selection by displaying suggestions parsed from the netlist.  Christian Fibich committed May 04, 2018 11 Although \textit{\ac{FIJI} Setup} is a graphical tool, it accepts the  Stefan Tauner committed May 04, 2018 12 following \emph{optional} command-line arguments:  Christian Fibich committed May 04, 2018 13 14  \begin{itemize}  Stefan Tauner committed May 04, 2018 15  \item \texttt{-s, {-}{-}settings=}  Christian Fibich committed May 04, 2018 16   Christian Fibich committed May 04, 2018 17  Specifies a \textit{\ac{FIJI} Settings} file to load at startup  Christian Fibich committed May 04, 2018 18   Stefan Tauner committed May 04, 2018 19  \item \texttt{-n, {-}{-}netlist=}  Christian Fibich committed May 04, 2018 20 21  Specifies a netlist file to load at startup  Christian Fibich committed May 04, 2018 22 23 24 25 26  \item \texttt{-v, {-}{-}verbose} Increase verbosity on the terminal. Each occurence of \texttt{-v} or \texttt{{-}{-}verbose} further increases verbosity.  Christian Fibich committed May 04, 2018 27 28 29 30 31 32 33  \item \texttt{-h, {-}{-}help} Displays usage information on the terminal and exits \end{itemize}  Stefan Tauner committed May 04, 2018 34 The main GUI elements can be seen in \Cref{fig:setup}. The user  Christian Fibich committed May 04, 2018 35 36 37 38 39 40 interface consists of (1) the \textit{Control Area}, (2) \textit{Tabs} for selecting different categories of values to be entered, (3) the \textit{Main Panel}, (4) the \textit{Resource Panel} and (5) the \textit{Navigation Panel}. \begin{figure}[ht]  Christian Fibich committed May 04, 2018 41 \centering  Christian Fibich committed May 04, 2018 42 \input{img/fiji_setup_screenshot_marked}  Christian Fibich committed May 04, 2018 43 \caption{\ac{FIJI} Setup Tool}  Christian Fibich committed May 04, 2018 44 45 46 \label{fig:setup} \end{figure}  Stefan Tauner committed May 04, 2018 47 48 \subsection{Control Area and Menu Bar}  Christian Fibich committed May 04, 2018 49 Using the \textit{Control Area}, file operations can be performed:  Christian Fibich committed May 04, 2018 50 The user can select to load a \textit{\ac{FIJI} Configuration} file from disk  Christian Fibich committed May 04, 2018 51 52 or save the current configuration to a file. Additionally, a Verilog netlist file can be loaded.  Stefan Tauner committed May 04, 2018 53 54 55 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.  Christian Fibich committed May 04, 2018 56 57  Upon startup, when no configuration file is specified via command-line  Stefan Tauner committed May 04, 2018 58 59 60 61 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  Christian Fibich committed May 04, 2018 62 63 64 65 create a customized configuration using the GUI, or saved to a file and edited manually using a text editor. A netlist must be loaded to perform netlist-related tasks  Christian Fibich committed May 04, 2018 66 (choosing nets, pin names, and drivers). When a netlist is loaded, \ac{FIJI}  Stefan Tauner committed May 04, 2018 67 68 analyzes the contained Verilog modules and builds an internal representation. Thus, larger netlists may take a while to load. During  Christian Fibich committed May 04, 2018 69 70 71 this time, a loading screen barring the user from interaction with the GUI is displayed.  Stefan Tauner committed May 04, 2018 72 73 \subsection{Tabs and Main Area}  Christian Fibich committed May 04, 2018 74 75 76 77 For clarity, the GUI separates the different configuration topics into different \textit{Tabs}. The following topics are available for configuration:  Stefan Tauner committed May 04, 2018 78 79 \begin{description} \item[General Settings]  Christian Fibich committed May 04, 2018 80 81  Settings for the instrumentation and synthesis process,  Christian Fibich committed May 04, 2018 82  as well as settings for the serial communication between \ac{FIJI} and host  Christian Fibich committed May 04, 2018 83 84  and the fault injection timers are subsumed under this tab.  Stefan Tauner committed May 04, 2018 85  \item[Clock Settings]  Christian Fibich committed May 04, 2018 86   Stefan Tauner committed May 04, 2018 87  The \textit{\ac{FIJI}} fault injection logic is clocked from a clock domain in the \ac{DUT} where faults are injected.  Christian Fibich committed May 04, 2018 88 89  The name and frequency of this clock net need to be specified.  Stefan Tauner committed May 04, 2018 90  \item[\acs{LFSR} Settings]  Christian Fibich committed May 04, 2018 91   Stefan Tauner committed May 04, 2018 92  \textit{\ac{FIJI}} emulates floating nets caused by \textit{stuck-open}  Christian Fibich committed May 04, 2018 93  faults by forcing pseudo-random binary levels onto the respective  Stefan Tauner committed May 04, 2018 94 95  net. These levels are derived from the value of a \textit{\ac{LFSR}}. In this tab, the width, polynomial,  Christian Fibich committed May 04, 2018 96  and starting value of this register can be configured.  Stefan Tauner committed May 04, 2018 97  See \Cref{sec:lfsrtable} for a list of complete \ac{LFSR} polynomials  Christian Fibich committed May 04, 2018 98 99  for different lengths.  Stefan Tauner committed May 04, 2018 100  \item[External Reset]  Christian Fibich committed May 04, 2018 101   Christian Fibich committed May 04, 2018 102  The \ac{FIJI} logic can be configured to be reset from an external  Christian Fibich committed May 04, 2018 103 104 105  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.  Stefan Tauner committed May 04, 2018 106  \item[Reset from \acs{DUT} to \ac{FIJI}]  Christian Fibich committed May 04, 2018 107 108  In addition to the external reset via pin, also any net of the  Stefan Tauner committed May 04, 2018 109  \ac{DUT} can be used to reset the \ac{FIJI} logic. This feature can be  Christian Fibich committed May 04, 2018 110  turned on and off in this tab. If an internal reset from the  Stefan Tauner committed May 04, 2018 111 112 113  \ac{DUT} is desired, the polarity and source net name must be entered. When the \textit{Reset from \ac{DUT} to \ac{FIJI}} feature is used, the \textit{Reset from \ac{FIJI} to \ac{DUT}} feature cannot be used at the  Christian Fibich committed May 04, 2018 114  same time.  Stefan Tauner committed May 04, 2018 115  If both the external reset feature and the reset from \ac{DUT} to  Christian Fibich committed May 04, 2018 116 117  \ac{FIJI} are enabled, the reset sources are ORed together and used as the \ac{FIJI} logic's asynchronous reset signal.  Christian Fibich committed May 04, 2018 118   Stefan Tauner committed May 04, 2018 119  \item[Reset from \ac{FIJI} to \acs{DUT}]  Christian Fibich committed May 04, 2018 120   Christian Fibich committed May 04, 2018 121  In contrast to the feature described above, the \ac{FIJI} logic can  Stefan Tauner committed May 04, 2018 122 123 124 125  also be used as a source for a reset net in the \ac{DUT}. When the \textit{Reset from \ac{FIJI} to \acs{DUT}} feature is used, the \textit{Reset from \acs{DUT} to \ac{FIJI}} feature cannot be used at the same time. If an internal reset from \ac{FIJI} to the \ac{DUT} is desired,  Christian Fibich committed May 04, 2018 126 127 128  the polarity, target net name, and desired reset pulse duration must be entered.  Stefan Tauner committed May 04, 2018 129  \item[Trigger Settings]  Christian Fibich committed May 04, 2018 130 131  In order to support dynamic test execution depending on  Christian Fibich committed May 04, 2018 132  events external to \ac{FIJI}, trigger signals can be used to  Christian Fibich committed May 04, 2018 133 134  continue a suspended test execution. Both an external trigger via an FPGA pin as well as an internal  Stefan Tauner committed May 04, 2018 135  trigger using a net in the \ac{DUT} as a source can be used. The  Christian Fibich committed May 04, 2018 136  \ac{FIJI} logic can be instructed at runtime if it shall wait for  Christian Fibich committed May 04, 2018 137 138 139 140  the internal or external trigger signal. For both the internal and the external trigger facilities, the respective pin or net name and polarity must be specified.  Stefan Tauner committed May 04, 2018 141  \item[Fault Detection Settings]  Christian Fibich committed May 04, 2018 142   Stefan Tauner committed May 04, 2018 143  The value of up to two nets in the \ac{DUT} can be communicated back to the  Stefan Tauner committed May 04, 2018 144  host as a means for fault detection. The names and error  Christian Fibich committed May 04, 2018 145 146  levels of these nets need to be specified when they are used.  Stefan Tauner committed May 04, 2018 147  \item[\acfp{FIU}]  Christian Fibich committed May 04, 2018 148 149 150 151  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  Christian Fibich committed May 04, 2018 152  be added. Each \ac{FIU} has an associated net, a driver for this net,  Christian Fibich committed May 04, 2018 153  and fault injection capabilities to be configured.  Stefan Tauner committed May 04, 2018 154 \end{description}  Christian Fibich committed May 04, 2018 155 156 157  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  Christian Fibich committed May 04, 2018 158 such as added \ac{FIU}s and changed signal polarities are reflected in this  Christian Fibich committed May 04, 2018 159 160 161 162 block diagram immediately. Some blocks and signals provide additional information when the cursor hovers above them. On the right hand side of the \textit{Main Area} the configuration items for the current tab are displayed. Each time a value is updated in one of the configuration  Christian Fibich committed May 04, 2018 163 items, \textit{\ac{FIJI} Setup} checks for sanity and validity of the entered  Christian Fibich committed May 04, 2018 164 165 166 167 value. If a check fails, the corresponding field is marked in red until a valid value is entered. Also fields which cannot yet be verified (e.g., net names, when no netlist is loaded) are marked in this way. Nevertheless, it is possible to save a configuration with values deemed  Christian Fibich committed May 04, 2018 168 invalid by \textit{\ac{FIJI} Setup}. A warning is issued before such configuration  Christian Fibich committed May 04, 2018 169 170 is saved.  Christian Fibich committed May 04, 2018 171 172 173 174 175 176 177 178 179 180 In the \ac{FIU} tab as shown in \Cref{fig:FIUtab}, the user has two options of adding fault injection units: \begin{itemize} \item Empty'' \acp{FIU} are added using the \textit{Append empty FIU} button (1). These \acp{FIU} have no associated net and driver upon creation. \item Multiple \acp{FIU} can be added using the \textit{Append multiple FIUs} button (2). Here, a dialog to select multiple nets is opened. This mode is only applicable if a netlist file is already loaded. \end{itemize}  Christian Fibich committed May 04, 2018 181   Christian Fibich committed May 04, 2018 182 183 184 185 186 187 188 189 \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}  Christian Fibich committed May 04, 2018 190 The \ac{FIU}s can be configured in the following way:  Christian Fibich committed May 04, 2018 191 192 193 194 195 196 197 Once a netlist is loaded, the user may edit the 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 (3). An example for this dialog is shown in \Cref{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 }''}, as a shell-style glob\footnote{The standard wildcards * and ? may be used}, or simply as a substring of the desired net\footnote{This is equivalent to *\textit{\textless text \textgreater}* in glob mode}.  Christian Fibich committed May 04, 2018 198   Stefan Tauner committed May 04, 2018 199 \begin{minipage}{\textwidth}  Christian Fibich committed May 04, 2018 200 201 Regardless of the search mode, the entered expression must match an entire hierarchical path. A hierarchical path shall be constructed as follows in Extended Backus-Naur Form:  Christian Fibich committed May 04, 2018 202 203  \begin{verbatim}  Stefan Tauner committed May 04, 2018 204 205 206 207 208 hierarchical-path = top, "/", { cell-list }, net; cell-list = { cell-list }, cell, "/"; top = ? Toplevel module name ?; net = ? Net name ?; cell = ? Cell name ?;  Christian Fibich committed May 04, 2018 209 \end{verbatim}  Stefan Tauner committed May 04, 2018 210 211 \smallskip \end{minipage}  Christian Fibich committed May 04, 2018 212 213 214 215  A hierarchical path starts with the name of the toplevel module, then contains a path of instantiation names, and finally, the name of a net. The forward slash character \texttt{/'} is used as a separator between  Christian Fibich committed May 04, 2018 216 217 218 module, instantiation, and net names. As extended identifiers may be generated, make sure to add a space after the extended identifier as required by the Verilog standard.  Christian Fibich committed May 04, 2018 219 220  Once the user presses the \textit{Search} button, all matching  Christian Fibich committed May 04, 2018 221 222 223 224 225 226 227 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  Christian Fibich committed May 04, 2018 228 229 230 231 232 nets are selected using this method. A slightly different version is used where multiple nets may be selected (\textit{Append multiple FIUs} in the \ac{FIU} tab). Here, there also exist buttons to add all nets in the left list box (\textgreater\textgreater'') or to remove all nets from the right list box (\textless\textless'').  Christian Fibich committed May 04, 2018 233 234 235 236  \begin{figure}[ht] \centering \includegraphics[width=0.6\linewidth]{img/fiji_net_selection.png}  Christian Fibich committed May 04, 2018 237 \caption{\ac{FIJI} Setup Tool: Net selection dialog (Single Net)}  Christian Fibich committed May 04, 2018 238 239 240 241 \label{fig:netsel} \end{figure} Once a net is selected, \textit{\ac{FIJI} Setup} checks if this net is actually  Stefan Tauner committed May 04, 2018 242 present in the \ac{DUT} netlist. The user must then select the driver for  Christian Fibich committed May 04, 2018 243 this net using the \textit{Driver} button (7). This opens up a dialog  Christian Fibich committed May 04, 2018 244 245 with all possible driver objects for this net prompting the user to select one of these options.  Christian Fibich committed May 04, 2018 246 Additionally, the supported fault model can be selected (4). If the fault  Christian Fibich committed May 04, 2018 247 model \textit{RUNTIME} is selected, all fault models are supported by  Christian Fibich committed May 04, 2018 248 249 250 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  Christian Fibich committed May 04, 2018 251 selected fault model and fault-free operation.  Stefan Tauner committed May 04, 2018 252 For the emulation of a floating net, the output of an \ac{LFSR} is used (see above).  Christian Fibich committed May 04, 2018 253 Using the \textit{\acs{LFSR} mask} element (8), the user needs to select a  Stefan Tauner committed May 04, 2018 254 255 bit mask at most as wide as the \ac{LFSR}. The bits of the \ac{LFSR} corresponding to 1s in the \textit{mask} are ANDed together,  Christian Fibich committed May 04, 2018 256 257 258 resulting in the floating'' value of the corresponding net.  Christian Fibich committed May 04, 2018 259 260 261 262 263 264 265 A name may be assigned to each \ac{FIU} by pressing the name tag button (5). This name is for documentation purposes only and is displayed next to the index for each \ac{FIU} in the Settings Editor and the Execution Engine. Single \acp{FIU} can be deleted by pressing the delete button (6). Using the up and down arrows next to the delete button, \acp{FIU} can be reordered.  Stefan Tauner committed May 04, 2018 266 \subsection{Statusbar: Resources and Navigation}  Christian Fibich committed May 04, 2018 267   Stefan Tauner committed May 04, 2018 268 At the bottom of the user interface (see \Cref{fig:setup}),  Christian Fibich committed May 04, 2018 269 the \textit{Resource Panel} (4) displays the combinational resources  Stefan Tauner committed May 04, 2018 270 271 (i.e., \acp{LUT}) and the registers needed to implement the current configuration \emph{in relation to the default configuration}.  Christian Fibich committed May 04, 2018 272 Absolute resource numbers for different FPGA families are shown  Stefan Tauner committed May 04, 2018 273 in \Cref{tab:resources}.  Christian Fibich committed May 04, 2018 274 Within the \textit{Button Panel} (5), the \text{Next} and \textit{Back}  Stefan Tauner committed May 04, 2018 275 buttons provide additional navigation through the tabs.  Christian Fibich committed May 04, 2018 276 277   Christian Fibich committed May 04, 2018 278 Alternatively, a \textit{\ac{FIJI} Configuration} can be created manually using  Christian Fibich committed May 04, 2018 279 a text editor. A template file can be generated by saving the default  Stefan Tauner committed May 04, 2018 280 configuration out of the \textit{\ac{FIJI} Setup Tool}.`