Skip to content
This repository has been archived by the owner on Jan 31, 2022. It is now read-only.

Quick start guide

Mykhailo Dalchenko edited this page Apr 27, 2018 · 5 revisions

System requirements

  • You should have xdaq package installed on your system and its libraries location should be added to your system LD_LIBRARY_PATH
  • You should have xerces-c installed
  • You should have protobuf-lite, protobuf and protobuf-devel packages installed (might be an overspec here)
  • You should have wiscrpcsvc library installed. An RPMs for SLC6 and CC7 are available at 904 NAS: /data/bigdisk/users/sturdy/software/rpcsvc_client_dev/rpm

Getting the code

  • Clone the code with the command:
git clone https://github.com/cms-gem-daq-project/xhal.git
  • Navigate to release area in your browser: XHAL release area
  • Checkout the tag corresponding to desired release:
git checkout tags/<tag_name>
  • Run the special script to retrieve binaries:
cd xhal
source setup.sh
python .github/get_binaries.py -t <tag_name> -l .github/uploads.cfg

Python CLI

If you feel like briefly discover the system and perform a connectivity check, you can run python CLI: NB: make sure you have downloaded all the needed libraries from release (works if you have SLC6.5 machine - CERN default) source setup.sh python ./python/reg_interface/reg_interface.py In the appeared command prompt type: connect eagleXX where eagleXX is the name of the board you want to use (eagle33 @P5, eagle34 @904 Integration Stand, eagle26 @QC8)

A command prompt will appear, allowing you to perform single or multi register write/read operations. Examples:

read reg_name will return the register value.

write reg_name value will write the value to the register.

CLI support tab completion for these operations.

fw will return firmware version information for all links.

kw pattern will return read of all the registers containing "pattern" is their names.

outputnode reg_name will output node's address, mask, permissions and eventual comments describing what it controls and which values can take

broadcastOH mask action reg_name opt_value will broadcast read or write reg_name command to all optohybrids specified in the mask. reg_name should start from the part after OHX in full register name.

Example: broadcastOH 0-3,5 read STATUS.FW.DATE

expected output should look like this (in this system only link 0 has OH connected):

`0x65030000 r    GEM_AMC.OH.OH0.STATUS.FW.DATE                           0x20170505
 0x65070000 r    GEM_AMC.OH.OH1.STATUS.FW.DATE                           Bus Error
 0x650b0000 r    GEM_AMC.OH.OH2.STATUS.FW.DATE                           Bus Error
 0x650f0000 r    GEM_AMC.OH.OH3.STATUS.FW.DATE                           Bus Error
 0x65170000 r    GEM_AMC.OH.OH5.STATUS.FW.DATE                           Bus Error`

Using SCA/JTAG interface

  • Power up OH
  • reset SCA module: python ./python/reg_interface/sca.py <card_name> <mask> r, where <card_name> is DN of the ctp7 (e.g. eagle26), is a bit-mask for links. I.e. to reset the OH at link 1 you need a mask of 0b10. To reset links 0-3 you need 0xF mask. After link reset powercycle corresponding OH.