Design patterns for code reuse in hls packet processing pipelines

Haggai Eran, Lior Zeno, Zsolt Istvan, Mark Silberstein

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

Abstract

High-level synthesis (HLS) allows developers to be more productive in designing FPGA circuits thanks to familiar programming languages and high-level abstractions. In order to create high-performance circuits, HLS tools, such as Xilinx Vivado HLS, require following specific design patterns and techniques. Unfortunately, when applied to network packet processing tasks, these techniques limit code reuse and modularity, requiring developers to use deprecated programming conventions. We propose a methodology for developing high-speed networking applications using Vivado HLS for C++, focusing on reusability, code simplicity, and overall performance. Following this methodology, we implement a class library (ntl) with several building blocks that can be used in a wide spectrum of networking applications. We evaluate the methodology by implementing two applications: A UDP stateless firewall and a key-value store cache designed for FPGA-based SmartNICs, both processing packets at 40Gbps line-rate.

Original languageEnglish
Title of host publicationProceedings - 27th IEEE International Symposium on Field-Programmable Custom Computing Machines, FCCM 2019
Pages208-217
Number of pages10
ISBN (Electronic)9781728111315
DOIs
StatePublished - Apr 2019
Event27th Annual IEEE International Symposium on Field-Programmable Custom Computing Machines, FCCM 2019 - San Diego, United States
Duration: 28 Apr 20191 May 2019

Publication series

NameProceedings - 27th IEEE International Symposium on Field-Programmable Custom Computing Machines, FCCM 2019

Conference

Conference27th Annual IEEE International Symposium on Field-Programmable Custom Computing Machines, FCCM 2019
Country/TerritoryUnited States
CitySan Diego
Period28/04/191/05/19

Keywords

  • Design methodology
  • High level synthesis
  • Networking
  • Packet processing

All Science Journal Classification (ASJC) codes

  • Computer Science Applications
  • Hardware and Architecture

Fingerprint

Dive into the research topics of 'Design patterns for code reuse in hls packet processing pipelines'. Together they form a unique fingerprint.

Cite this