WIB Basic Operation

WIB Overview

The WIB communicates with the FEMBs and the RCE/FELIX. The only thing the WIB does from the standpoint of artDAQ is configure itself and the FEMBs.

WIB expert understanding of steps that must happen to get into normal data-taking state:

  1. Power on WIB (if necessary)
  2. Configure WIB
  3. Reset timing system (or equivalent that makes WIB endpoint go from W_RDY 0x6 to RUN 0x8) This should also be able to happen before the WIB is configured.
  4. RCEs and FELIX start recording data

Nothing needs to happen to the WIB at the end of a run, you just start the steps over when you want to start a new run.

Configure & Check Status

Login to np04-srv-012 as np04daq.

Setup the BUTool:

cd  /nfs/sw/wib/WIBSoftwareTrunk
source env.sh

cd into the scripts directory and run one of the below commands to setup the WIB:

BUTool.exe -X config_WIB_VST_RCE_default.script # configure VST RCE WIB and FEMBs with default real data config
BUTool.exe -X config_WIB_VST_FELIX_fake_WIB_data.script # configure VST FELIX WIB to produce fake data
BUTool.exe -X config_WIB_ColdBox_RCE_default.script # configure coldbox WIBs and FEMBs with default real data config
BUTool.exe -X config_WIB_ColdBox_RCE_fake_WIB_data.script # configure coldbox WIBs to produce fake data (don't enable or power on FEMBs)
# and similar for the other configs, see README in scripts directory for more info about configs

Press ctrl-d to exit the BUTool command line interface.

To dump the status of the WIBs, run one of the dump*.sh scripts in the directory piping the output somewhere (there is a lot of output). The first lines are the WIB config.

WIB Hardware Status


WIB MAC and IP Address scheme

WIB Hardware in Vertical Slice Test

  • WIB v2 in slot 2 of the PTC,, hooked up to RCE, flash firmware changing often while we test remote programming
    • Port 1 hooked up to ProtoDUNE FEMB, firmware 0x323
    • Port 2 empty
    • Port 3 empty
    • Port 4 empty
  • WIB v2 in slot 5 of the PTC,, hooked up to FELIX, flash firmware: BU version 0x18072501 RCE
    • Port 1 empty
    • Port 2 empty
    • Port 3 hooked up to ProtoDUNE FEMB box 20, firmware 0x323
    • Port 4 hooked up to ProtoDUNE FEMB box 9, firmware 0x323 - Toy TPC attached
  • PTC card, right now PTC cable going into here and fanned out to WIBs on the backplane

WIB Hardware on ProtoDUNE

  • APA 1-6 have FEMBs with firmware version 0x323
  • Cold box WIB crate has been taken off the cold box


You can check the firmware version and if it is for the RCE or FELIX by logging in to np04-srv-012 and running:

cd  /nfs/sw/wib/WIBSoftwareTrunk
source env.sh
BUTool.exe -w # or for FELIX WIB or np04-wib-101, etc.
status 1 fw

Instructions for installing Firmware

Remote Firmware Update

First, login to np04-srv-012, then download the firmware .hexout file to that computer (you may have to source ~np04daq/bin/web_proxy.sh).


cd  /nfs/sw/wib/WIBSoftwareTrunk
source env.sh

And for the WIB you want to update (np04-wib-Y0X where Y is crate number and X is WIB number in the crate):

BUTool -w np04-wib-Y0X

then check the current firmware on with the status 1 fw command. The version should be equal to or greater than 0x18071902 to support remote firmware update. You then run flash_wr <path to .hexout firmware file> to update the firmware, and type Yes. It should take about 30 minutes, and you can update multiple WIBs in parallel. Example commands:

flash_wr /nfs/sw/fpga/firmwares/protoDUNEWIB_RCE_18071902.hexout
flash_wr /nfs/sw/fpga/firmwares/protoDUNEWIB_FELIX_18071902.hexout

Using USB Blaster to program VST WIBs

SSH to np04-onl-002

cd /nfs/sw/wib/WIBSoftwareTrunk/scripts

For the RCE VST WIB 2:

./wib_program -c "USB-Blaster [3-2]" <path to .sof or .jic programming file>


./wib_program -c "USB-Blaster [3-2]" /nfs/sw/fpga/firmwares/protoDUNEWIB_RCE_18041701.sof

For the FELIX WIB 5:

./wib_program -c"USB-Blaster [3-1]"  <path to .sof or .jic programming file>


./wib_program -c "USB-Blaster [3-1]" /nfs/sw/fpga/firmwares/protoDUNEWIB_FELIX_18060501.sof

Instructions for using WIB with FELIX Firmware

SSH to np04-srv-012

cd /nfs/sw/wib/WIBSoftwareTrunk/
source env.sh
cd scripts
BUTool.exe -X config_WIB_VST_FELIX_fake_WIB_data.script

The board should be setup properly now for the FELIX DAQ and timing system.

Instructions for using WIB with RCE Firmware

SSH to np04-srv-012

cd /nfs/sw/wib/WIBSoftwareTrunk/
source env.sh
cd scripts
BUTool.exe -X config_WIB_VST_RCE_default.script

The board should be setup properly now for the RCE DAQ and timing system

General Firmware Instructions

Dan will post new files at: http://gauss.bu.edu/redmine/projects/dune-wib/wiki/ProtoDUNE_WIB_Firmware

The .hexout files are used to update the WIB flash over ethernet using the BUTool. A powercycle is required to actually use the firmware loaded this way. The below firmwares are for uploading using a USB blaster connected to a WIB.

sof files are for programming just the FPGA with firmware using the P09 header on the board or front panel--it will disappear after a power cycle. jic files are for programming the flash memory from header P09 or the front panel--this needs a power cycle to be loaded into the FPGA, but will persist after power cycles. pof files are for programming the flash from the P10 header on the board--this needs a power cycle to be loaded into the FPGA, but will persist after power cycles. When plugging the USB-Blaster cable into the header, take care that the end of the connector connected to the red wire is connected to pin 1 on the board.

When loading the WIB firmware using the front panel dongle, sof files can be used to program the FPGA and jic files can be used to program the flash.

To see if the programmer can talk to the board, on np04-onl-002, run:


The output should be something like:

[juhugon@np04-onl-002 ~]$ /nfs/sw/fpga/intelFPGA/16.1/qprogrammer/bin/jtagconfig
1) USB-Blaster [1-1.5]
  02A030DD   5AGT(FD3H3|MD3G3)/5AGXBB3D4/..

2) USB-Blaster [2-1.2.2]
  02A030DD   5AGT(FD3H3|MD3G3)/5AGXBB3D4/..

If you get error code 89 the udev rules are not in place - add the file /etc/udev/rules.d/40-usbblaster.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", GROUP="plugdev", MODE="0666", SYMLINK+="usbblaster"

If you get "jtag chain broken", then make sure the WIB is powered on and that the USB-Blaster cable is plugged in the correct direction.

If you continually get permission denied or jtag chain broken errors, then you should try to restart the jtagd process:

sudo killall jtagd
sudo /nfs/sw/fpga/intelFPGA/16.1/qprogrammer/bin/jtagd

MatthewWorcester - 2018-08-09

Topic attachments
I Attachment History Action Size Date Who Comment
PDFpdf BUTool_flow.pdf r1 manage 23.9 K 2017-09-14 - 14:17 JacobMichaelCalcutt  
PNGpng BUTool_flow.png r1 manage 24.7 K 2017-09-14 - 14:21 JacobMichaelCalcutt  
Edit | Attach | Watch | Print version | History: r63 | r61 < r60 < r59 < r58 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r59 - 2018-08-09 - MatthewWorcester
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CENF All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback