ntl is a C++ template library for generating efficient FPGA networking applications with Xilinx Vivado HLS. This is a research prototype; use at your own risk. It is free to use as a whole or in parts. Please cite our FCCM'19 paper "Design Patterns for Code Reuse in HLS Packet Processing Pipelines".
ntl/
contains the class library itself.examples/udp-firewall/
contains an example UDP firewall application.evaluation/
contains extra code and scripts for evaluating the UDP
firewall example on a Mellanox Innova Flex SmartNIC and comparing against
alternative implementations:
hls-legacy/
and
p4/
implement the same application
without ntl, and using P4/SDNet respectively, in order to compare with the
ntl example.scripts/
, verilog/
,
and xci/
provide necessary code to build a bitstream for the
Innova.ntl has been tested with Xilinx Vivado HLS, and Xilinx Vivado 2018.2, and the evaluation P4 application has been tested with Xilinx SDNet 2018.2.
ntl relies on Boost libraries, and was tested with version 1.54.0.
The C simulation test of the UDP firewall example requires googletest and libpcap.
Building a bitstream for the Innova card requires downloading the SDK from Mellanox. We have used version 2768 of the SDK.