Intel® High Level Synthesis Compiler Pro Edition: Reference Manual

ID 683349
Date 12/19/2022

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

Document Table of Contents

E. Document Revision History of the Intel® HLS Compiler Pro Edition Reference Manual

Document Version Intel® HLS Compiler Pro Edition Version Changes
2022.12.19 22.4
  • Added pending deprecation notice.
  • Updated <quartus_installdir> path information for Version 22.4.
2022.09.23 22.3
  • Maintenance release.

    Updated <quartus_installdir> path information for Version 22.3.

2022.06.20 22.2
2022.03.28 22.1
  • Enhanced the description of the ihc::firstSymbolInHighOrderBits parameter to indicate that effect of setting of this parameter can be seen only in the simulation waveforms of your design.
  • Updated Memory-Mapped Host Testbench Constructor to remove description of the use_socket parameter. This parameter is not required.
2021.12.13 21.4
2021.10.04 21.3
  • Updated the description of the --simulator command option to include Siemens* EDA Questa* support.
2021.05.21 21.2
  • Added limitation for casting hls_float datatypes to unsigned integer datatypes to Arbitrary Precision Math Support.
  • Revised references to Avalon Interfaces to align with new Avalon Interconnect terminology. Avalon master interfaces are now Avalon host interfaces, and Avalon slave interfaces are now Avalon agent interfaces.
  • Renamed the interfaces to align with the new Avalon Interconnect terminology. Interfaces using the old terminology are deprecated. Interfaces using the new terminology have been introduced as replacements as follows:
    Table 82.   Intel® HLS Compiler Interface Changes
    Deprecated Interface Replacement Interface
    hls_avalon_slave_component hls_avalon_agent_component
    hls_avalon_slave_register_argument hls_avalon_agent_register_argument
    hls_avalon_slave_memory_argument hls_avalon_agent_memory_argument
    mm_master mm_host

    If you use the deprecated interfaces, you might get warning messages when you compile your component.

2021.03.29 21.1
2020.12.14 20.4
2020.09.28 20.3
2020.06.22 20.2
2020.05.13 20.1
2020.04.13 20.1
2020.02.10 19.4
2020.01.27 19.4
2019.12.16 19.4

Document Revision History for Intel® HLS Compiler Reference Manual

Previous versions of the Intel® HLS Compiler Reference Manual contained information for both Intel® HLS Compiler Standard Edition and Intel® HLS Compiler Pro Edition.

Document Version Intel® Quartus® Prime Version Changes
2019.09.30 19.3
2019.09.10 19.2
2019.07.01 19.2
2019.06.04 19.1
  • In Slave Memories, clarified the use of memory attributes for slave memories.
  • In Component Memories (Memory Attributes), clarified memory attributes support in Intel® HLS Compiler Pro Edition and Intel® HLS Compiler Standard Edition.
2019.05.03 19.1
2019.04.01 19.1
2019.01.03 18.1.1
2018.12.24 18.1.1
  • Removed information about the "HLS/iostream" header file. The function provided by this header file is replaced by using the standard C++ iostream header and the HLS_SYNTHESIS macro.
  • Added description of the HLS_SYNTHESIS macro to C and C++ Libraries.
2018.12.24 18.1
2018.09.24 18.1
  • The Intel® HLS Compiler has a new front end. For a summary of the changes introduced by this new front end, see Improved Intel HLS Compiler Front End in the Intel® HLS Compiler Version 18.1 Release Notes.
  • The --promote-integers flag and the best_practices/integer_promotion tutorial are no longer supported in Pro Edition because integer promotion is now done by default. The flag and tutorial are still supported in Standard Edition.
  • Components invoked with the hls_avalon_slave_component argument must take slave or stable arguments. If the component arguments are not slave or stable arguments, compiling the component generates an error message. The description of the hls_avalon_slave_component argument in Component Invocation Interface Control Attributes and Quick Reference now reflects that requirement.
  • In Loops in Components, clarified the pragma statements that apply to loops must immediately precede the loop that the pragma applies to.
  • In Declaring ac_int Data Types, added initialization requirement for ac_int variables larger than 64 bits. You must use ac::init_array constructors to initialize ac_int variables larger than 64 bits.
  • In Static Variables, removed the restriction on applying memory attributes to file-scoped static variables. Both file-scoped and function-scoped static variables can have memory attributes applied to them.
2018.07.08 18.0
  • In Static Variables, highlighted paragraph that says that memory attributes applied to static variables work only if the static variable is declared within the component function.
  • In Control and Status Register (CSR) Agent, corrected a typo. The sentence " You do not need to use the hls_avalon_slave_component attribute to use the hls_avalon_slave_component attribute" was corrected to say "You do not need to use the hls_avalon_slave_component attribute to use the hls_avalon_slave_register_argument attribute".
2018.05.07 18.0
  • Starting with Intel® Quartus® Prime Version 18.0, the features and devices supported by the Intel® HLS Compiler depend on what edition of Intel® Quartus® Prime you have. Intel® HLS Compiler publications now use icons to indicate content and features that apply only to a specific edition as follows:
    Indicates that a feature or content applies only to the Intel® HLS Compiler provided with Intel® Quartus® Prime Pro Edition.
    Indicates that a feature or content applies only to the Intel® HLS Compiler provided with Intel® Quartus® Prime Standard Edition.
  • Corrected the code example in Intel® HLS Compiler Streaming Input Interfaces Code Example. The corrected line is int x = a.tryRead(success); (was int x = a.tryRead(&success);).
  • Added a footnote to the [FB519042-march MAX10[FB519042] option in Command Options] about a prerequisite required before you synthesize your component IP for Intel® MAX® 10 devices.
2017.12.22 17.1.1
  • Updated hls_avalon_slave_memory_argument(N) description in Slave Memories to include the description that the parameter value N is the size of the memory in bytes.
2017.11.06 17.1
  • Updated Supported Math Functions as follows:
    • Noted that the HLS/extendedmath.h header file is supported only by the Intel® HLS Compiler, not by the GCC or MSVC compilers.
    • Added popcount to the list functions supported by the HLS/extendedmath.h header file.
    • Expanded list of functions provided by HLS/extendedmath.h to explicitly list double-precision and single-precision floating point versions of the functions.
    • Added a list of popcount function variations available for different data types.
  • Reorganized the overall structure of the book, breaking up chapter 1 into smaller chapters and changing the order of the chapters.
  • Updated mentions of the HLS or i++ installation directory to use the Intel® Quartus® Prime Design Suite installation directory as the starting point.
  • Moved the following content to Intel® High Level Synthesis Compiler Best Practices Guide:
  • Updated Static Variables to add information about static variable initialization and how to control it.
  • Minor changes and corrections.
  • Removed all mentions of --device compiler option. This option has been replaced by the changed function of the -march compiler option. See Intel HLS Compiler Pro Edition Command Options for details about the changed function of the -march compiler option.
  • In Scalar Parameters and Avalon Streaming Interfaces, updated information in the Available Scalar Parameters for Avalon-ST Interfaces table.
  • In Pointer Parameters, Reference Parameters, and Avalon Memory-Mapped Master Interfaces, updated information in the Available Template Arguments for Configuration of the Avalon-MM Interface table.
  • Added new information to Global Variables about area usage and optimizing for global constants, pointers, and variables.
  • In HLS Compiler Command Options, modified the table Command Options that Customize Compilation in the following manner:
    • Removed the --rtl-only command option and its description because it is no longer in use.
    • Added the --simulator <name> command option and its description.
    • Remove the -g command option because the HLS compiler now generates debug information in reports by default for both Windows and Linux. In addition, debug data is available by default in final binaries for Linux.
  • In Pointer Parameters, Reference Parameters, and Avalon Memory-Mapped Master Interfaces, added information on the altera::align<value> template argument in the table.
  • Added the topics Memory-Mapped Test Bench Constructor and Implicit and Explicit Examples of Creating a Memory-Mapped Master Test Bench.
  • In Usage Examples of Component Invocation Protocol Macros, replaced component invocation protocol attributes in the code examples with their corresponding macros.
  • Added the line #include "HLS/hls.h" to the code snippets in the following sections:
    • Usage Examples of Interface Synthesis Macros
    • Usage Examples of Component Invocation Protocol Macros
  • Added the topic Arbitrary Precision Integer Support to introduce the ac_int datatype and the Intel-provided ac_int.h header file. Included the following subtopics:
    • Defining the ac_int Datatype in Your Component for Arbitrary Precision Integer Support
    • Important Usage Information on the ac_int Datatype
  • Updated the content in Area Minimization and Control of On-Chip Memory Architecture:
    • Replaced the numreadports(n) and numwriteports(n) entries the Attributes for Controlling On-Chip Memory Architecture table with a single numports_readonly_writeonly(m,n) entry.
    • Added information on the hls_simple_dual_port_memory macro.
    • Added information on the hls_merge ("label","direction") and the hls_bankbits(b0, b1, ..., bn) attributes.
  • Added example use cases for the hls_merge("label","direction") and the hls_bankbits(b0, b1, ..., bn) attributes.
  • Added the topic Relationship between hls_bankbits Specifications and Memory Address Bits to explain the derivation of a memory address in the presence of the hls_bankbits and hls_bankwidth attributes.
2016.09.12 Initial release.