SDS Pragmas
Optimizations in SDSoC
This section describes pragmas for the SDSoC system compilers, sdscc
and
sds++
, to assist system optimization.
The SDSoC system compilers target a base platform and invoke the Vivado® High-Level Synthesis (HLS) tool to compile synthesizeable C/C++ functions into programmable logic. Using the SDSoC IDE, or sdscc/sds++ command line options, you select functions from your source program to run in hardware, specify accelerator and system clocks, and set properties on data transfers.
In the SDSoC environment, you control the system generation process by structuring hardware functions and calls to hardware functions to balance communication and computation, and by inserting pragmas into your source code to guide the system compiler. The SDSoC compiler automatically chooses the best possible system port to use for any data transfer, but allows you to override this selection by using pragmas. You can also specify pragmas to select different data movers for your hardware function arguments, and use pragmas to control the number of data elements that are transferred to/from the hardware function.
All pragmas specific to the SDSoC environment are prefixed with #pragma
SDS
and should be inserted into C/C++ source code, either immediately prior to a
function declaration or at a function call site for optimization of a specific function
call.
#pragma SDS data access_pattern(in_a:SEQENTIAL, out_b:SEQUENTIAL)
void f1(int in_a[20], int out_b[20]);
Type | Pragmas |
---|---|
Data Access Patterns | |
Data Transfer Size | |
Memory Attributes | |
Data Mover Type | |
SDSoC Platform Interfaces to External Memory | |
Hardware Buffer Depth | |
Asynchronous Function Execution | |
Specifying Resource Binding | |
Partition Specification |