!!!!! VERY PRELIMINARY !!!!!


SLIC Driver Software

The slic driver software suite (SLIC_driver) is responsible for receiving commands from external sources (such as TCC), passing these commands on to the SLICs in the system and receiving answers back from them. It is an outgrowth of the code developed to test the SLIC functionality as the SLICs were being built. SLIC_driver must also access databases containing SLIC operations parameters (such as DSP boot files, algorithm tables, etc.).


Driver Structure
Fig. 1: SLIC_driver communications. Thick arrows indicate primary data-flow directions.

SLIC_driver needs to operate in two command modes.

  1. DAQ Mode where commands come from the DØ DAQ system via the TCC(?). This would be the normal operating mode during runs.
  2. Local Mode where commands are entered through an interface running locally on the host that contains SLIC_driver (the alpha?). This mode would be used for testing purposes and as a last resort in debugging problems during runs.

The main functional features of SLIC_driver are given below.
Function
Libraries
Description
Low Level Utilities:
utilslib(*)
General utilities used by low level functions. For example, card_to_slot.
Bit3 Communications:
bit3lib(*)
Low level Bit3 functions.
Database Access:
slicparlib
Functions to read parameters from wherever they are stored - COOR(?). Parameter files to be read are:
  • FPGA code for input and link FPGAs.
  • DSP boot files
  • Algorithm look-up-tables
  • SLIC parameter files used to initialize each board.
FPGA Operations:
slicfpgalib (+hotlinklib)
dspfpgalib
Functions used to access FPGA control and status registers.
  • Input FPGAs
  • Link FPGAs
  • Output FPGAs
  • DSP FPGAs
DSP Booting:
dspbootlib
Control of the DSP boot proceedure and boot-tests.
Initialization:
slicinitlib
Functions used to set up the SLICs for operation in any of the desired modes. These include:
  • Full initialization including downloading all parameters and files and booting the DSPs
  • SCL Init run when that command is issued from the framework and doing only a subset of the full initialization.
DAQ Command Interpreter:
daqcmdlib(*)
A library of functions that talk with the DØ DAQ and pass on its commands to the SLICs. Things to include here are
  • Run start proceedure
  • Run stop proceedure
SLIC Tests:
slictestlib (+testutils)
A collection of functions used to test and debug the SLICs in situ. They are run to help localize problems for which a SLIC is one of the suspects. These tests fall into several operational categories
  1. Those that can be run from the control room via TCC(?) or locally.
  2. Those that can only be run locally for quick debugging.
  3. Local access to SLIC monitoring information.
  4. Those that are used outside of running periods for system development and to help in repairing broken boards.
There are also several functional categories
  1. BIST tests
  2. Tests using the U Arizona test data source
  3. Purely internal tests
UAz Device Driver:
uaz_driverlib
Support code for using the U Arizona test data board.
Local Test Interface:
testinterface(*)
The driver program for local tests (menu in the current SlicDriver). This should include:
  • a test menu
  • a local run option.
Monitoring:
slicmonitor(*)
The functions in this library serve as an interface and collector for monitoring information from the SLICs (DSP-5). Note that this library may actually be part of the standard Alpha code. The following tasks need to be performed.
  • Pass monitoring request from TCC to SLICs
  • Collect and store the SLIC-by-SLIC results in a sensible way.
  • Manipulate monitoring data if desired.
(*) All or significant portions of this code need to be written.