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

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.