Visible to Intel only — GUID: rwu1548359133943
Ixiasoft
Visible to Intel only — GUID: rwu1548359133943
Ixiasoft
13.12. Intel® HLS Compiler Pro Edition Component Macros
Macro | Description |
---|---|
hls_avalon_agent_register_argument | Implement the parameter as a register that can be read from and written to over an Avalon® memory-mapped (MM) agent interface. |
hls_avalon_agent_memory_argument | Implement the parameter, in on-chip memory blocks, which can be read from or written to over a dedicated agent interface. |
hls_conduit_argument | Implement the parameter as an input conduit that is synchronous to the component call (start and busy). |
hls_readwrite_mode | Indicate to the compiler how the agent memory interface is accessed by external Avalon® memory-mapped (MM) hosts. |
hls_stable_argument | A stable parameter is a parameter that does not change while there is live data in the component (that is, the argument does not change between pipelined function invocations). |
hls_avalon_agent_register_argument Component Macro
- Syntax
- hls_avalon_agent_register_argument
- Description
-
The compiler implements the parameter as a register that can be read from and written to over an Avalon MM agent interface. The parameter will be read into the component pipeline, similar to the conduit implementation. The implementation is synchronous to the start and busy interface.
Changes to the value of this parameter 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_agents.
- Example
-
component void foo( hls_avalon_agent_register_argument int b)
hls_avalon_agent_memory_argument Component Macro
- Syntax
- hls_avalon_agent_memory_argument(N)
- Description
-
The compiler implements the parameter, 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 agent 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 agent interface data width is the coalesced width. This attribute applies only to a pointer parameter.
To learn more, review the tutorial: <quartus_installdir>/hls/examples/tutorials/interfaces/mm_agents.
- Example
-
component void foo( hls_avalon_agent_memory_argument(128*sizeof(int)) int *a)
hls_conduit_argument Component Macro
- Syntax
- hls_conduit_argument
- Description
-
This is the default interface for scalar parameters.
The compiler implements the parameter as an input conduit that is synchronous to the component call (start and busy).
- Example
-
component void foo(hls_conduit_argument int b)
hls_readwrite_mode Component Macro
- Syntax
- hls_readwrite_mode("type")
- Description
-
This macro applies only to agent memory interfaces.
Indicates to the compiler how the agent memory interface is accessed by external memory hosts. This information can help the compiler build a more efficient memory system and might save FPGA area for your component.
The type parameter can take any one of the following values:- readonly
Indicates that the external Avalon® memory-mapped (MM) host interface only ever reads from the agent memory.
- writeonly
Indicates that the external Avalon® MM host interface only ever writes to the agent memory.
- readonly
- Example
-
component void foo(hls_avalon_agent_memory_argument(128*sizeof(int)) hls_readwrite_mode(“writeonly”) int *A)
hls_stable_argument Component Macro
- Syntax
- hls_stable_argument
- Description
-
A stable parameter is an parameter that does not change while there is live data in the component (that is, the component argument does not change between pipelined function invocations).
Changing a stable parameter during component execution results in undefined behavior; each use of the stable parameter 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 parameters, where appropriate, might save a significant number of registers in a design.Stable parameters can be used with conduits, Avalon® MM host interfaces, and agent_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;}