Author: Cesar FUGUET TORTOLERO

Platform tsar_generic_iob with fault tolerance
==============================================

Prerequisites:
==============

1. Checkout the distributed bootloader in another directory (e.g. user home
directory)

    svn co https://www-soc.lip6.fr/svn/tsar_dist_boot/


2. In order to execute the distributed bootloader on this platform, you need to
create first a symbolic link called "soft" to the distributed
bootloader working directory (obtained during the step 1):

    ln -s <path_to_tsar_dist_boot> soft


3. Then, you have to set the TSARPATH environment variable to the path of the
tsar repo's working directory

    In bash:

        export TSARPATH=<path_to_tsar>

    In tcsh:

        setenv TSARPATH <path_to_tsar>

The TSARPATH environment variable is used by the soclib.conf file in order to
add the hardware components with the fault-tolerance add-ons in the soclib-cc
description paths.

The soclib.conf expects the tsar working directory to have the trunk/
directory, and the branches/reconfiguration directory. It is in this second
directory, where there are the hardware components with fault-tolerance. If you
don't want to have the branches, and the trunk in different working
directories, you can directly modify the soclib.conf configuration file, and
add manually the directories.


Execution:
==========

To execute this platform use preferably the "scripts/onerun.py" script.
This script creates automatically the configuration files needed to compile the
platform:

  - <outdir>/config/boot_config.h    (contains debug flags)
  - <outdir>/config/fault_config.h   (contains the coordinates of faulty cores)
  - <outdir>/config/hard_config.h    (contains hardware parameters' definition)

The name of the <outdir> directory can be passed with the "-o" option of the
scripts/onerun.py script.

Hereafter a description of the main arguments for the scripts/onerun.py:

  --xsize / -x           # clusters per row

  --ysize / -y           # clusters per column

  --nprocs / -n          # processor cores per cluster

  --compile-only / -c    Do not simulate, only compile both platform and soft

  --batch-mode / -b      Framebuffer and TTYs are not shown.
                         TTYs are redirected to files

  --faulty-router / -fr  Inject a faulty router. The faulty router is
                         designated by three arguments: T, X, and Y.
                         - T is the index of the target NoC
                           (CMD:0, RSP:1, M2P:2, P2M:3, CLACK:4).
                         - X and Y are the coordinates of the router.
                         You can inject several faulty routers by repeating
                         the -fr parameter.
                         Example:
                            Run simulation with a 4x4 mesh, and the routers
                            CMD(3,3) and RSP(3,0) are faulty.

                                scripts/onerun -x 4 -y 4 -fr 0 3 3 -fr 1 3 0

  --faulty-core / -fc    Inject a faulty core. The faulty core is
                         designated by three arguments X, Y, and L.
                         - X, and Y are the global coordinates of the core.
                         - L is the local id of the core
                         You can inject several faulty cores by repeating
                         the -fc parameter.
                         Example:
                            Run simulation with a 4x4 mesh, and the
                            cores (0,0,0) and (2,3,1) are faulty.

                                scripts/onerun -x 4 -y 4 -fc 0 0 0 -fc 2 3 1

  --disk-image / -di     Path to the disk image from which the operating system
                         will be loaded at the end of the distributed boot
                         procedure. This disk image is the file handled by the
                         external disk controller.


For more information about the scripts/onerun.py arguments run:

   scripts/onerun.py --help
