Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

ID 683349
Date 12/19/2022
Public

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

Document Table of Contents

13.11. Intel® HLS Compiler Pro Edition Component Invocation Interface Control Attributes

Table 47.   Intel® HLS Compiler Component Invocation Interface Control Attribute Summary
Control Attribute Description
hls_avalon_streaming_component

This is the default component invocation interface.

The component uses start, busy, stall, and done signals for handshaking.

hls_avalon_agent_component The start, done, and returndata (if applicable) signals appear in the component CSR instead of as conduits outside of the signal.
hls_always_run_component The start signal is tied to 1 internally in the component. There is no done signal output.
hls_stall_free_return The stall signal is removed by internally setting it to 0.

Use this control attribute only if the downstream component never stalls.

hls_avalon_streaming_component Invocation Control Attribute

Description

This is the default component invocation interface.

This attribute follows the Avalon® ST protocol for both the function call and the return streams. The component consumes the unstable arguments when the start signal is asserted and the busy signal is deasserted. The component produces the return data when the done signal is asserted.

Top-Level Module Ports
  • Function call:
    • start
    • busy
  • Function return:
    • done
    • stall
Example
component hls_avalon_streaming_component void foo(/*component parameters*/)

hls_avalon_agent_component Invocation Control Attribute

Description
The start, done, and returndata (if applicable) signals are registered in the component agent memory map. Because the signals are registered in the memory map, the start/busy and stall/done handshaking signals are also removed. The removal of these handshaking signals also removes the handshaking signal for the input parameters.
For signals to be synchronized properly, each of the component parameters must be one of the following parameter types:
  • Agent register argument ( hls_avalon_agent_register_argument ), so that the signals are in the register map. This includes Avalon® MM host or pointer interfaces that have the hls_avalon_agent_register_argument parameter applied.
  • Agent memory argument ( hls_avalon_agent_memory_argument ) so that a dedicated Avalon® MM agent interface for handshaking is created.
  • Stable argument ( hls_stable_argument ), to explicitly indicate that the signals do not require handshaking. This includes Avalon® MM host and pointer interfaces that have the hls_stable_argument parameter applied.
  • Streaming interface arguments, so that a dedicated Avalon® ST interface for handshaking is created.

If you do not specify one of these component parameters, the compiler generates an error message when you compile this component.

To learn more, review the tutorial: <quartus_installdir>/hls/examples/tutorials/interfaces/mm_agents.

Top-Level Module Ports
  • Avalon MM agent interface
  • irq_done signal
Example
component hls_avalon_agent_component void foo(/*component parameters*/)

hls_always_run_component Invocation Control Attribute

Description
The start signal is tied to 1 internally in the component. There is no done signal output. The control logic is optimized away when Intel® Quartus® Prime compiles the generated RTL for your FPGA.

Use this protocol when the component data path relies only on explicit streams for data input and output.

IP verification does not support components with this component invocation protocol.

Top-Level Module Ports
None
Example
component hls_always_run_component void foo(/*component parameters*/)

hls_stall_free_return Invocation Control Attribute

Description
If the downstream component never stalls, the stall signal is removed by internally setting it to 0.

This feature can be used with the hls_avalon_streaming_component, hls_avalon_agent_component, and hls_always_run_component arguments. This attribute can be used to specify that the downstream component is stall free.

Top-Level Module Ports
N/A
Example
component hls_stall_free_return int dut(int a, int b)
 { return a * b;}