Intel® High Level Synthesis Compiler Standard Edition: Best Practices Guide

ID 683259
Date 12/18/2019
Public
Document Table of Contents

3. Interface Best Practices

With the Intel® High Level Synthesis Compiler, your component can have a variety of interfaces: from basic wires to the Avalon Streaming and Avalon Memory-Mapped Master interfaces. Review the interface best practices to help you choose and configure the right interface for your component.

Each interface type supported by the Intel® HLS Compiler Standard Edition has different benefits. However, the system that surrounds your component might limit your choices. Keep your requirements in mind when determining the optimal interface for your component.

Demonstrating Interface Best Practices

The Intel® HLS Compiler comes with tutorials that give you working examples to review and run. They demonstrate good coding practices and illustrate important concepts.

Review the following tutorials to learn about different interfaces as well as best practices that might apply to your design:
Tutorial Description
You can find these tutorials in the following location on your Intel® Quartus® Prime system:
<quartus_installdir>/hls/examples/tutorials
interfaces/ overview Demonstrates the effects on quality-of-results (QoR) of choosing different component interfaces even when the component algorithm remains the same.
best_practices/ parameter_aliasing Demonstrates the use of the restrict keyword on component arguments.
interfaces/ explicit_streams_buffer

Demonstrates how to use explicit stream_in and stream_out interfaces in the component and testbench.

interfaces/explicit_streams_packets_ready_valid Demonstrates how to use the usesPackets, usesValid, and usesReady stream template parameters.
interfaces/ mm_master_testbench_operators Demonstrates how to invoke a component at different indicies of an Avalon Memory Mapped (MM) Master (mm_master class) interface.
interfaces/ mm_slaves Demonstrates how to create Avalon-MM Slave interfaces (slave registers and slave memories).
interfaces/ multiple_stream_call_sites Demonstrates the tradeoffs of using multiple stream call sites.
interfaces/ pointer_mm_master Demonstrates how to create Avalon-MM Master interfaces and control their parameters.
interfaces/ stable_arguments Demonstrates how to use the stable attribute for unchanging arguments to improve resource utilization.