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.

Document Table of Contents

Modify the Handshaking Protocol Between Clusters (-Xshyper-optimized-handshaking)

To modify the handshaking protocol between clusters, use the -Xshyper-optimized-handshaking=<auto|off|on> option in your icpx command. The -Xshyper-optimized-handshaking option can be set to one of the following values:

  • auto: The Intel® oneAPI DPC++/C++ Compiler chooses whether to enable or disable the optimization. This is the default behavior for all flows except the minimum latency optimization flow.
  • on: The compiler enables the optimization if possible. Use this value to achieve a higher fMAX. When you enable the optimization, the compiler adds pipeline registers to the handshaking paths of the stallable nodes. As a result, you observe higher fMAX at the cost of increased area and latency.
  • off: The compiler attempts to optimize for lower latency at the potential cost of lower fMAX. Disabling hyper-optimized handshaking might also decrease area. This is useful for smaller designs where you are willing to give up fMAX for lower latency and area. This is the default for the minimum latency optimization flow.

Examples

icpx -fsycl -fintelfpga -Xshardware -Xshyper-optimized-handshaking=auto <source_file>.cpp
icpx -fsycl -fintelfpga -Xshardware -Xshyper-optimized-handshaking=off <source_file>.cpp
icpx -fsycl -fintelfpga -Xshardware -Xshyper-optimized-handshaking=on <source_file>.cpp

NOTE:

The -Xshyper-optimized-handshaking option applies only to designs targeting Intel® Stratix® 10 and Intel Agilex® 7 devices. If you use this option on other target devices, the compiler fails and produces an error. This option applies only when running the report or hardware flow.