\documentclass{beamer}
\usetheme{Madrid} % My favorite!
%\usepackage[latin1]{inputenc}
%\usepackage[T1]{fontenc}
%\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage[utf8]{inputenc}
%\usepackage[spanish]{babel}
\usepackage[english]{babel}
\usepackage{tabularx}   % Erweiterte Tabellen Optionen
\usepackage{booktabs}
\usepackage{multicol}
%\usepackage{txfonts}
\usepackage{listliketab}
\usepackage{graphicx} 
\usepackage{graphics} 

%% Display code in beamer
\usepackage{listings}

% Uncomment the following line if you want %
% page numbers and using Warsaw theme%
%\setbeamertemplate{footline}[page number]
%\setbeamercovered{transparent}
%\setbeamercovered{invisible}
% To remove the navigation symbols from
% the bottom of slides%
%\setbeamertemplate{navigation symbols}{}
%
\usepackage{graphicx}
\newcommand{\hsp}{\vspace{5pt}}
%\definecolor{verde}{RGB}{82,163,0}
%\definecolor{verde}{RGB}{0,163,0} %51 - -
\definecolor{verde}{RGB}{0,102,0}
\definecolor{lightLightBlue}{RGB}{238,245,240}
%usepackage{bm}         % For typesetting bold math (not \mathbold)
%\logo{\includegraphics[height=0.6cm]{yourlogo.eps}}
%
\title[White Rabbit Switch Testing]{White Rabbit Switch Testing}
\subtitle{Healthy Hardware}
\author{B.Rat, C.Prados}
\institute[Seven Solutions, GSI]
{
Seven Solutions, GSI \\
\medskip
{\emph{benoit@sevensols.com, c.prados@gsi.de}}}
\date{\today}
% \today will show current date.
% Alternatively, you can specify a date.
%



\begin{document}

\lstset{
language=bash,
basicstyle=\ttfamily\scriptsize,   % Code font, Examples: \footnotesize\ttfamily,
keywordstyle=\color{OliveGreen},        % Keywords font ('*' = uppercase)
commentstyle=\color{gray},              % Comments font
numbersep=5pt,                          % How far are line-numbers from code
backgroundcolor=\color{lightLightBlue}, % Choose background color
frame=none,                             % A frame around the code
tabsize=2,                              % Default tab size
captionpos=b,                           % Caption-position = bottom
breaklines=true,                        % Automatic line breaking?
breakatwhitespace=false,                % Automatic breaks only at whitespace?
showspaces=false,                       % Dont make spaces visible
showtabs=false,                         % Dont make tabls visible
columns=flexible,                       % Column format
morekeywords={>,__global__, __device__},  % CUDA specific keywords
}


\begin{frame}
\titlepage
\end{frame}


\begin{frame}
    \frametitle{Outline}
\tableofcontents[]
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{White Rabbit Switch Testing Project}
\section{White Rabbit Switch Testing Project}
The project gathers the methodology and methods for testing the White Rabbit
Switch.

\begin{block}
{WR Switch Production Tests}
    \begin{itemize}
        \item Manufacturing quality control of the WR Switch
        \item Avoid that hardware problems manifest themselves as software issues
    \end{itemize}
\end{block}

\begin{block}
{Benchmark and Compliance Tests}
    \begin{itemize}
        \item Compliance with the protocol stack: GbE, PTP, WR PTP etc.. 
        \item Assessment of the performance: throughput, frame latency etc..
    \end{itemize}
\end{block}

\begin{block}
{Other Activities in the Project, Testing Hw Framework}
    \begin{itemize}
        \item Based on the project "Production Test Suite" 
        \item Software that automatizes the production test procedure
    \end{itemize}
\end{block}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{White Rabbit Switch Tests}

\subsection{Pre-Test: Basic visual and electrical tests.}
\begin{frame}{\insertsubsectionhead}

\begin{block}{}
Quality procedures already done and documented.\\
$\Rightarrow$ {\bfseries Goal:} detection of soldering/mouting problems
\end{block}

\begin{itemize}
	\item FlyingProve done at the assembly company 
	\item Visual inspection of the PCBs (SCB \& Mini-BP)
	\item Electrical inspection of the PCBs
\end{itemize}



\begin{center}
 \includegraphics[height=3cm,keepaspectratio=true]{SCB-electrical_test.eps}
 % SCB-electrical_test.png: 1783x868 pixel, 72dpi, 62.89x30.62 cm, bb=0 0 1783 868
\end{center}


\end{frame}

\subsection{The Bootstrap Test Procedure}
\begin{frame}{\insertsubsectionhead}
\begin{block}{}
The test of the switch has been intended to be as flat as possible, 
this mean that we intend to test a component with the less dependency possible of other 
components. 
\end{block}

However, to test a component (FGPA, NAND, ...) we need to have at least the following working:
\begin{itemize}
	\item ARM (detected during the flashing stage)
	\item DDR (test during the flashing stage)
	\item Linux load using Ethernet (TFTP/NFS)\footnote{Can be load directly using DDR in case Ethernet fail}
\end{itemize}
\end{frame}


\subsection{Actual Testing}
\begin{frame}[allowframebreaks]{\insertsubsectionhead}
The testing procedure is a set of scripts:

\begin{itemize}
	\item 001-MD5\_Checking.sh: Check MD5 of needed files
	\item 002-USB.sh: Check the USB (Not implemented)
	\item 003-FPGA\_Bridge.sh: CPU (EB1) $\leftrightarrow$ FPGA (WB)
	\item 004-LED\_Checking.sh: LED of CPU $\&$ miniBP 
	\item 005-FAN\_Checking.sh: FAN on/off and PWM speed
	\item 006-FPGA\_QDRIIStress.sh: Check $\&$ Stress the QDRII.
	\item 007-NF\_MT29F4G16.sh: NAND flash partial R/W ($\sim$ 20m )
	\item 008-DF\_AT45DB642.sh: Dataflash all position ($\sim$ 6m).
	\item 009-FPGA\_TempRetrieving.sh: Retrieve the temperature.
	\item 010-WRS\_SFPs.sh: Use standard bitstream to check SFP transfers. 
	\item 011-Flashing.sh: Flash with the latest stable firmware
\end{itemize}  

To perform these steps we have create some generic tools.

\begin{block}{testing.sh}
	Main script called to generate proper log information:
    \begin{itemize}
        \item S/N of the board
        \item Timestamp of each steps
        \item Error failure codes
        \item Logging history
    \end{itemize}
\end{block}


\begin{block}{shw\_tool.c}
	Accessing to libswitchhw library to test various components:
    \begin{itemize}
        \item LEDs (GPIO, wishbone I2C)
        \item FANs (PWN fan, GPIO)
        \item Temperatures (wishbone I2C)
    \end{itemize}
\end{block}
\end{frame}


\begin{frame}[fragile]{\insertsubsectionhead \ - Report}

%The following is an example of the log history for board $014$ (v3.2)
Below an example of the log history for the board $014$ (v3.2)
\begin{verbatim}
/tftpboot/rootfs/alpha-pts/logs/output-032014_history.log
\end{verbatim}

\begin{lstlisting}
-----------------------------------------------
Fri Oct 12 12:24:08 CET 2012

001 > OK (00'02)
002 > OK (00'00)
003 > OK (00'10)
004 > OK (00'52)
005 > OK (00'52)
006 > OK (00'13)
007 > ERROR ( Sub0:OK Sub1:OK Sub2:OK Sub3:OK Sub4:50% Sub5:OK Sub6:OK) (22'40)
008 > OK (02'47)
009 > OK (00'14)
010 > OK (01'20)
% 011 > OK (04'51)

-----------------------------------------------
Fri Oct 12 13:46:14 CET 2012

007 > OK (22'24)
\end{lstlisting}
\end{frame}

\begin{frame}
\begin{block}{Future Work}
	Create small HDL to check only a component, not a functionality.
	\begin{itemize}
		\item I2C sensor
		\item SFP transfers
		\item PLL frequency
    \end{itemize}
\end{block}
\begin{block}{Conclusion}
	By doing these tests we {\bfseries improve the quality} of the product:
	\begin{itemize}
		\item Checking the components
		\item Checking the connection
		\item Improve development: Check if a bug occurs for new functionality or for a specific component.
		\item Understanding better the sw/gw\\ $\Rightarrow$ {\bfseries Better client support}
    \end{itemize}
\end{block}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[allowframebreaks]
\frametitle{White Rabbit Compliance and Performance Tests}
\section{White Rabbit Compliance and Performance Tests}

Integrasys has done the following compliance tests:
\begin{itemize}
    \item VLAN support 
    \item MRP and MVRP
    \item Remote Management Interface 
\end{itemize} 

CERN (Maciej Limpinsky) has "tortured" the switch and measured the
synchronization performance between 0 and 50 degrees.

\begin{block}
{Missing Tests}
 \begin{itemize}
    \item Throughput
    \item Latency 
    \item Frame Loss Rate 
    \item System Recovery 
    \item Synchronization performance with multicast traffic 
    \item etc...
\end{itemize} 
\end{block}

\begin{block}
{Do we need this tests?}
    \begin{itemize}
        \item This test could detect new issues in the v3
        gateware/firmware/design 
        \item Do we need a standardized way of verifying that a combination hw+firmware achieves the White Rabbit features?
    \end{itemize}
 \end{block}

\begin{block}
{Do we need special hw and which one?}
    \begin{itemize}
        \item Commercial solutions cover partly our tests
        \item The community could hardly afford to buy/rent a commercial
        solutions. For the manufacture it could be seen as an investment.
   \end{itemize}
\end{block}

\begin{block}
{Proposal}
    \begin{itemize}
        \item Use the WR Switch hw platform for developing a compliance and performance
    tester. It could be also  used as a network debugger in production
    systems.
        \item We could reuse part of the current gateware/firmware of the switch, but that
        wouldn't be enough,it is a new development...
    \end{itemize}

\end{block}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Hardware Testing Framework}
\section{Hardware Testing Framework}
\begin{block}
{Architecture}
Client/Server model, the server steers the tests and gathers the log information
of one or several DUT clients.  
\end{block}

\begin{block}
{Feautures}
    \begin{itemize}
        \item Communication with freestanding or hosted hardware
        \item One-time configuration
        \item Guidance and test information during the procedure 
        \item Flexible order of the execution of the tests
    \end{itemize}
\end{block}

\begin{block}
{Goal}
Be able to provide a HW Testing Framework not only for the WR Switch, but also
for all the WR Node form factors.
\end{block}

\end{frame}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{What's Next?}
\section{What's Next}
    \begin{block}
    {WR Production Test}
        \begin{itemize}
            \item Cosmetic changes
            \item Integration with hw Testing Framework
            \item Development of more tests?
        \end{itemize}
    \end{block}

    \begin{block}
    {WR Compliance and Test-Bencher}
        \begin{itemize}
            \item We should start working on it
            \item Who wants to "chip in"?
        \end{itemize}
    \end{block}

    \begin{block}
    {Hw Testing Framework} 
        \begin{itemize}
            \item Release by Februry a version for the WR Switch 
            \item Keep working! 
        \end{itemize}
    \end{block}

\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Wiki of the Project}
\section{Wiki of the Project} 


\begin{block}
{Information about this Project in the OHWR Wiki, so far there is:}
    \begin{itemize} 
        \item WR Production Tests and How To
        \item WR.v2 802.1Q Functional Test Cases Report
        \item Torture Report 
        \item Testing Hardware Framework, not released yet 
        \item Test Methodology Doc 
        \item Proposal for the WR tester.
    \end{itemize}
\end{block}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document} 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
