Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

ID 683349
Date 6/26/2023
Public

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

Document Table of Contents

11.4.1.4.1.1. Interaction Between ALLOW_MERGINGand HAS_SIDE_EFFECTS Elements

The ALLOW_MERGING and HAS_SIDE_EFFECTS elements help the Intel® HLS Compiler optimize hardware use of your RTL component. Consider the effects of these element carefully when setting their values.

The combination you select depends on your design architecture. For example, you can tell the compiler that you want the compiler to replicate the RTL block for multiple calls or vectorized code.

Table 30.   ALLOW_MERGING and HAS_SIDE_EFFECTS Combinations and Their Effect
ALLOW_MERGING Value HAS_SIDE_EFFECTS Value Combination Effect
no no

Each call to an RTL library corresponds to one distinct instance in the hardware.

Calls might be optimized away by the compiler if deemed redundant or unnecessary.

Calls might be vectorized, with multiple instances in the hardware created for a single RTL library call.

no yes

Each call to an RTL library corresponds to one distinct instance in hardware.

Calls are not optimized away by the compiler.

yes no

Multiple calls to an RTL library might be merged into one call, and hence correspond to one instance in the hardware.

Calls might be optimized away by the compiler if deemed redundant or unnecessary.

Calls might be vectorized, with multiple instances in the hardware created for a single RTL library call.

yes yes

Multiple calls to an RTL library might be merged into one call, and hence correspond to one instance in hardware.

Calls are not optimized away by the compiler.