Visible to Intel only — GUID: isd1572910036492
Ixiasoft
Visible to Intel only — GUID: isd1572910036492
Ixiasoft
10.11. Intel® HLS Compiler Standard Edition Component Macros
Feature | Description |
---|---|
hls_conduit_argument | Implement the argument as an input conduit that is synchronous to the component call (start and busy). |
hls_avalon_slave_register_argument | Implement the argument as a register that can be read from and written to over an Avalon-MM slave interface. |
hls_avalon_slave_memory_argument | Implement the argument, in on-chip memory blocks, which can be read from or written to over a dedicated slave interface. |
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). |
hls_conduit_argument Component Macro
- Syntax
- hls_conduit_argument
- Description
-
This is the default interface for scalar arguments.
The compiler implements the argument as an input conduit that is synchronous to the component's call (start and busy).
- Example
-
component void foo( hls_conduit_argument int b)
hls_avalon_slave_register_argument Component Macro
- Syntax
- hls_avalon_slave_register_argument
- Description
-
The compiler implements the argument as a register that can be read from and written to over an Avalon-MM slave interface. The argument will be read into the component's pipeline, similar to the conduit implementation. The implementation is synchronous to the start and busy interface.
Changes to the value of this argument made by the component data path will not be reflected on this register.
To learn more, review the tutorial: <quartus_installdir>/hls/examples/tutorials/interfaces/mm_slaves.
- Example
-
component void foo( hls_avalon_slave_register_argument int b)
hls_avalon_slave_memory_argument Component Macro
- Syntax
- hls_avalon_slave_memory_argument(N)
- Description
-
The compiler implements the argument, where N specifies the size of the memory in bytes, in on-chip memory blocks, which can be read from or written to over a dedicated slave interface. The generated memory has the same architectural optimizations as all other internal component memories (such as banking or coalescing).
If the compiler performs static coalescing optimizations, the slave interface data width is the coalesced width. This attribute applies only to a pointer argument.
To learn more, review the tutorial: <quartus_installdir>/hls/examples/tutorials/interfaces/mm_slaves.
- Example
-
component void foo( hls_avalon_slave_memory_argument(128*sizeof(int)) int *a)
hls_stable_argument Component Macro
- Syntax
- hls_stable_argument
- Description
-
A stable argument is an argument that does not change while there is live data in the component (that is, between pipelined function invocations).
Changing a stable argument during component execution results in undefined behavior; each use of the stable argument might be the old value or the new value, but with no guarantee of consistency. The same variable in the same invocation can appear with multiple values.
Using stable arguments, where appropriate, might save a significant number of registers in a design.Stable arguments can be used with conduits, mm_master interfaces, and slave_registers.
To learn more, review the tutorial: <quartus_installdir>/hls/examples/tutorials/interfaces/stable_arguments.
- Example
-
component int dut( hls_stable_argument int a, hls_stable_argument int b) { return a * b;}