FELIX firmware
The firmware currently in use is the version officially reelased with felix-05-01-01. It is available for PIXEL 24ch here:
https://atlas-project-felix.web.cern.ch/atlas-project-felix/user/dist/firmware/5.1/
Since it is already a 24ch build, it was used as is and loaded with fflashprog
in all slots (n=0-3).
As indicated in the download page, this new verion of the FELIX firmware requires that the PCIe slot is configured in x8+x8 bifurcation mode in BIOS. This modification was done in felix-1.
Binaries can be found here (in Genova):
/daq/felix/firmware/FW_5.1_494_release-5.1/
FELIX firmware was initially installed with fflashprog
:
cd /daq/felix/firmware/FW_5.1_206
fflashprog -f 3 FLX712_PIXEL_24CH_TTCCLK_GIT_phase2-release-5.1_rm-5.1_494_240716_1544.mcs prog
After this type of installation, a power cycle of the felix server is needed.
vivado_lab
is installed and can be used as an alternative frmware installation method or to inspect ILAs.
Local compilation
In case it is necessary to compile the firmware locally, here is the recepe followed in Feb 2024.
Instruction for compilation (without ILAs and with 4 links) are:
The compilation can be painful, Vivado creshes very often when using daq-2
. The problem is related to a lack of RAM (daq-2 has 32 GB). So, for the moment atlasui05
is used (132 GB).
git clone ssh://git@gitlab.cern.ch:7999/atlas-tdaq-felix/firmware.git
cd firmware
git checkout git checkout 7be1dc2c
git submodule update --init
cd scripts/FELIX_top
vivado -mode tcl
Vivado% source ./FLX712_FELIX_import_vivado.tcl
Vivado% source ./do_implementation_BNL712_pixel_4ch.tcl
GBT_NUM
in the do_implementation_BNL712_pixel_4ch.tcl
file.
The new version of the firmware uses FELIX register map 5.1, so it is compatible only with very reent versions of felix-fistribution. The head of felix-distribution master branch was taken on 04/03/2024 (git hash 1518c920).
The new firmware (phase2/master, a83f409d) was successfully compiled with 24 channels and installed temporary with vivado_lab. It's interesting to note that if the number of links is below 12, the links are divided evenly between FELIX endpoint 0 and 1. If the number of links is above 12, then endpoint 0 is used first, then endpoint 1. So a 12 ch compilation uses only endpoint 0. This is why, in the end, I decided to go for a full 24 links compilation.