Skip to content

SaawySorenson/ndk-fpga

 
 

Repository files navigation

NDK-FPGA

This repository contains FPGA part of the Network Development Kit (NDK) for FPGA acceleration cards. The NDK allows users to quickly and easily develop FPGA-accelerated network applications. The NDK is optimized for high throughput and scalability to support up to 400 Gigabit Ethernet. The NDK-based Minimal (reference) application is also included in this (NDK-FPGA) repository.

The NDK-based Minimal application is a simple example of how to build an FPGA application using the NDK. It can also be a starting point for your NDK-based application. The NDK-based Minimal application does not process network packets in any way; it only sends and receives them. If the DMA IP is enabled, then it forwards the network packets to the computer memory. You can find more detailed information in the NDK-FPGA documentation (devel branch) here.

The DMA Medusa IP is not part of the open-source NDK. If the DMA IP is disabled, it is replaced by a loopback. You can get the NDK, including the DMA Medusa IP and professional support, through our partner BrnoLogic.

How to start

Before you get started, there are a few requirements that you need to have.

Requirements and supported FPGA cards

  • To build the FPGA firmware, you must have installed the Intel Quartus Prime Pro 24.1 or Xilinx Vivado 2022.2 (depending on the target card), including a valid license.
  • We recommend using the Questa Sim-64 2023.1_2 tool to run HDL verifications (UVM).
  • Supported FPGA cards in the NDK framework available as open-source:
    • ReflexCES XpressSX AGI-FH400G card (BOARD_REV=0 is deprecated)
    • Intel Stratix 10 DX FPGA Development Kit (DK-DEV-1SDX-P)
    • Intel Agilex I-Series FPGA Development Kit (DK-DEV-AGI027RES is deprecated)
    • Silicom fb4CGg3@VU9P card (also in variant fb2CGg3@VU9P)
    • Silicom fb2CGhh@KU15P card
    • Silicom N6010 card
    • Bittware IA-420F card
    • AMD/Xilinx Alveo U200
    • AMD/Xilinx Alveo U55C
    • AMD/Xilinx Virtex UltraScale+ FPGA VCU118 Evaluation Kit
  • Other supported FPGA cards in the NDK framework but not available as open-source:
    • Netcope NFB-200G2QL card
  • To control an FPGA card with an application based on the NDK framework, you also need:

How to clone the necessary repositories

Just clone the NDK-FPGA repository from GitHub:

git clone https://github.com/CESNET/ndk-fpga.git

CESNET developers who have access to closed-source repositories can use a single command to clone the repository, including its submodules (from private GitLab):

git clone --recursive git@gitlab.liberouter.org:ndk/ndk-fpga.git

Next steps

The NDK-FPGA documentation (devel branch) in chapter "How to start" lists further steps for building the FPGA firmware, loading it into the FPGA card and also using it.

Documentation

We use a documentation system based on the Sphinx tool, which compiles complete documentation from source files in the reStructuredText format. We also use the Sphinx-vhdl for generating documentation from the VHDL code. The documentation automatically builds with each contribution to the devel/release branch and is available online here:

How to manually build documentation

First, you need to install a few Python packages:

$ pip3 install --user GitPython
$ pip3 install --user sphinx
$ pip3 install --user sphinx-vhdl
$ pip3 install --user furo

Then the documentation is generated simply by issuing these two commands:

$ cd doc
$ make html

The output is in the doc/build/index.html file.

Related publications

License

Unless otherwise noted, the content of this repository is available under the BSD 3-Clause License. Please read LICENSE file.

  • See also the license information (in README.md) in each Git submodule.

Modules/files taken from other sources

  • I2C Master controller by Richard Herveille from opencores.org in comp/ctrls/i2c_hw under something like a BSD license.
  • SPI Master controller by Jonny Doin from opencores.org in comp/ctrls/spi under LGPL license.
  • The .ip files located in the /comp/base/misc/adc_sensors/ folder were generated in Intel Quartus Prime Pro, and their use may be subject to additional license agreements.
  • The .ip file comp/ctrls/sdm_client/mailbox_client.ip was generated in Intel Quartus Prime Pro, and their use may be subject to additional license agreements.
  • The .ip files located in the cards/<VENDOR>/<CARD_NAME>/src/ip/ folder were generated in the Intel Quartus Prime Pro, and their use may be subject to additional license agreements.
  • The .xci files located in the cards/<VENDOR>/<CARD_NAME>/src/ip/ folder were generated in the Xilinx Vivado, and their use may be subject to additional license agreements.
  • The files located in the cards/silicom/n6010/src/comp/pmci/pmci_ip and cards/silicom/n6010/scripts folders were taken from the ofs-n6001 repository and are subject to the MIT license. Please read LICENSE.txt file.

Repository Maintainer

About

Network Development Kit (NDK) for FPGA cards with example application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • VHDL 59.1%
  • SystemVerilog 25.3%
  • Tcl 9.2%
  • Python 4.4%
  • Makefile 0.8%
  • C 0.6%
  • Other 0.6%