Skip to content

Getting Started

To use Ensō, you first need to make sure that your system meets the requirements in terms of hardware and software.

System requirements

Ensō currently requires an Intel Stratix 10 MX FPGA. Support for other boards might be added in the future. Ensō's codebase also assumes an x86-64 architecture and that the system is running Linux. Ensō was extensively tested on Ubuntu 22.04 and 16.04, but it should work on other Linux distributions as well.

In what follows, we describe how to setup the software and install the required dependencies.

Dependencies

Ensō has the following dependencies:

  • GCC (>= 9.0)
  • Python (>= 3.9)
  • pip
  • Meson (>= 0.58)
  • Ninja
  • libpcap
  • wget

There are also python dependencies listed in requirements.txt that can be installed with pip.

If you are using Ubuntu 22.04 or other recent Debian-based distribution, you may be able to use the setup.sh script to install all the dependencies. The script is located at the root of the Ensō repository. To run it, simply execute:

./setup.sh

In Ubuntu 22.04 or other recent Debian-based distributions these dependencies can also be manually installed with the following commands:

sudo apt update
sudo apt install \
  python3.9 \
  python3-pip \
  python3-setuptools \
  python3-wheel \
  gcc \
  g++ \
  libpcap-dev \
  tshark

sudo python3 -m pip install meson ninja  # Installing system-wide.
python3 -m pip install -r requirements.txt

Huge pages

Ensō requires 2MB huge pages to be allocated in the system. You may use the following snippet adapted from ixy to allocate them. In this example, we allocate 2,048 2MB huge pages per NUMA node.

mkdir -p /mnt/huge
(mount | grep /mnt/huge) > /dev/null || mount -t hugetlbfs hugetlbfs /mnt/huge
for i in /sys/devices/system/node/node[0-9]*
do
    echo 2048 > "$i"/hugepages/hugepages-2048kB/nr_hugepages
done

Quartus

To be able to load or synthesize the hardware, you also need to install Intel Quartus 19.3 as well as the Stratix 10 device support (same link).

You should also make sure that quartus and its tools are in your PATH. You may do so by adding the following lines to your ~/.bashrc file:

# Make sure this points to the Quartus installation directory.
export quartus_dir=

export INTELFPGAOCLSDKROOT="$quartus_dir/19.3/hld"
export QUARTUS_ROOTDIR="$quartus_dir/19.3/quartus"
export QSYS_ROOTDIR="$quartus_dir/19.3/qsys/bin"
export IP_ROOTDIR="$quartus_dir/19.3/ip/"
export PATH=$quartus_dir/19.3/quartus/bin:$PATH
export PATH=$quartus_dir/19.3/modelsim_ase/linuxaloem:$PATH
export PATH=$quartus_dir/19.3/quartus/sopc_builder/bin:$PATH

Note

Some distributions (e.g., Ubuntu) include code in the .bashrc file to prevent it from running in non-interactive environments. This might prevent the above lines from running in some settings. You should remove or comment out the following lines in the .bashrc file:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac