Developer Guide

FPGA Optimization Guide for Intel® oneAPI Toolkits

ID 767853
Date 3/31/2023
Public

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

Visible to Intel only — GUID: GUID-7B26BD51-9D88-407D-A793-7B9F19CF9C44

Document Table of Contents

Minimum Latency Flow

The minimum latency flow attempts to minimize your kernel latency at the cost of decreased fMAX. Use this flow to optimize latency-sensitive designs.

To compile your design with the minimum latency flow, pass the -Xsoptimize=latency flag to the icpx command, as shown in the following example:

icpx -fsycl -fintelfpga -Xshardware -Xsoptimize=latency <source_file>.cpp

The minimum latency flow applies the following compiler controls:

  • Disable hyper-optimized handshaking on Intel® Stratix® 10 and Intel Agilex® 7 devices.
  • Use zero-latency stall-free clusters exit FIFO.
  • Disable loop speculation.
  • Removes any pipeline registers that can introduce single-cycle bubbles in pipelined loops.

The following table shows how you can manually override these underlying controls:

Control Flag Attributes
Hyper-optimized handshaking -Xshyper-optimized-handshaking=<auto|off|on>
Exit FIFO latency of stall-free clusters -Xssfc-exit-fifo-type=<default|zero-latency|low-latency>
Loop speculation [[intel::speculated_iterations(N)]]
Single-cycle bubbles in pipelined loops N/A
NOTE:

These manual controls are beneficial in overriding one or more of the underlying controls without affecting other underlying controls implied by the -Xsoptimize=latency compiler flag.

TIP:

For additional information, refer to the FPGA tutorial sample "Minimum Latency Flow" listed in the Intel® oneAPI Samples Browser on Linux* or Windows*, or access the code sample on GitHub.