Mezzanine Quality Control

The Mezzanine Quality control can be run by anybody with an IceBoard, a Mezzanine, a (known good) SQUID Controller Board (optional – to verify SQCB IIC communications) and a single resistive dongle at the output of the mezzanine DB37 connector. The testing suites generate a PDF output document which may be compared with the initial QC run at McGill at:

http://kingspeak.physics.mcgill.ca/twiki/bin/view/NextGen_Dfmux/MGMEZZ04REV3

The quality control script performs the following functions:

  • Provide a way to update the EEPROM / IPMI data (Serial number)
  • Tests the power, IIC-communications, and EEPROM data integrity (“Basics suite”)
  • Verifies the absolute and relative DC transfer function at each of the 16 analog gain settings (“DC Transfer Function suite”)
  • Verifies the frequency-dependent transfer function across the 10MHz bandwidth (“AC Transfer Function suite”)
  • Tests the ADC data alignment and functioning, synthesizer functioning, spectral features, and noise performance (“Noise suite”)

The testing suite code itself lives in:

$ pydfmux/tests/mezzanine_qc

From start to finish the QC script takes about 30 minutes to run and build the output.

The QC Dongle

This dongle is necessary for all but the first “Basics” testing suite. It resistively connects the positive and negative outputs of the nuller and carrier to the respective inputs for the demodulator.

The dongle is a DB37 male with 350 Ohm resistors. The mapping is below:

- CH1                                 - CH3
  + Carrier                             + Carrier
    * 350 Ohms between pins 37 & 35       * 350 Ohms between pins 30 & 28
    * 350 Ohms between pins 18 & 16       * 350 Ohms between pins 11 & 09
  + Nuller                              + Nuller
    * 350 Ohms between pins 36 & 35       * 350 Ohms between pins 29 & 28
    * 350 Ohms between pins 17 & 16       * 350 Ohms between pins 10 & 09
- CH2                                 - CH4
  + Carrier                             + Carrier
    * 350 Ohms between pins 34 & 32       * 350 Ohms between pins 27 & 25
    * 350 Ohms between pins 15 & 13       * 350 Ohms between pins 08 & 06
  + Nuller                              + Nuller
    * 350 Ohms between pins 33 & 32       * 350 Ohms between pins 26 & 25
    * 350 Ohms between pins 14 & 13       * 350 Ohms between pins 07 & 06

There is some flexibility with respect to the exact resistance used, but 350 Ohms is recommended, and it must be consistent across the dongle. The danger in using more resistance is that the full-scale of the ADC may not be exersized. Going the other direction, too small resistance it and may be possible to rail the ADC during sections of the QC process that can’t tolerate it.

Example images are below:

../../_images/qc_dongle_1_small.jpg

Side View

../../_images/qc_dongle_2_small.jpg

Top View

Editing the YAML configuration file

First, modify the configuration YAML (config.yaml) to match your set-up:

  • Set the dfmux hostname,
  • Set the correct mezzanine number (1 or 2), and
  • Update the IPMI data to match your mezzanine.

Running the DfMUX Mezzanine QC

Now,

  • Run the dfmux_mezzanine_qc.py script.

There is a single test in the “Basics” test suite which requires the Mezzanine output to be plugged into a SQUID Controller Board. The SQUID Controller Board should be one that is known to be good, but doesn’t need any special dongles, and can be plugged into a cryostat at the time of use. This is to verify the IIC buses that live on the mezzanine to talk to the SQUID Controller Board, and it will just be querying the temperature sensor on the SQUID Controller Board. The user will be prompted to plug it in before the “Basics” test is run, and to swap to the resistive QC dongle after it finishes.

Once the YAML configuration file is saved, execute the dfmux_mezzanine_qc.py script from within the enclosing folder:

$ cd pydfmux/tests/mezzanine_qc
$ python dfmux_mezzanine_qc.py

It will first try identify any unintialized mezzanines. If they are found it will overwrite their EEPROM contents with the data found in the YAML.

After programming the EEPROM (or not) it will continue to the QC testing suites.

The output PDF will be available as a PDF if you have the commandline tool rst2pdf installed, otherwise as a raw ReStructuredText file only. The path will be determined based on the YAML configuration and PYDFMUX_OUT_DIR environment variable.