Intel® High Level Synthesis Compiler Standard Edition: Reference Manual

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

4.6. Unstable and Stable Component Arguments

If you do not specify the intended behavior for an argument, the default behavior of an argument is unstable. An unstable argument can change while there is live data in the component (that is, between pipelined function invocations).

You can declare an interface argument to be stable with the hls_stable_argument attribute. A stable interface argument is an argument that does not change while your component executes, but the argument might change between component executions.

You can mark the following the interface arguments as stable:
  • Scalar (conduit) arguments
  • Pointer interface arguments

    The address conduit input is stable. The associated Avalon MM Master interface is not affected.

  • Pass-by-reference arguments

    The address conduit input is stable. The associated Avalon MM Master interface is not affected.

  • Avalon® Memory-Mapped (MM) Master interface arguments

    The address conduit input is stable. The associated Avalon MM Master interface is not affected.

  • Avalon® Memory-Mapped (MM) Slave register interface arguments
The following interface arguments cannot be marked as stable:
  • Avalon® Memory-Mapped (MM) Slave memory interface arguments
  • Avalon® Streaming interface arguments

You might save some FPGA area in your component design when you declare an interface argument as stable because there is no need to carry the data with the pipeline.

You cannot have two component invocations in flight with different stable arguments between the two component invocations.

Argument Label Description
hls_stable_argument A stable argument is an argument that does not change while there is live data in the component (that is, between pipelined function invocations).