SLAC PEP-II
BABAR
SLAC<->RAL
Babar logo
HEPIC E,S & H Databases PDG HEP preprints
Organization Detector Computing Physics Documentation
Personnel Glossary Sitemap Search Hypernews
Unwrap page!
Det. Search
Who's who?
Meetings
FAQ
Images
Archive
Systems
Performance
Intern. region
Vertex Tracker
Drift chamber
DIRC
Calorimeter
IFR
LST
Magnet
Electronics
Trigger
Operations
Run Coordination
Contact Experts
Shift Takers Info
Operations Manual
Electronic Logbook
Ops Hypernews
Shift Signup
Check this page for HTML 4.01 Transitional compliance with the
W3C Validator
(More checks...)

ZPD Troubleshooting

How to tell if a ZPD is healthy, and what to do if it isn't (or doesn't appear to be)

Getting started

Compile and load the ZPD libraries, then run zpdtest. This will run a series of tests:
  • Internal consistency checks for each board, e.g., does the Fitter configuration match the Finder firmware?
  • Consistency checks between boards, e.g., do they all have the same firmware?
  • Memory tests of each diagnostic memory in each FPGA
  • Bus tests between the FPGAs
  • LUT contents check
  • Algorithm test
  • Multiple board readout test
At the end it will print a summary that might look something like:
----- ZPD test summary -----
ZPD                         0     1     2     3     4     5     6     7
slot                        1     3     5     7     9     b     d     f
------------------------+------------------------------------------------
Consistency check        ..................... FAIL ..................... <-- !
Diag Mem Test             pass  pass  pass  pass  pass  pass  pass  pass
MegaBus Test              pass  pass  pass  pass  pass  pass  pass  pass
Fit Results Bus Test      pass  pass  pass  pass  pass  pass  pass  pass
LUT contents             ..................... FAIL ..................... <-- !
Algorithm test           ..................... pass .....................
Multiple board read      ..................... pass .....................

Previous information will give some indication of why a given test failed.


What might go wrong, and what to do about it

Consistency check fails

If you haven't configured the ZPDs (via fcgui or similar) the consistency checks will fail because the basic parameters (block 1 addresses 0x11-0x1d) haven't been loaded. Try configuring the ZPD and running zpdTest again.

Alternate: Loading the Fitter LUTs with: zloadluts "./DczConfig/zpd/zpdFitter.lut" will also load the basic parameters. Then try zpdTest again.

Otherwise there might be a genuine consistency problem, e.g., different firmware versions in different boards. Hopefully the specific consistency failure will tell you what to fix.

Diagnostic memory tests fail

Past problems with this have been due to:
  • Digital Clock Managers losing lock. Sending command 0x14 with the dcmreset command should fix the memory test problems if the DCM lock is the source of the problem. Hopefully these DCM problems have been fixed and won't appear again.
  • c/dclk and dlink phase problems. See how to adjust the dlink phase.
  • Timing constraint violations. Try implementing the Decoder/Driver and/or the FPGA with the problem memory with tighter timing constraints.

Megabus or Fit Results Bus test fails

The only problem we have had with this was due to a DCM lock failure. Try sending command dcmreset to fix it.

LUT contents check fails

Try configuring the ZPDs, or loading the LUTs with: zpdloadluts "./DczConfig/zpd/zpdFinder.lut", etc.

Algorithm test fails

Check to make sure that the test vector file has the same IP correction assumptions as you have loaded in the ZPD. [More information...]

Isolate the problem piece by using algotest with different source and destination memories.

Try the same test on a different ZPD to see if the problem is a hardware/simulation mismatch (in which case you blame the software for not simulating the hardware correctly) or whether different ZPDs produce different results (in which case it sure smells like a hardware problem...)

Multiple board read test fails

If this fails, it is likely due to a dlink phase problem. Try reading out boards one at a time to see if they are individually healthy, and see how to adjust the dlink phase.