Updated: 15-Aug-2001
There are three basic initialization modes in the SLICs.
Each of these modes are described in more detail below.
The following is performed when the SLICs are powered on.
| Operation | Comments |
| Load FPGAs from PROM |
|
| Warm Start | see below |
The purpose of the warm start is to completely reinitialize the SLICs. Everything is reset, the DSPs are rebooted and all downloads are redone. Preliminary tests indicate that the time it takes to do this should be completely dominated by reloading the Look Up Tables into the DSP SBRAM. The next most costly operations are loading code to the Input and Link FPGAs - which take 100's of ms.
Note that the warmstart is not terribly effected by the order of the operations given in the table below.
|   | Operation (function) |
Comments |
| Warmstart in the Driver | ||
| 1. | Read SLIC Params RCP (*) |
|
| 2. | Load Input/Link FPGA Code (altera_config_input/link) |
|
| 3. | Reset/Resynch Hotlinks (resethotlink) |
  |
| 4. | Disable Token (resettokenring) |
  |
| 5. | Setup Output Channel (outchansetup) |
|
| 6. | Setup Input Channels (inpchansetup) |
|
| 7. | Setup Link (lnkchansetup) |
|
| 8. | Reset DSPs (dsp_hardreset) |
|
| 9. | Reset DSP+Peripherals (dsp_bootresets) |
|
| 10. | Boot DSP (dsp_boot) |
|
| 11. | Setup DSP FPGA (dsp_setup) |
|
| 12. | Init DSP Input Buffers (*) |
|
| 13. | Init Monitoring Mem (DSP 5) (*) |
|
| 14. | Look Up Tables to SBRAM (dspcommand7) |
|
| 15. | Start Algorithms (*) |
|
| Boot Sequence in DSPs | ||
| 1. | Low Level Boot (boot_ker.sa) |
|
| 2. | Init Peripherals (boot.c) |
|
| 3. | Boot Verification (boot.c) |
|
| 4. | Jump to Command Loop (*) |
|
| Algorithm Initialization in DSPs | ||
|   | Input Buffer Setup (?) |
|
|   | Monitoring Mem Setup (DSP 5) (*) |
|
|   | Load LUT to SBRAM (loadmem) |
|
|   | Jump to Algo Entry (*) |
|
As I understand it, the following actions are required when performing an SCL Init. (These must be written down somewhere - but I can't find it.)
We need to avoid the following in our SCL Init function.
The SCL Init process in the SLICs will (probably) be controlled from the driver program running in the Alpha(?) That way the Alpha takes care of all communications with the Trigger Framework.
Commannds must be sent from the driver code to the SLICs in a specific order so that there is no possibility of having an upstream element send data to something downstream after we think that we've cleared the downstream element.
Additionally, we will need to send the SLC Init command to the DSPs
via an interrupt - the extint7 line from the DSP FPGA to the
DSP. This is the only external interrupt line we have available going
into the DSP - so it's a bit of a shame to waste it on SCL
Init. However, if we tried to send the SCL Init command via the normal
path (the DSP input serial port via the DSP FPGA stack) we risk
that the command could be delayed while any other stackwords that are
already there are dealt with. In the worst case, the SCL Init command
would never reach the DSP if it were hung somewhere out of the command
loop.
|   | Operation (function) |
Comments |
| SCL Init in the Driver | ||
| 1. | Receive SCL Init (*) |
|
| 2. | Disable Token (resettokenring) |
|
| 3. | Reset Inputs Counters/FIFOs (*) |
|
| 3. | Reset Link Counters (*) |
|
| 4. | Resynch Hotlinks (resethotlink) |
  |
| 5. | SCL Init to DSPs 1-4 (*) |
|
| 6. | SCL Init to DSP 5 (*) |
|
| 7. | Receive Monitoring Data (*) |
|
| 8. | Reset Output Counters/FIFOs (*) |
|
| 9. | Check Inputs for more Data (*) |
|
| 10. | Restart Token (enableautotoken) |
  |
| 11. | SCL Init Done to Alpha (*) |
|
| SCL Init in the DSPs - Interrupt Routine | ||
| 1. | Receive SCL Init (*) |
|
| 2. | Reinit Peripherals??? (emif_init, mcbsp_gpio, mcbsp_init, dma_init) |
|
| 3. | Send Dummy Event (DSP 5) (*) |
|
| 4. | Memory Checks? (*) |
|
| 5. | Monitoring to Driver (DSP 5) (*) |
|
| 6. | Clear Monitoring Reg's (DSP 5) (*) |
  |
| 7. | SCL Init Done to Driver (*) |
|
| 8. | Jump to Algorithm Entry (*) |
|
DSP-5 will request SCL Init by setting a bit in the trailer that it sends to the Alpha. It is up to the Alpha to interpret this bit and actually pass the init request on to the MBT.
SCL Init will be requested under the following conditions.
|   | Operation (function) |
Comments |
| DSP-5 Requests SCL Init | ||
| 1. | DSP-5 detects SCL init condition. (*) |
|
| 2. | Assemble monitoring data. (*) |
|
| 3. | Assemble special event. (*) |
|
| 4. | Send out event (send_evt?) |
|
| 3. | Wait for SCL Init interrupt. (*) |
|