Files
Jungfraujoch/docs/FPGA.md
T
leonarski_f 30b6800289
Build Packages / build:windows:nocuda (push) Successful in 17m20s
Build Packages / build:windows:cuda (push) Successful in 19m52s
Build Packages / build:viewer-tgz:cpu (push) Successful in 9m38s
Build Packages / build:viewer-tgz:cuda (push) Successful in 11m18s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 9m34s
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 5m42s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 20m33s
Build Packages / Create release (push) Successful in 33s
Build Packages / build:rugnux:windows (push) Successful in 12m0s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 15m42s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m59s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 16m8s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 14m35s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 16m55s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 16m58s
Build Packages / Generate python client (push) Successful in 16s
Build Packages / build:rpm (rocky8) (push) Successful in 15m21s
Build Packages / Build documentation (push) Successful in 54s
Build Packages / build:rpm (rocky9) (push) Successful in 16m23s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 12m2s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m6s
Build Packages / Unit tests (push) Successful in 1h10m26s
v1.0.0-rc.171 (#81)
* Rugnux: basic support for CCD images (marCCD, SMV) and for gzipped miniCBF.
* `jfjoch_viewer`: opens the CCD formats, and fixes to the dataset plots.
* Documentation updates.

Reviewed-on: #81
Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
2026-09-17 14:42:52 +02:00

83 lines
3.8 KiB
Markdown

# FPGA smartNIC
See separate document for [installation instructions](DEPLOYMENT.md).
## Hardware
Currently supported FPGA is only **Xilinx Alveo U55C**.
See AMD/Xilinx webpage for [card user guide (UG1469)](https://docs.xilinx.com/r/en-US/ug1469-alveo-u55c).
According to the user guide:
```
Alveo data center accelerator cards are designed to be installed into a data center server, where controlled air flow provides direct cooling.
```
The card needs to be placed in a PCI Express (PCIe) Gen4 x8 slot, though mechanically slot has to accommodate x16 card.
There is no need to connect additional power cable, as power of the card is not exceeding 75 W load available from PCIe edge connector.
Current power estimation is about 30 W when idle and 45 W in operation. The card has built-in protection, which will cut power to the card if HBM temperature is above 120&deg;C.
Two variants of the card are available:
* `100g` - this variant operates one port in 100 Gbit/s mode and should be used when connecting detector via a switch.
* `8x10g` - this variant operates both QSFP ports at 4x10 Gbit/s. QSFP+ (40 Gbit/s) transceivers and MTO/MTP harness cables
are necessary. It is designed for detector directly connected to the Jungfraujoch server, without switch.
See [network documentation](FPGA_NETWORK.md) for details of network.
## Building firmware
The firmware build targets are generated by CMake only when `vivado` and `vitis_hls` are detected in
the path, and the Vivado version has to match the one below precisely.
### Xilinx Vivado
The following procedures require having AMD (Xilinx) Vivado and Vitis HLS toolsets version **2022.2** installed on the machine.
Due to the nature of TCL scripts used to generate board designs Vivado version has to exactly match one provided above -
specifically newer versions of Vivado will not work.
In addition to the Intellectual Property (IP) cores included in Vivado, two additional licenses are necessary:
* Non-cost license for Ultrascale+ 100G core has to be requested from AMD/Xilinx website, see [Xilinx website](https://www.xilinx.com/products/intellectual-property/cmac_usplus.html), to build `100g` design.
* A paid license for the 10G/25G Ethernet Subsystem for Ultrascale+ is necessary to build the `8x10g` design.
PSI received non-cost licenses from Xilinx University Program for the latter cores. Therefore, usage of bitstreams
generated by PSI continuous integration pipeline for `8x10g` is only allowed for non-commercial use.
### HLS compilation
Make HLS routines:
```
mkdir build
cd build
cmake ..
make hls
```
### Synthesis
Create PCIe `100g` bitstream with the following command:
```
mkdir build
cd build
cmake ..
make pcie_100g
```
and `8x10g`:
```
mkdir build
cd build
cmake ..
make pcie_8x10g
```
### When Vivado is not present
During CMake execution, the following executables: `vivado` and `vitis_hls` must be present in the path.
If not, build targets will not be generated, and such or similar error message will show up:
```
$ make pcie_100g
make: *** No rule to make target 'pcie_100g'. Stop.
```
### Firmware releases
The firmware is stable and is carried from version to version: the MCS files attached to a release
are normally the ones from the release before it (see [Release contents](RELEASE_CONTENTS.md)). When
it does need to change, it is rebuilt with the targets above on a machine with Vivado.
## Frame generator
The Jungfraujoch card is equipped with a frame generator. It allows simulating a JUNGFRAU detector without having access to such a system.
It sits in parallel with the Ethernet MAC, so it is placed before the network stack and before any processing happening on the card.
In the future a redirection will be possible to send the simulated stream through the 100G TX network link.
Frame generator is written in HLS and controlled with AXI-Lite.