Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

ID 683349
Date 4/01/2024
Public
Document Table of Contents

11.4.1.4.1. XML Elements for ATTRIBUTES

In the RTL module properties file of the RTL module within an HLS library, there are XML elements under ATTRIBUTES that you can specify to set module characteristics.
Table 29.  XML Elements for the RTL module properties file ATTRIBUTES Element
XML Element Description
IS_STALL_FREE

Instructs the Intel® HLS Compiler to remove all stall logic around the RTL module.

Set IS_STALL_FREE to "yes" to indicate that the module does not generate stalls internally and it cannot properly handle incoming stalls. The module ignores the stall input.

If you set IS_STALL_FREE to "no", the module must properly handle all stall and valid signals.

If you set IS_STALL_FREE to "yes", you must also set IS_FIXED_LATENCY to "yes". Also, if the RTL module has an internal state, it must properly handle ivalid=0 inputs.

IS_FIXED_LATENCY

Indicates whether the RTL module has a fixed latency.

Set IS_FIXED_LATENCY to "yes" if the RTL module always takes a known number of clock cycles to compute its output. The value you assign to the EXPECTED_LATENCY element specifies the number of clock cycles.

The safe value for IS_FIXED_LATENCY is "no". When you set IS_FIXED_LATENCY="no", the EXPECTED_LATENCY value must be at least 1.

For a given RTL module, you may set IS_FIXED_LATENCY to "yes" and IS_STALL_FREE to "no". Such a module produces its output in a fixed number of clock cycles and handles stall signals properly.

EXPECTED_LATENCY

Specifies the expected latency of the RTL module.

If you set IS_FIXED_LATENCY to "yes", set the EXPECTED_LATENCY value to be the exact latency of the module. Otherwise, the Intel® HLS Compiler generates incorrect hardware.

For a module with variable latency, the Intel® HLS Compiler balances the pipeline around this module to the EXPECTED_LATENCY value that you specify. For modules that can stall and require use of signals such as iready, the EXPECTED_LATENCY value must be set to at least 1.

The specified value and the actual latency might differ for a module with variable latency, which might affect the number of stalls inside the pipeline. However, the resulting hardware is functionally correct.

CAPACITY

Specifies the number of multiple inputs that this module can process simultaneously.

You must specify a value for CAPACITY if you also set IS_STALL_FREE="no" and IS_FIXED_LATENCY="no". Otherwise, you do not need to specify a value for CAPACITY.

If CAPACITY is strictly less than EXPECTED_LATENCY, the Intel® HLS Compiler automatically inserts capacity-balancing FIFO buffers after this module when necessary.

A conservative but safe value for CAPACITY is 1.

HAS_SIDE_EFFECTS Indicates whether the RTL module has side effects. Modules that have internal states or communicate with external memories are examples of modules with side effects.

Set HAS_SIDE_EFFECTS to "yes" to indicate that the module has side effects. Specifying HAS_SIDE_EFFECTS to "yes" ensures that optimization efforts do not remove calls to modules with side effects.

Stall-free modules with side effects (that is, IS_STALL_FREE="yes" and HAS_SIDE_EFFECTS="yes") must properly handle ivalid=0 input cases because the module might receive invalid data occasionally.

A conservative but safe value for HAS_SIDE_EFFECTS is "yes".

This element along with the ALLOW_MERGING element allow the Intel® HLS Compiler to perform certain optimizations. For details, see Interaction Between ALLOW_MERGINGand HAS_SIDE_EFFECTS Elements.

ALLOW_MERGING Indicates that the compiler can merge multiple instances of this RTL module.

Set ALLOW_MERGING to "yes" to allow merging of multiple instances of the module. Intel® recommends setting ALLOW_MERGING to "yes".

The safe value for ALLOW_MERGING is "no".

Marking the module with HAS_SIDE_EFFECTS="yes" does not prevent merging.

This element along with the HAS_SIDE_EFFECTS element allow the Intel® HLS Compiler to perform certain optimizations. For details, see Interaction Between ALLOW_MERGINGand HAS_SIDE_EFFECTS Elements.

PARAMETER

Specifies the value of an RTL module parameter.

PARAMETER attributes:

  • name

    Specifies the name of the RTL module parameter.

  • value

    Specifies a decimal numeric value for the parameter.

The value for an RTL module parameter can be specified using either a value or a type attribute.