Intel® FPGA AI Suite: Getting Started Guide

ID 768970
Date 9/06/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

6.6. Programming the FPGA Device

To complete this section of the tutorial, you must have installed one of the following supported design examples:

  • PCIe-based design example for Intel® Arria® 10 devices

    This design example requires the Intel® Programmable Acceleration Card (PAC) with Intel® Arria® 10 GX FPGA board.

  • PCIe-based design example for Intel Agilex® 7 devices

    This design example requires the Terasic* DE10-Agilex Development Board.

For installation instructions, see Intel FPGA AI Suite Installation Overview.

Important: The instructions here assume that your machine has only a single board installed.

The PCIe-based design examples requires a runtime layer that must be compiled before the design is usable. The runtime for the design examples typically needs to be compiled only once. However, a new FPGA bitstream must be generated whenever any of the following parameters change:

  • Number of IP instances built in the design example.
    • PCIe-based design example for Intel® Arria® 10 devices supports 1 or 2 instances.
    • PCIe-based design example for Intel Agilex® 7 devices supports up to 4 instances.
  • Configuration of the IP architecture (as specified by a .arch file)
  • Quartus fitter seed (or any other "try-harder" compilation options)

Depending on your design example, follow the instructions in one of the following sections:

Programming the Intel Agilex® 7 Device ( Terasic* DE10-Agilex Development Board)

To program the DE10-Agilex-B2E2 board required by the PCIe-based design example for Intel Agilex® 7 devices:

  1. Build the runtime with the following commands:
    cd $COREDLA_WORK/runtime
    rm -rf build_Release
    ./build_runtime.sh -de10_agilex
  2. Program the bitstream onto the FPGA device with the following commands:
    jtagdir=$COREDLA_WORK/runtime/build_Release/fpga_jtag_reprogram
    bitsdir=$COREDLA_WORK/demo/bitstreams
    $jtagdir/fpga_jtag_reprogram $bitsdir/AGX7_Performance.sof
    curarch=$COREDLA_ROOT/example_architectures/AGX7_Performance.arch

The bitstream completely reprograms the board, which causes it to disconnect from the PCIe bus. The board is kept accessible with the $COREDLA_WORK/runtime/fpga_jtag_reprogram tool.

Precompiled bitstreams are provided in the $COREDLA_WORK/demo/bitstreams/ directory. Some bitstreams instantiate a large IP, while others instantiate a small IP. There are also differences in which bitstreams support which neural networks. For details, refer to the Intel® FPGA AI Suite IP Reference Manual .

Programming the Intel® Arria® 10 Device ( Intel® PAC with Intel® Arria® 10 GX FPGA)

To program the Intel® PAC with Intel® Arria® 10 GX FPGA hardware used by the PCIe-based design example for Intel® Arria® 10 devices:

  1. Build the runtime with the following commands:
    cd $COREDLA_WORK/runtime
    rm -rf build_Release
    ./build_runtime.sh
  2. Program the bitstream onto the FPGA device with the following commands:
    fpgaconf -v $COREDLA_WORK/demo/bitstreams/A10_Performance.gbs
    curarch=$COREDLA_ROOT/example_architectures/A10_Performance.arch

The bitstream contains only the AFU. In this case, the AFU consists of the Intel® FPGA AI Suite IP and some interface logic to connect it to the FIM. The FIM, which is the logic delivered as part of the BSP responsible for the interfaces like the memory interface and PCIe interface, is already on the FPGA device.

Precompiled bitstreams are provided in the $COREDLA_WORK/demo/bitstreams/ directory. Some bitstreams instantiate a large IP, while others instantiate a small IP. There are also differences in which bitstreams support which neural networks. For details, refer to the Intel® FPGA AI Suite IP Reference Manual .