Intel® FPGA SDK for OpenCL™: Intel® Stratix® 10 GX FPGA Development Kit Reference Platform Porting Guide

ID 683809
Date 3/28/2022
Public
Document Table of Contents

2.1.2. Device Identification Registers for Intel® Stratix® 10 PCIe Hard IP

To build PCIe* hardware, you must set PCIe IDs related to the device hardware under Device Identification Registers in PCIe IP settings and must match software MMD since MMD uses them to identify the board.
You can find these PCIe ID definitions in the PCIe controller instantiated in the INTELFPGAOCLSDKROOT/board/s10_ref/hardware/s10gx/board.qsys Platform Designer System File. These IDs are necessary in the driver and the SDK's programming flow.
Table 5.  Device Hardware-Related PCIe ID Registers
ID Register Name ID Provider Description Parameter Name in PCIe IP Core
Vendor ID PCI-SIG® Identifies the FPGA manufacturer.

Always set this register to 0x1172, which is the Intel® vendor ID.

Vendor ID
Device ID Intel® Describes the PCIe configuration on the FPGA according to Intel® 's internal guideline.

Set the device ID to the device code of the FPGA on your accelerator board.

For the Intel® Stratix® 10 GX FPGA Development Kit Reference Platform, set the Device ID register to 0x5170, which signifies Gen 3 speed, 8 lanes, Intel® Stratix® 10 device family, and Avalon® -MM interface, respectively.

Refer to Intel® FPGA SDK for OpenCL™ 's Numbering Convention for PCIe* Hard IP Device ID table for more information.

Device ID
Revision ID   When setting this ID, ensure that it matches the following revision IDs:
  • For Windows, the revision ID is specified in <your_custom_platform>\windows64\driver\Shim.inf file.
  • For Linux, the revision ID specified for the ACL_PCI_REVISION variable in the <your_custom_platform>/linux64/driver/hw_pcie_constants.h file.
Revision ID
Class Code Intel®

The Intel® FPGA SDK for OpenCL™ utility checks the base class value to verify whether the board is an OpenCL™ device.

Do not modify the class code settings.

  • Base class: 0x12 for processing accelerator
  • Sub class: 0x00
  • Programming interface: 0x01
Class Code
Subsystem Vendor ID Board vendor Identifies the manufacturer of the accelerator board.

Set this register to the vendor ID of manufacturer of your accelerator board. For the s10_ref Reference Platform, the subsystem vendor ID is 0x1172.

If you are a board vendor, set this register to your vendor ID.

Subsystem Vendor ID
Subsystem Device ID Board vendor Identifies the accelerator board.

The SDK uses this ID to identify the board because the software might perform differently on different boards. If you create a Custom Platform that supports multiple boards, use this ID to distinguish between the boards. Alternatively, if you have multiple Custom Platforms, each supporting a single board, you can use this ID to distinguish between the Custom Platforms.

Important: Make this ID unique to your Custom Platform. For example, for the s10_ref Reference Platform, the ID is 0x5170.
Subsystem Device ID

The kernel driver uses the Vendor ID, Subsystem Vendor ID and the Subsystem Device ID to identify the boards it supports. The SDK's programming flow checks the Device ID to ensure that it programs a device with a .aocx Intel® FPGA SDK for OpenCL™ Offline Compiler executable file targeting that specific device.

Table 6.   Intel® FPGA SDK for OpenCL™ 's Numbering Convention for PCIe* Hard IP Device ID
Location in ID Definition
15:14 RESERVED
13:12 Speed
  • 0 — Gen 1
  • 1 — Gen 2
  • 2 — Gen 3
  • 3 — Gen 4
11 RESERVED
10:8 Number of lanes
  • 0 — 1 lane
  • 1 — 2 lanes
  • 3 — 4 lanes
  • 4 — 8 lanes
  • 5 — 16 lanes
  • 6 — 32 lanes
7:4 Device family
  • 0 — Altera Stratix IV GX
  • 1 — Altera Arria II GX
  • 2 — Stratix II GX
  • 3 — Arria GX
  • 4 — Cyclone IV GX
  • 5 — External
  • 6 — Stratix V
  • 7 — Arria V
  • 8 — Cyclone V
  • 9 — Arria 10
  • 10 — Stratix 10
3 1 — Soft IP (SIP)

This ID indicates that the PCIe protocol stack is implemented in soft logic. If unspecified, the IP is considered a hard IP.

2:0 Platform Designer PCIe interface type
  • 0 — 64 bits
  • 1 — 128 bits
  • 2 — 256 bits
  • 3 — Desc/Data (that is, Avalon® -Streaming ( Avalon® -ST) interface)
  • 4 — Avalon® -MM interface