Afu Developers Guide Pac Card
Afu Developers Guide Pac Card
Contents
9. Document Revision History for AFU Developer's Guide for Intel FPGA
Programmable Acceleration Card (Intel FPGA PAC)................................................. 47
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
2
UG-20169 | 2019.08.05
Send Feedback
1.2. Conventions
Table 1. Document Conventions
Convention Description
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
1. About this Document
UG-20169 | 2019.08.05
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
4
1. About this Document
UG-20169 | 2019.08.05
Intel Acceleration Stack for Intel Xeon Acceleration Stack A collection of software, firmware and
CPU with FPGAs tools that provides performance-
optimized connectivity between an
Intel FPGA and an Intel Xeon
processor.
Intel FPGA Programmable Acceleration Intel FPGA PAC PCIe FPGA accelerator card.
Card (Intel FPGA PAC) Contains an FPGA Interface Manager
(FIM) that pairs with an Intel Xeon
processor over the PCIe bus.
Intel Acceleration Stack Quick Start Guide for This document describes the Acceleration Stack and provides
Intel Programmable Acceleration Card with Intel instructions for hardware and software installation and setup required
Arria 10 GX FPGA for development with the stack.
Intel Acceleration Stack Quick Start Guide for This document describes the Acceleration Stack and provides
Intel FPGA Programmable Acceleration Card instructions for hardware and software installation and setup required
D5005 for development with the stack.
Acceleration Stack for Intel Xeon CPU with This document describes the CCI-P protocol and requirements placed
FPGAs Core Cache Interface (CCI-P) Reference on AFUs.
Manual
Networking Interface for Open Programmable This document describes the HSSI device interface offered by the Intel
Acceleration Engine: Intel Programmable PAC with Intel Arria 10 GX FPGA hardware platform and the OPAE tools
Acceleration Card with Intel Arria 10 GX FPGA and driver features that support the network port feature.
Networking Interface for Open Programmable This document describes the HSSI device interface offered by the Intel
Acceleration Engine: Intel FPGA Programmable FPGA PAC D5005 platform and the OPAE tools and driver features that
Acceleration Card D5005(1) support the network port feature.
Intel Accelerator Functional Unit (AFU) This document provides instructions on how to use the Intel Accelerator
Simulation Environment (ASE) User Guide Functional Unit (AFU) Simulation Environment (ASE).
Open Programmable Acceleration Engine (OPAE) This user guide documents the utilities provided in the Open
Tools Guide Programmable Acceleration Engine (OPAE) software component of the
Acceleration Stack.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
5
UG-20169 | 2019.08.05
Send Feedback
2. Introduction
The Quick Start Guide provides an overview of the Acceleration Stack and provides
instruction for installation and setup of hardware and software components of the
stack, including the OPAE SDK used to develop AFUs and generate loadable AF
images. It is essential to familiarize yourself with the concepts developed for the
Acceleration Stack and to complete the installation and setup procedures covered in
the Quick Start Guide.
This guide for AFU development builds on the concepts and environment setup
established in the Quick Start Guide.
Related Information
• Intel Acceleration Stack Quick Start Guide for Intel Programmable Acceleration
Card with Intel Arria 10 GX FPGA
• Intel Acceleration Stack Quick Start Guide for Intel FPGA Programmable
Acceleration Card D5005
The Intel Acceleration Stack for Development installer includes licenses for the
following software and IPs required for the generation of the AF:
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
2. Introduction
UG-20169 | 2019.08.05
For requirements when using the ASE for AFU functional verification, refer to the Intel
Accelerator Functional Unit (AFU) Simulation Environment (ASE) User Guide.
Related Information
• Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE) User Guide
• Intel Acceleration Stack for Intel Xeon CPU with FPGAs Version 1.2 Release Notes
• Installing the Intel Acceleration Stack Development Package on the Host Machine
Related Information
Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE) User Guide
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
7
UG-20169 | 2019.08.05
Send Feedback
Build the hello_afu sample AFU by invoking the run.sh script from a terminal
window as shown in Example 1.
When the shell script completes, it indicates successful generation of the AF:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/build_synth/hello_afu.gbs
You can optionally use the helper script clean.sh, to remove the following build
output from the Intel Quartus Prime PR compilation invoked by run.sh:
• ./build/*.qdb
• ./build/qdb
• ./build/output_files/
• ./build/*qarlog
• ./build/*.qdf
Successfully compiling the hello_afu sample AFU verifies that your environment is
setup and ready to begin developing your own custom AFUs.
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
UG-20169 | 2019.08.05
Send Feedback
The AFU can access host memory on a cache line basis (64 bytes) through the CCI-P
interface. OPAE defines up to 256 KB of memory mapped I/O (MMIO) space for AFUs
that the host can access using the OPAE driver and APIs. At the bottom of the MMIO
space, the AFU must implement the following OPAE requirements:
• AFU DFH - a 64-bit header at MMIO address offset 0x0
• AFU ID - a 128-bit UUID at MMIO address offset 0x2 (CCI-P D-word address)
The following sections of the CCI-P Reference Manual document the CCI-P protocol
and all OPAE requirements for an AFU design, including the DFH and AFU ID format:
• CCI-P Interface
• AFU Requirements
• Device Feature List
Related Information
Acceleration Stack for Intel Xeon CPU with FPGAs Core Cache Interface (CCI-P)
Reference Manual
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
4. The Accelerator Functional Unit (AFU)
UG-20169 | 2019.08.05
The interfaces provided by OPAE for host and local memory access are basic, slave
access interfaces. The host only has access to the AFU’s 256KB MMIO space. The AFU
must implement a DMA to move large workload data to and from host memory. The
dma_afu sample AFU in the OPAE platform installation provides an example for
moving data between the host and local memory.
The FIM supports notification for illegal accesses made on the CCI-P interface and
performance monitoring capabilities accessible by the host through the FME in the FIU.
Any error handling and performance monitoring must be implemented in the AFU by
developer.
The FIM provides for AFU remote debug through the FME connected to an OPAE tool
that hosts the debug connection over TCP. The AFU designer must instrument the AFU
with debug instances and nodes using tools such as Signal Tap. The nlb_mode_0_stp
sample AFU in the OPAE platform installation provides an example for enabling an AFU
for remote debug with Signal Tap over a TCP connection.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
10
4. The Accelerator Functional Unit (AFU)
UG-20169 | 2019.08.05
Related Information
Basic Building Blocks (BBB) for OPAE-managed Intel FPGAs
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
11
UG-20169 | 2019.08.05
Send Feedback
Documentation doc/
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
by the AFU. The PIM generates a platform shim based upon device interfaces and
properties requested by the AFU. The platform shim is inserted between the hardware
platform’s PR region boundary and the AFU and provides the top-level module
interface for the AFU.
See the Overview of the OPAE Platform for AFUs on page 13 for more details on the
OPAE.
See the OPAE SDK Design Flow for AFU Development on page 17 for the process
used by AFUs to request top-level interfaces and configure simulation and synthesis
build environments.
The figure below shows how the platform shim generated by the PIM enables AFU
integration on a specific target hardware platform.
AFU
local-memory hssi
Clock Cross Clock Cross
Pipeline Pipeline
Interface Interface Interface
Transform Transform Transform
local-memory hssi ...
Legend
Fixed Platform Framework Provided by the OPAE SDK
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
13
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
AFUs are designed to use generic top-level interfaces to a set of generic device classes
such as a host device (cci-p), local memory, network port I/O, clocks, and power
and error management. The AFU requests the device interfaces and properties it
needs from the PIM using a platform configuration file specification.
The Intel FPGA PAC platform offers the clocks device class with the pClk3_usr2
interface, which consists of a list of port signals documented in the CCI-P Reference
Manual.
The Intel FPGA PAC platform offers the cci-p device class with the struct interface.
The structures defined in the following package in the OPAE SDK:
$PLATFORM_ROOT/sw/<opae-version>/platforms/platform_if/rtl/device_if/
ccip_if_pkg.sv
The CCI-P interface is used by the AFU to access host memory and to respond to
MMIO requests from the host. It is composed of three command/response channels:
• Channel 0 - It is used by the AFU for host memory read requests and responses.
Channel 0’s response port is also used for receiving MMIO read and write requests
from the host.
• Channel 1 - It is used by the AFU for host memory write requests and responses.
It is also used for issuing write fences and interrupts.
• Channel 2 - It is used by the AFU for MMIO read responses back to the host.
The CCI-P interface and protocol are documented in the CCI-P Reference Manual.
Related Information
Acceleration Stack for Intel Xeon CPU with FPGAs Core Cache Interface (CCI-P)
Reference Manual
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
14
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The Intel FPGA PAC platform offers the power device class with a 2-bit interface. This
interface drives the signal that represents the power state requests documented in the
Additional Control Signals section of the CCI-P Reference Manual.
Related Information
Additional Control Signals
The Intel FPGA PAC platform offers the error device class with a 1-bit interface. This
interface drives the signal that represents the CCI-P protocol error documented in the
Additional Control Signals section of the CCI-P Reference Manual.
Related Information
Additional Control Signals
The Intel FPGA PAC platform offers the hssi device class with the raw_pr interface,
which consists of a SystemVerilog interface defined in the following Verilog header in
the OPAE SDK:
$PLATFORM_ROOT/hw/lib/build/platform/pr_hssi_if.vh
The HSSI interface is used by the AFU to access the network port on the Intel FPGA
PAC platforms. It is composed of the Native PHY Transceiver interface with a generic
parallel interface to support multiple configurations by the HSSI PHY in the FIM.
The HSSI interface is an optional interface that AFUs can request from the Intel FPGA
PAC platform. The Intel FPGA PAC platforms with HSSI interface contain sample AFUs
in the directories starting with eth_e2e_e<data_rate>.
Related Information
• Intel Arria 10 Transceiver PHY User Guide
• Intel Stratix 10 L- and H-Tile Transceiver PHY User Guide
• Intel Stratix 10 E-Tile Transceiver PHY User Guide
• Networking Interface for Open Programmable Acceleration Engine: Intel
Programmable Acceleration Card with Intel Arria 10 GX FPGA
• 10 Gbps Ethernet Accelerator Functional Unit (AFU) Design Example User Guide
For Intel PAC with Intel Arria 10 GX FPGA
• 40 Gbps Ethernet Accelerator Functional Unit (AFU) Design Example User Guide
The Intel FPGA PAC platform offers the local-memory device class with the following
choice of interfaces:
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
15
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The AFU accesses local memory on the Intel FPGA PAC through the Avalon® Memory-
Mapped (Avalon-MM) slave interfaces provided by the FIM. The Intel FPGA PAC
platforms typically provide one or more bank of local memory. For detailed information
on bank of local memory, refer to the FIM Data Sheet. Each bank interface is
synchronous to its own clock source provided by the interface. The local memory
interfaces in the FIM support bursts of 1, 2, and 4 cache lines. Each FPGA external
memory interface supports burst lengths of 1 to 64 beats. There is no support for
response status or posted writes.
The local memory interface is an optional interface that AFUs can request from the
Intel FPGA PAC platform. See the following two sample AFUs for examples of using the
local memory interface:
• $OPAE_PLATFORM_ROOT/hw/samples/hello_mem_afu
• $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
Intel recommends using avalom_mm interface for all the new designs and not use the
legacy interface.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
16
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
• Validates that an OPAE device interface requested by the AFU is provided by the
target platform.
• Properly terminates any OPAE device class offered by the platform but not
requested by the AFU.
• Enables an AFU to optionally request an OPAE device interface from the target
platform and adjust the build-out of its implementation based on whether the
requested interface is available. For example, the AFU can optionally request local
memory and build-out to use it if available from the target platform, otherwise it
builds-out to function without local memory. See the nlb_mode_0 sample AFU for
an example.
• Provides register pipeline stages on requested OPAE device interfaces to aid static
timing closure during AF generation.
• Provides asynchronous clock crossing from an OPAE device interface’s native clock
to a target clock requested by the AFU. For example, the AFU can request that all
requested OPAE device interfaces be retimed to the uClk_usr clock source
provided by the clocks interface. See the hello_mem_afu sample AFU for an
example.
The PIM transforms a device class offered by the platform into the specific device
interface requested by the AFU. Any device classes on the platform not requested by
the AFU are properly terminated to support AF generation. The transformation is
typically a simple, direct connection between the platform and AFU consisting of
device interface ports or structures or a bundling of the ports into an interface vector.
For example, the PIM directly connects the platform’s cci-p interface structures and
clocks, power , and error ports to the AFU. In the case of local-memory, the PIM
abstracts the hardware platform details from the AFU by packing the platform’s
interface into a SystemVerilog interface vector.
5.2.2.2. Pipelining
The PIM inserts register pipeline stages on device interfaces as requested by the AFU.
The PIM inserts asynchronous clock crossing on device interfaces to cross from the
interface's native clock to a clock specified by the AFU. For example, the AFU can
request that all device interfaces be synchronized to uClk_usr from the clocks
interface.
The figure below shows the design flow when using the OPAE SDK to verify and
synthesize AFs for a target hardware platform.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
17
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The minimal flow depicted in the figure shows the minimum flow steps to generate an
AF from an AFU design, while the depiction of the general flow shows where AFU
verification with ASE fits in the overall flow.
Design
Modifications
Required?
• Specify the Platform Configuration for the AFU in a platform configuration file
(.json) by requesting a top-level AFU interface along with any required interface
properties. The top-level interface requested by the AFU defines its SystemVerilog
top-level module port definition.
• Design the AFU within this top-level module port definition.
• With the AFU design file set established, Specify the Build Configuration for both
AFU simulation and AF synthesis with a single build configuration file
(filelist.txt), which lists the AFU’s design source (e.g., RTL, IP, Platform
Designer subsystems, constraints) along with any required macro definitions and
include files.
• Using the PIM, Generate the AF/ASE Build Environment based upon the AFU’s
platform and build configuration file specifications and the target hardware
platform. At this point in the flow, you can use ASE to run OPAE software
applications on a simulation target instantiated from the AFU's RTL source and the
hardware platform model provided by OPAE.
• Finally, Generate the AF using the AF generation scripts provided by the SDK.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
18
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The following is a synopsis of the minimal set of OPAE SDK commands required to
generate an AF from the hello_afu sample AFU:
cd $OPAE_PLATFORM_ROOT/hw/samples/hello_afu
cd build_synth
$OPAE_PLATFORM_ROOT/bin/run.sh
The hello_afu sample specifies its platform configuration in the following .json file:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/hello_afu.json
The AFU’s top-level interface request in its platform configuration file defines its top-
level module. The hello_afu sample’s top-level module definition is located here:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/ccip_std_afu.sv
The hello_afu sample implements the minimal requirements for an AFU specified in
the CCI-P Reference Manual in the AFU submodule instanced by the ccip_std_afu
top-level module and is described in the following SystemVerilog source:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/afu.sv
The afu.sv source file includes the afu_json_info.vh Verilog header file
generated by the PIM and uses the AFU_ACCEL_UUID macro defined by
afu_json_info.vh to set the UUID value as required by the CCI-P Reference
Manual.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
19
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
Each of the above SystemVerilog source files includes the platform_if.vh Verilog
header file generated by the PIM, which makes available all the interface definitions
used by the AFU.
The hello_afu sample specifies its build configuration in the following text file:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/filelist.txt
It lists all source files, including its platform configuration file (.json). The file
references are relative to the build configuration file’s directory location.
$OPAE_PLATFORM_ROOT/bin/run.sh
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
20
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
Type the following commands to compile the AFU and platform simulation models and
start the simulation server process:
cd build_sim
make
make sim
After the commands complete, ASE indicates that the server is ready for simulation.
Note the instructions for setting the ASE_WORKDIR environment variable in the ASE
client window.
Open a second terminal window and enter the following commands to start the ASE
client process:
<Set ASE_WORKDIR as directed by the simulator in the server window.>
cd $OPAE_PLATFORM_ROOT/hw/samples/hello_afu/sw
make clean
make USE_ASE=1
./hello_afu
The OPAE host application runs on the host in the ASE client window process and the
ASE server window process shows the AFU model responding to host MMIO accesses,
host memory accesses initiated by the AFU, and interrupt vector information signaled
by the AFU.
An OPAE compliant AFU configures the OPAE Platform using a platform configuration
file to specify the following to the PIM:
• Specify the AFU’s UUID
• Request a top-level interface
• Extend a top-level interface with additional device interfaces
• Request pipelining on device interfaces
• Request clock crossing on device interfaces
• Specify a requested device interface as optional
• Specify AFU user clock timing
The platform configuration file uses the JSON format to specify the above tasks with
key:value pairs.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
21
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/hello_afu.json
The SystemVerilog interface definitions for the device interfaces listed below are
documented in the following README:
$OPAE_PLATFORM_ROOT/sw/<opae-version>/platforms/afu_top_ifc_db/
README.md
1. ccip_std_afu
This top-level interface consists of the cci-p, clocks, power and error device
interfaces.
The top-level AFU module name remains ccip_std_afu. It includes the following
device interfaces (device-class:interface):
• cci-p:struct
• clocks:pClk3_usr2
• power:2bit
• error:1bit
See the hello_afu sample json file for an example of an AFU requesting the
ccip_std_afu top-level AFU interface at the following location:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/hello_afu.json
2. ccip_std_afu_avalon_mm
This top-level interface consists of the device interfaces included with the
ccip_std_afu top-level plus a local memory interface.
The top-level AFU module name remains ccip_std_afu. It includes the following
device interfaces (device-class:interfaces):
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
22
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
$OPAE_PLATFORM_ROOT/hw/samples/hello_mem_afu/hw/rtl/
hello_mem_afu.json
The PIM also defines a top-level AFU interface with a deprecated local memory device
interface used by existing AFUs designed for earlier versions of the OPAE Platform.
New AFU designs with local memory interfaces should be designed for the
ccip_std_afu_avalon_mm top-level AFU interface. For example of an AFU
requesting the deprecated, legacy local memory device interface, see the dma_afu
sample AFU JSON file at the following location:
$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/dma_afu.json
For example, the eth_e2e_e10 and eth_e2e_e40 sample AFUs request an hssi
device interface by extending the ccip_std_afu top-level AFU interface using the
afu-image:afu-top-interface:module-ports:[class|interface] keys:
$OPAE_PLATFORM_ROOT/hw/samples/eth_e2e_e10/hw/rtl/
eth_e2e_e10.json
$OPAE_PLATFORM_ROOT/hw/samples/eth_e2e_e40/hw/rtl/
eth_e2e_e40.json
The AFU can request the PIM to insert pipeline stages between the target hardware
platform’s PR region boundary and its top-level module device interfaces on the
following device classes:
• cci-p
• local-memory
Use the following key:value pair on the class key you want pipeline stages inserted:
afu-image:afu-top-interface:module-ports:params:add-extra-timing-reg-
stages:<integer-num>
For example, specify adding two pipeline stages on the local-memory device interfaces
as follows:
{
'class': 'local-memory',
'params':
{
'add-extra-timing-reg-stages': 2
}
}
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
23
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The AFU requests the PIM to insert a clock crossing bridge to synchronize the following
device class interfaces to a clock of the AFU's choosing:
• cci-p
• local-memory
Use the following key:value pair on the device class key you want synchronized to a
clock chosen by the AFU:
afu-image:afu-top-interface:module-ports:params:clock:”<clock-name>”
For example, the hello_mem_afu sample AFU requests that the cci-p and local-
memory device interfaces be synchronized to uClk_usr from the clocks interface:
$OPAE_PLATFORM_ROOT/hw/samples/hello_mem_afu/hw/rtl/
hello_mem_afu.json
By default, the PIM does not generate a platform shim for a target hardware platform
that does not offer a device interface requested by the AFU. However, AFU’s can
specify a requested device interface as optional. For optionally requested device
interfaces, the PIM generates a platform shim and build environments as long as the
device interface is defined as optional by both the OPAE Platform and the target
hardware platform. If the target hardware platform offers the device interface, the PIM
transforms the interface with the properties requested by the AFU’s platform
configuration file, otherwise the PIM continues configuring the platform without any
action on the unavailable device interface. In either case, the PIM defines a Verilog
macro indicating whether the optionally requested interface is offered by the target
hardware platform. AFU implementations must elaborate based on the macro
definition.
Use the following key:value pair on the device class key you want to specify as
optional (the default value is false):
afu-image:afu-top-interface:module-ports:optional:true
$OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0/hw/rtl/nlb_400.json
The cci-p and clocks device interfaces are mandatory for AFUs.
The clocks provided to the AFU by the clocks device interface are fixed in frequency
except for the following user clocks:
• uClk_usr
• uClk_usrDiv2
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
24
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The AFU specifies the frequency for uClk_usr in its platform configuration file using
the following key:value pairs:
afu-image:clock-frequency-high:[<float-value>|”auto”|”auto-<float-value>”]
afu-image:clock-frequency-low:[<float-value>|”auto”|”auto-<float-value>”]
The above key:value pairs drive timing closure on the user clocks during AF
generation and are used to bound the frequency value configured in the PLL circuits of
the target hardware platform that provides the user clocks through the clocks
interface. The chosen frequency may vary in each compilation.
Setting the value field to a float number (e.g., 200 to specify 200 MHz) drives the AF
generation process to close timing within the bounds set by the low and high keys
and set in the AF’s JSON metadata to specify the user clock PLL circuit frequency
values.
Note: There are two clock sources provided for the user clock. Clk_1x and Clk_2x. The
high setting controls the Clk_2x and low setting controls the Clk_1x. There is a fix
relationship between these two clocks, except when low clock exceeds 300 MHz, then
the high clock frequency matches the low clock frequency.
The "auto" setting enables the auto-timing closure mode during AF generation. The
AF generation build process automatically converge on a maximum frequency of
operation on the user clocks and generate AF JSON metadata to specify the auto-
timing closure frequency achieved to OPAE tools.
You can combine the "auto" mode with an upper and lower bound specification using
the "auto-<float-value>" format (e.g., "auto-300" to specify auto-timing
closure bounded to 300MHz).
$OPAE_PLATFORM_ROOT/hw/samples/hello_mem_afu/hw/rtl/
hello_mem_afu.json
OPAE top-level AFU RTL module templates are in the following location in the OPAE
SDK: $OPAE_PLATFORM_ROOT/sw/opae-<version>/platforms/
afu_top_ifc_db/
You can find the AFU samples at the following location in the OPAE
SDK:$OPAE_PLATFORM_ROOT/hw/samples/
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
25
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
If you extend one of the above basic top-level AFU interfaces to add additional device
interfaces (e.g., hssi), manually add the module ports for the added device
interfaces. For example, the Ethernet sample AFUs extend the ccip_std_afu top-
level AFU interface by adding an hssi device interface as shown in the following
sample AFU top-level module RTL source files:
$OPAE_PLATFORM_ROOT/hw/samples/eth_e2e_e10/hw/rtl/ccip_std_afu.sv
$OPAE_PLATFORM_ROOT/hw/samples/eth_e2e_e40/hw/rtl/ccip_std_afu.sv
All RTL source in the AFU’s implementation that references device interfaces defined
by the OPAE Platform (e.g., cci-p, local-memory) must include the following
Verilog header:`include “platform_if.vh”
The top-level AFU RTL module templates in OPAE and the sample AFUs all include
platform_if.vh.
The AFU should use the AFU_ACCEL_UUID macro defined within afu_json_info.vh
to set the AFU’s UUID in its implementation. For example, the hello_afu sample AFU
includes the afu_json_info.vh and sets the AFU UUID using the
afu_json_info.vh macro in the following SystemVerilog source file:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/hw/rtl/afu.sv
The PIM abstracts the clock and reset for the cci-p device interface passed to the
AFU with the following Verilog macros:
• PLATFORM_PARAM_CCI_P_CLOCK
• PLATFORM_PARAM_CCI_P_RESET
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
26
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
The following RTL code snippet shows how to utilize the above macros to set the clock
and reset signals in the AFU implementation for the cci-p interface:
`include “platform_if.vh”
logic clk;
assign clk = `PLATFORM_PARAM_CCI_P_CLOCK;
logic reset;
assign reset = `PLATFORM_PARAM_CCI_P_RESET;
This clock and reset abstraction enables compatibility for an AFU design's clock and
reset connectivity on the cci-p device interface regardless of any clock-crossing
requested in the platform configuration file.
The hello_mem_afu sample AFU provides an example for using the macro
abstractions:
$OPAE_PLATFORM_ROOT/hw/samples/hello_mem_afu/hw/rtl/
ccip_std_afu.sv
The OPAE SDK design flows for AFU development shown in this guide apply exactly as
shown if the AFU design description is all RTL. However, if you want to design all or a
portion of your AFU with Platform Designer subsystems or IP variants or want to add
in-system debug components to the AFU design, it is helpful to generate an AF build
environment for use in developing the AFU design description.
First, configure the build environment with a build configuration file as specified in the
section Generate the AF Build Environment. The build configuration file is a text file
that, at a minimum, consists of a single line that references the AFU’s platform
configuration file (.json). The file reference can be absolute or relative to the
directory where the build configuration file resides.
Then, generate an AF build environment with the following command from an open
terminal window:
afu_synth_setup –-source \
<path-to-build-configuration-file>/<build-configuration-filename> build_synth
cd build_synth/build
quartus &
Once the Intel Quartus Prime Pro Edition GUI opens, open the dcp.qpf project file
and use the revisions feature to create a new revision based on the afu_synth
revision and give it a unique name (e.g.,afu_dev). Use the newly created revision as
a workspace to develop the AFU’s design description with tools such as Platform
Designer or to add debug instances with tools such as Signal Tap. This method enables
AFU design description development with high level, GUI-based tools in Quartus Prime
Pro without corrupting the PR compilation revisions provided by the OPAE SDK for
generating an AF.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
27
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
Related Information
Intel Quartus Prime Pro Edition Handbook Volume 1 Design and Compilation
The FIM provides several clock resources for use by AFUs. One set of clock resources
is the user clock group, which includes uClk_usr and uClk_usrDiv2. Unlike pClk
and its derivatives whose frequencies are fixed by the CCI-P Specification, the user
clocks can be programmed for a range of frequencies supported by the AFU.
User clocks get provisioned by OPAE when an AF is loaded by the fpgaconf utility.
When the fpgaconf utility loads an AF, it configures the PLL in the FIM that sources
the user clocks with the frequency specified by a key:value pair found in the AF
metadata generated by the packager utility. The desired user clock frequency
key:value pair can be specified in a .json file or can be specified with a command
line option (overrides entry in the .json file) to the packager utility. You can use the
packager to generate AFs with unique metadata user clock frequency values for a
single AFU PR bitstream.
The FIM reset resource, pck_cp2af_softReset, is not released until all clock
resources are stable and locked, including the user clocks.
The AFU design must close timing on the user clocks at the maximum frequency to be
supported by the AFU. Place associated clock timing constraints in a .sdc file and
refer to the .sdc file in the AFU's build configuration file.
For usage information on the Packager utility and .json file metadata format,
supported keyword parameters, and minimum metadata requirements, refer to the
packager tab in the Open Programmable Acceleration Engine (OPAE) Tools User Guide.
Related Information
Open Programmable Acceleration Engine (OPAE) Tools Guide
The Intel Acceleration Stack for Intel Xeon CPU with FPGAs Core Cache Interface (CCI-
P) Reference Manual documents all the requirements for an AFU interfacing with the
FIM using the CCI-P protocol. An AFU design must meet all the requirements specified
in the following sections of the CCI-P reference manual:
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
28
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
• CCI-P Interface
• AFU Requirements
• Device Feature List
The above sections in the CCI-P reference manual include requirements unique to the
Intel Xeon Processor with Integrated FPGA (referred to as Integrated FPGA Platform
throughout this document) hardware platform, but most of the information applies to
the Intel FPGA PAC. The notable differences between the two platforms are that the
Intel FPGA PACs do not have a UPI channel or second PCIe link and no accelerator
cache is implemented in the FIM.
The hello_afu example AFU included with the Acceleration Stack provides an
example implementation of a simple Device Feature List that meets the requirements
for an AFU as specified by the CCI-P reference manual. The nlb_mode_0 and
dma_afu example AFUs provide example implementations of more featured Device
Feature Lists.
If a quartus.ini file does not already exist in the compilation build directory,
create it after invoking the afu_synth_setup script, then use your preferred text
editor to create it with the above setting added on a single line.
• If PR compilation results in timing violations in the FIM static region, retry PR
compilation with a different fitter seed value.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
29
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
Related Information
Intel Quartus Prime Pro Edition Handbook Volume 1 Design and Compilation
The AFU configures the build environments generated by the PIM for simulation with
ASE and AF generation with a build configuration file. The build configuration file is a
text file created by the AFU designer to specify the following to the PIM:
• The AFU’s platform configuration file (.json)
• List of simulation and synthesis source files:
— RTL source (.v, .sv, .vhd)
— Platform Designer subsystems (.qsys)
— IP variants (.ip)
• List of additional source and constraints used during AF generation:
— Signal Tap files (.stp)
— Intel Quartus Prime Pro Edition settings (.qsf)
— Timing constraints (.sdc)
• List of search paths at simulation or AF generation time
• List of include files at PIM build environment generation time
— Reusable submodule (e.g., BBBs) build configuration files
• Verilog macro definitions
For a full description of the build configuration file format and semantics, check the
rtl_src_config command help:
$ rtl_src_config -h
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
30
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
• Simple examples:
— hello_afu/hw/rtl/filelist.txt
— hello_mem_afu/hw/rtl/filelist.txt
— hello_intr_afu/hw/rtl/filelist.txt
• Examples with IP references and macro definitions:
— dma_afu/hw/rtl/filelist.txt
— eth_e2e_e10/hw/rtl/filelist.txt
— eth_e2e_e40/hw/rtl/filelist.txt
• Examples with IP references, macro definitions and include references:
— nlb_mode_0/hw/rtl/filelist_mode_0.txt
— nlb_mode_0_stp/hw/rtl/filelist_mode_0_stp
To generate a simulation build environment to verify your AFU with ASE, use the
afu_sim_setup command:
afu_sim_setup --src \
<path-to-build-configuration-file>/<build-configuration-filename> <build-dir-
name>
As you iterate on the verification flow, you need to regenerate the simulation build
environment with the afu_sim_setup command if either of the platform
configuration or build configuration files have been modified according to design
modifications. You can overwrite an existing simulation build directory by invoking the
afu_sim_setup command with the -f command line option, or you can create a
separate build environment by specifying a new target directory.
For a description of the full set of command line options and semantics, see the
afu_sim_setup command help:
afu_sim_setup -h
The ASE supports functional verification of AFU RTL code using host application C code
developed for the OPAE API without the need for accelerator hardware. The ASE
virtualizes the AFU’s physical link with the host, models certain aspects of the OPAE
host memory model, and supports communication between the OPAE host application
and supported RTL simulation tools used to emulate the AFU running on an actual
OPAE-compliant accelerator hardware target.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
31
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
ASE is useful for verifying your AFU’s interoperability with the rest of the Acceleration
Stack using a quick, iterative functional debug environment to minimize time spent in
subsequent portions of the AFU development flow that involve more time-intensive
steps (for example, PAR, timing closure). ASE also enables a more cost-efficient
development environment by removing the dependency on accelerator hardware for
early functional debug of AFU interoperability within the Acceleration Stack.
After using the afu_sim_setup to configure a simulation build environment, you are
ready to start using ASE to verify your AFU.
Follow the example documented in the hello_afu sample AFU’s README file to
quickly get started with ASE:
$OPAE_PLATFORM_ROOT/hw/samples/hello_afu/README
Related Information
• Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE) User Guide
• Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE) Quick Start
Guide
For Intel PAC with Intel Arria 10 GX FPGA
• Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE) Quick Start
User Guide
For Intel FPGA PAC D5005.
For a description of the full set of command line options and semantics, see the
afu_synth_setup command help:
afu_synth_setup -h
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
32
5. Developing AFUs with the OPAE SDK
UG-20169 | 2019.08.05
You need to regenerate the build environment with the afu_synth_setup command
if the platform configuration file has been modified. You also generally need to
regenerate the build environment if the build configuration file has been modified
except in the case where only the design file set has changed (source file addition,
deletion, move). If only the design file set has been modified, reflect those changes in
the build configuration file, and use the rtl_src_config command to update the
hw/afu.qsf Quartus Prime Pro settings file in the existing build directory:
cd build_synth
rtl_src_config --qsf --rel build \
<reference-to-updated-build-configuration-file> >hw/afu.qsf
The run.sh AF generation script generates the AF image with the same base filename
as the AFU’s platform configuration file with a .gbs suffix.
The run.sh script indicates the status of timing closure – make sure the generated AF
has no hardware timing violations. Open the dcp.qpf Quartus project file in the
Quartus Prime Pro GUI with the synthesis build project’s afu_fit revision to view the
details of the timing report and perform interactive timing analysis. The Intel Quartus
Prime Pro Edition project directory is located in the build subdirectory of the
synthesis build environment’s top-level directory specified with the
afu_synth_setup command.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
33
UG-20169 | 2019.08.05
Send Feedback
Signal Tap is an in-system logic analyzer that you can use to debug FPGA logic.
Conventional (non-remote) Signal Tap uses the physical FPGA JTAG interface and a
USB cable to bridge the Intel Quartus Prime Signal Tap application running on a host
system with the Signal Tap controller instances embedded in the FPGA logic. With
Remote Signal Tap, you can achieve the same result without physically connecting to
JTAG, which enables signal-level, in-system debug of AFUs deployed in servers where
physical access is limited.
In addition to Signal Tap, the remote debug facility in OPAE supports the following in-
system debug tools included with the Intel Quartus Prime Pro Edition:
• In-system Sources and Probes
• In-system Memory Content Editor
• Signal Probe
• System Console
This section describes how to generate an AF with remote Signal Tap enabled. This
section then describes how to debug a user AFU using OPAE’s mmlink utility, the
System Console utility, and Intel Quartus Prime Pro Edition.
The nlb_mode_0_stp variation of the nlb_400 sample AFU is used to illustrate how
to enable and use remote Signal Tap and can be found in the following location:
$OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/
Related Information
Design Debugging with the Signal Tap Logic Analyzer
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
6. AFU In-System Debug
UG-20169 | 2019.08.05
The nlb_mode_0_stp sample AFU has already been instrumented with Signal Tap
and the .stp file is located in the following OPAE SDK directory:
$OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/hw/par/
stp_basic.stp.
+define+INCLUDE_REMOTE_STP
<path-relative-to-build-config-file>/<stp-filename>.stp
The nlb_mode_0_stp example already has the above settings added to its build
configuration files:
• $OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/hw/rtl/
filelist_mode_0_stp.txt
• $OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/hw/rtl/
filelist_base.txt
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
35
6. AFU In-System Debug
UG-20169 | 2019.08.05
Follow these steps on the debug target host with the PAC installed:
1. If not already done, load the Signal Tap-enabled AFU.
sudo fpgaconf $OPAE_PLATFORM_ROOT/hw/samples/nlb_mode_0_stp/bin/
nlb_mode_0_stp.gbs
2. Open a TCP port to accept incoming connection requests from remote debug
hosts.
sudo mmlink -P 3333 -B <Bus number>
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
36
6. AFU In-System Debug
UG-20169 | 2019.08.05
At this point, you are ready to perform in-system debug with the Signal Tap GUI in the
same manner as with the conventional target connection method.
Use host application C code software designed for the OPAE API to stimulate the AFU
and verify proper operation within the Acceleration Stack. Leave the mmlink tool
running in a separate terminal window on the debug target host while the remote
debug host is connected. The mmlink process continuously output the status to the
terminal window. Invoke OPAE host application or test software from their own
terminal windows on the debug target host.
When using OPAE application/test code running on the debug target host to stimulate
the AFU for the purposes of in-system debug, both the mmlink tool and your host
application/test code must have simultaneous access to the AFU. For this to happen,
any user space code calls to the fpgaOpen() OPAE API function must pass the
FPGA_OPEN_SHARED flag. The Acceleration Stack installation uses the
FPGA_OPEN_SHARED flag with calls to fpgaOpen() in the source code for the
mmlink tool and the hello_fpga sample application, which enables remote debug as
delivered in the installation for the nlb_mode_0_stp example AFU stimulated by the
hello_fpga sample application without modification.
Refer to the following sources in the Acceleration Stack installation for examples of
using the FPGA_OPEN_SHARED flag:
$OPAE_PLATFORM_ROOT/sw/<opae-version>/tools/mmlink/main.cpp
$OPAE_PLATFORM_ROOT/sw/<opae-version>/samples/hello_fpga.c.
Any other sample applications included in the Acceleration Stack installation or host
code of your own design must use the shared flag when used to stimulate the AFU
during in-system remote debug where mmlink is required to run simultaneously.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
37
6. AFU In-System Debug
UG-20169 | 2019.08.05
When you are finished debugging, follow these steps to gracefully end the debug
connection:
You can either keep the mmlink instance active and host debug sessions from other
remote debug hosts, or you can terminate mmlink with the <Ctl-C> key sequence
from its terminal window. If you choose to keep mmlink active, you can only debug
the currently loaded AFU. If you want to debug another AFU, you must first terminate
the active mmlink process. Before loading another AFU, make sure to terminate any
OPAE host application code accessing the current AFU.
The .sdc timing constraint file should be referenced in the build configuration file.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
38
6. AFU In-System Debug
UG-20169 | 2019.08.05
On the debug target host, run mmlink as before. Note that mmlink provides an
option to specify a port number. Port 3333 is the default.
Setup port tunneling on the remote debug host. This example shows how to do so on
a Windows remote debug host using PuTTY.
Use a PuTTY configuration screen as shown in the SSH Tunneling with PuTTY figure.
For <SDP>, enter the name of the debug target host. This forwards the local port on
your Windows host 4444 to port 3333 on the debug target host.
Then, Click Session, specify the name of the debug target host, click Save, and then
Open. Login to the debug target host. This is your tunneling session.
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
39
6. AFU In-System Debug
UG-20169 | 2019.08.05
Once the tunneling session is setup this forwarding is complete. Open a Windows
Command Window and issue the system-console command as shown in the "Save
and Open the Tunneling Session" figure.
As before, the Quartus System Console comes up. Wait for the Remote system
ready message on the tcl console of the System Console.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
40
UG-20169 | 2019.08.05
Send Feedback
Figure 7. Intel PAC with Intel Arria 10 GX FPGA Platform Block Diagram
Intel PAC with Arria 10 GX FPGA
4 GB DDR4 4 GB DDR4
FIM (static region)
Intel Arria 10 GX FPGA
Platform Device
Interfaces Local
Memory DDR4A DDR4B
EMIF EMIF
PR region (AFU Slot)
Local Memory Interface HSSI
Data Paths
HSSI PHY QSFP+
Partial Reconfiguration (AFU Slot)
HSSI Interface
HSSI PLL
CSR
Access Resources Available to the AFU HSSI Reset
ALMs: 391,213 (92% of device total)
M20K Blocks: 2549 (94% of device total) HSSI
DSP Blocks: 1518 (100% of device total) Reconfiguration
PCIe Gen3x8
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
7. Hardware Platform OPAE Specifications
UG-20169 | 2019.08.05
QSFP+
Data Paths HSSI PHY
QSFP+
HSSI Interface
Partial Reconfiguration (AFU Slot)
CSR HSSI PLL
Access
HSSI Reset
HSSI
Reconfiguration
CCI-P Interface, Clocks, Power, Error
PCIe Gen3x16
The FIM is part of the Intel FPGA PAC hardware platform and cannot be modified.
Upon power up, the PR region is preconfigured with an undefined AFU. Host
applications must use OPAE to load an AFU into the PR region.
The FIM bitstream is included in the Acceleration Stack installation and initially
configures the FPGA at power up from configuration flash residing on the Intel FPGA
PAC.
For instructions on flashing the on-board configuration flash with the FIM bitstream,
refer to the Quick Start Guide.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
42
7. Hardware Platform OPAE Specifications
UG-20169 | 2019.08.05
The FIU block in the FIM provides the physical link between the host and the Intel
FPGA PAC, platform management services to OPAE, and a platform agnostic host
interface for the AFU.
The physical link on the Intel PAC with Intel Arria 10 GX FPGA platform is a PCIe Gen3
x 8 interface and the Intel FPGA PAC D5005 supports a PCIe Gen3 x 16 interface with
the SR-IOV.
The CCI-P interface to the AFU provides a platform agnostic host interface that is
bridged to the physical PCIe host link through a fabric in the FIU. The CCI-P interface
allows the AFU to access host memory and provides a means for the host to access
the AFU's memory mapped I/O (MMIO) space.
Refer to the CCI-P Reference Manual for more details on the CCI-P interface protocol.
The High Speed Serial Interface (HSSI) I/O block in the FIM provides network port I/O
to the AFU. The HSSI block utilizes the FPGA multi-gigabit transceiver I/O and can be
configured by OPAE for the PHY modes.
• The Intel PAC with Intel Arria 10 GX FPGA supports following PHY modes:
— Four, 10 Gbps Ethernet ports (4x10GBASE-R PCS/PMA PHY)
— A Single, 40 Gbps Ethernet port (40GBASE-R PMA only)
• The Intel FPGA PAC D5005 supports following PHY mode:
— Eight, 10 Gbps Ethernet ports (8x10GBASE-SR PCS/PMA PHY)
The AFU must implement the MAC layer. For 40 Gbps Ethernet, the PCS PHY layer
must also be implemented in the AFU.
The Intel FPGA PAC platform installation includes two sample AFU designs for
evaluating the network port I/O feature and as an aid getting started designing your
own AFUs with network port I/O capabilities.
See the following sample AFUs in the platform installation and their related user
guides:
• A 4x10GbE Sample AFU and 8x10GbE Sample AFU: $OPAE_PLATFORM_ROOT/hw/
samples/eth_e2e_e10
• A 40GbE Sample AFU (Only available for Intel PAC with Intel Arria 10 GX FPGA):
$OPAE_PLATFORM_ROOT/hw/samples/eth_e2e_e40
The Intel PAC with Intel Arria 10 GX FPGA platform features two DDR4 SDRAM
memory banks, each of 4 GB capacity, and the Intel FPGA PAC D5005 platform
features four DDR4 SDRAM memory banks, each of 8 GB capacity. The SDRAM can be
used by the AFU as a local workspace for large workloads. Each bank can be accessed
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
43
7. Hardware Platform OPAE Specifications
UG-20169 | 2019.08.05
independently by the AFU. Each memory bank interface is 64-bits and operates at
1066 MHz DDR for Intel PAC with Intel Arria 10 GX FPGA platform and at 1200 MHz
DDR for Intel FPGA PAC D5005 platform.
Host software uses OPAE utilities and APIs to load an AF into a PR region in the FIM.
An AF is the combination of an AFU PR bitstream and associated AFU metadata. The
AFU PR bitstream is the output from Intel Quartus Prime Pro Edition PR compilation of
your AFU RTL design with the FIM design database provided in the Acceleration Stack
installation. The AFU metadata is used to provide OPAE information on AFU
characteristics and operational parameters and is defined in a separate JSON file. The
Packager utility included in the Acceleration Stack installation generates the AF from
the AFU PR bitstream and AFU metadata. It is possible to have several AF variations
for a given AFU revision by combining its PR bitstream with unique metadata using the
Packager utility.
The current release of the Intel Acceleration Stack supports dynamically swapping
multiple AFUs within a single PR region for each Intel PAC installed in a system.
For usage information on the Packager utility and JSON file metadata format,
supported keyword parameters, and minimum metadata requirements, refer to the
packager tab in the Open Programmable Acceleration Engine (OPAE) Tools Guide.
Related Information
Open Programmable Acceleration Engine (OPAE) Tools Guide
The PR region in the FIM has the following FPGA resources available to the AFU design
for two different Intel FPGA PAC platforms.
Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA Send Feedback
Programmable Acceleration Card (Intel® FPGA PAC)
44
7. Hardware Platform OPAE Specifications
UG-20169 | 2019.08.05
hssi
cci-p clocks power error
These interfaces are organized into a list of module ports consisting of various OPAE
device classes. Each device class has one or more interfaces available, which the AFU
requests from the platform in its design specification.
The SystemVerilog top-level AFU module port list definitions for each of the following
device class and interface offerings is documented in the following README included in
the Acceleration Stack installation: $OPAE_PLATFORM_ROOT/sw/<OPAE version>/
platforms/afu_top_ifc_db/README.md
Send Feedback Accelerator Functional Unit (AFU) Developer’s Guide for Intel® FPGA
Programmable Acceleration Card (Intel® FPGA PAC)
45
UG-20169 | 2019.08.05
Send Feedback
1.2 Accelerator Functional Unit (AFU) Developer's Guide for Intel Programmable Acceleration Card
with Intel Arria 10 GX FPGA
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.
UG-20169 | 2019.08.05
Send Feedback
2019.08.05 2.0 (supported with Intel Quartus Prime Pro • Added support for the Intel FPGA PAC D5005
Edition 18.1.2) and 1.2 (supported with Intel platform in the current release.
Quartus Prime Pro Edition 17.1.1) • Updated section FPGA Tools and IP
Requirements.
• Added new Figure: High Level Block Diagram
of AFU.
• Clarified the burst support information in
section The local-memory Device Class.
• Updated Figure: Save and Open the Tunneling
Session.
• Corrected a document title in section Related
Documentation:
From HSSI User Guide for Intel Programmable
Acceleration Card with Intel Arria 10 GX FPGA
to Networking Interface for Open
Programmable Acceleration Engine: Intel
Programmable Acceleration Card with Intel
Arria 10 GX FPGA.
2019.05.06 1.2 (supported with Intel Quartus Prime Pro Corrected the number of burst the local memory
Edition 17.1.1) interface supports in section The local-memory
Device Class.
2019.04.09 1.2 (supported with Intel Quartus Prime Pro Fixed broken PDF link in section Accelerator
Edition 17.1.1) Functional Unit (AFU) Developer's Guide for Intel
FPGA Programmable Acceleration Card (Intel
FPGA PAC) Archives.
2019.01.08 1.2 (supported with Intel Quartus Prime Pro Minor edits.
Edition 17.1.1)
2018.12.20 1.2 (supported with Intel Quartus Prime Pro Updated reference link to the Packager utility tab
Edition 17.1.1) in The PR Region section.
2018.12.04 1.2 (supported with Intel Quartus Prime Pro Maintenance release
Edition 17.1.1)
2018.08.06 1.1 (supported with Intel Quartus Prime Pro Initial release
Edition 17.1.1)
Intel Corporation. All rights reserved. Agilex, Altera, Arria, Cyclone, Enpirion, Intel, the Intel logo, MAX, Nios,
Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or
other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in ISO
accordance with Intel's standard warranty, but reserves the right to make changes to any products and services 9001:2015
at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any Registered
information, product, or service described herein except as expressly agreed to in writing by Intel. Intel
customers are advised to obtain the latest version of device specifications before relying on any published
information and before placing orders for products or services.
*Other names and brands may be claimed as the property of others.