Skip to content

Environment Setup

FPGA rebuilds and the driver, kernel, and software builds all run on the same host toolchain. Set it up once, then follow the workflow you need:

Each workflow has a few extras of its own, such as the FPGA's Viterbi license.

For the exact toolchain, kernel, and image versions these builds expect, see Versions this wiki targets.

Xilinx toolchain (Vivado + Vitis)

  • Vivado 2022.2 with Vitis installed (you need .../Vitis, not Vitis_HLS). If Vitis is missing, add it via Xilinx Design Tools → Add Design Tools for Devices 2022.2.
  • The driver is cross-compiled with the kernel toolchain, so a Vivado/Vitis install is required for both driver and FPGA builds.
  • The installer download is tens of GB and requires a free AMD/Xilinx account from the Xilinx website.

Which Vivado version?

The software side of openwifi historically referenced Vivado 2021.1, while the current openwifi-hw build targets 2022.2. Match the version the repo README states at the time you build.

Host OS and packages

  • Ubuntu 18.04/20.04/22.04 LTS are the tested versions. Ubuntu 24.04 is untested but works with the libtinfo5 workaround below.
  • libtinfo5 for Vivado. On Ubuntu 24.04 the default libtinfo6 won't do, so install libtinfo5 manually:
wget http://archive.ubuntu.com/ubuntu/pool/main/n/ncurses/libtinfo5_6.1-1ubuntu1.18.04.1_amd64.deb
sudo dpkg -i ./libtinfo5_6.1-1ubuntu1.18.04.1_amd64.deb
sudo apt install flex bison libssl-dev device-tree-compiler u-boot-tools -y

Environment variables

Most host-side build steps expect these (use absolute paths):

export XILINX_DIR=/opt/Xilinx                 # dir containing Vitis/, Vivado/, etc.  (all builds)
export BOARD_NAME=zed_fmcs2                    # your board                            (all builds)
export OPENWIFI_HW_IMG_DIR=/path/to/openwifi-hw-img  # FPGA image + full SD-image builds
export ARCH_BIT=32                             # 32 for Zynq-7000, 64 for Zynq UltraScale+ (e.g. ZCU102)  (software builds)