2023-11-07 22:48:37 -08:00
# Corundum mqnic for Alveo
2020-09-22 01:00:23 -07:00
## Introduction
2023-11-07 22:48:37 -08:00
This design targets multiple FPGA boards, including most of the Xilinx Alveo line.
2020-09-22 01:00:23 -07:00
2023-10-12 23:26:08 -07:00
* FPGA
2023-11-12 00:56:56 -08:00
* AU50: xcu50-fsvh2104-2-e
2023-11-12 18:30:05 -08:00
* AU55N/C1100: xcu55n-fsvh2892-2L-e
2023-10-12 23:26:08 -07:00
* AU200: xcu200-fsgd2104-2-e
* AU250: xcu250-fsgd2104-2-e
2023-11-11 23:57:56 -08:00
* AU280: xcu280-fsvh2892-2L-e
2023-10-12 23:26:08 -07:00
* VCU1525: xcvu9p-fsgd2104-2L-e
2022-10-12 19:00:49 -07:00
* PHY: 10G BASE-R PHY IP core and internal GTY transceiver
2023-11-07 22:48:37 -08:00
* RAM
2023-11-12 00:56:56 -08:00
* AU50: 8 GB HBM2
2023-11-12 18:30:05 -08:00
* AU55N/C1100: 8 GB HBM2
2023-11-07 22:48:37 -08:00
* AU200: 64 GB DDR4 2400 (4x 2G x72 DIMM)
* AU250: 64 GB DDR4 2400 (4x 2G x72 DIMM)
2023-11-11 23:57:56 -08:00
* AU280: 32 GB DDR4 2400 (2x 2G x72 DIMM) + 8 GB HBM2
2023-11-07 22:48:37 -08:00
* VCU1525: 64 GB DDR4 2400 (4x 2G x72 DIMM)
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
## Quick start
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
### Build FPGA bitstream
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
Run `make` in the `fpga` subdirectory to build the bitstream. Ensure that the Xilinx Vivado toolchain components are in PATH.
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
### Build driver and userspace tools
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
On the host system, run `make` in `modules/mqnic` to build the driver. Ensure the headers for the running kernel are installed, otherwise the driver cannot be compiled. Then, run `make` in `utils` to build the userspace tools.
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
### Testing
2020-09-22 01:00:23 -07:00
2023-06-26 00:08:49 -07:00
Run `make program` to program the board with Vivado. Then, reboot the machine to re-enumerate the PCIe bus. Finally, load the driver on the host system with `insmod mqnic.ko` . Check `dmesg` for output from driver initialization, and run `mqnic-dump -d /dev/mqnic0` to dump the internal state.