Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

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

4.1. Component Invocation Interface

For each function that you label as a component, the Intel® HLS Compiler creates a corresponding RTL module. This RTL module must have top-level ports, or interfaces, that allow your overall system to interact with your HLS component.
By default, the RTL module for an HLS component includes the following interfaces and data:
  • A call interface that consists of start and busy signals. The call interface is sometimes referred to as the do stream.
  • A return interface that consists of done and stall signals. The return interface is sometimes referred to as the return stream.
  • Return data if the component function has a return type that is not void
The following diagram shows a component with the default call and return interfaces:

Alternatively, by declaring your component as an hls_avalon_agent_component component, your component can have signals registered in the component agent memory map instead. In an hls_avalon_agent_component component, the start, done, and returndata signals appear in the component control and status registers (CSR) instead of as conduits outside of the component.

For a comparison of the invocation interfaces, see Interface Definition Example: Component Invocation Interface Control Attributes.

For an example of a component interface with scalar and pointer arguments, see Interface Definition Example: Component with Both Scalar and Pointer Arguments.

Interfaces and Generated RTL

Your component function parameters generate different RTL depending on their type. For details see the following sections:
You can also explicitly declare Avalon Streaming interfaces (using stream_in<> and stream_out<> classes) and Avalon Memory-Mapped Host (using mm_host<> classes) interfaces on component interfaces. For details see the following sections:

Component Invocation Interface Control Attributes

You can indicate the control signals that correspond to the actions of calling your component by using one of the component invocation interface attributes.

Unless a component parameter is marked stable (with the hls_stable_argument attribute), the component parameter inputs are synchronized according to this component invocation protocol.

Table 7.   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.