Data Motion Network Generation in SDSoC

This section describes the components that make up the data motion network in the SDSoC™ environment. It helps the user understand the data motion network generated by the SDSoC compiler. The section also provides guidelines to help you guide the data motion network generation by using appropriate SDSoC pragmas.

Every transfer between the software program and a hardware function requires a data mover, which consists of a hardware component that moves the data, and an operating system-specific library function. The following table lists supported data movers and various properties for each.

Figure: SDSoC Data Movers Table

Scalar variables are always transferred over an AXI4-Lite bus interface with the axi_lite data mover. For array arguments, the data mover inference is based on transfer size, hardware function port mapping, and function call site information. The selection of data movers is a trade off between performance and resource, for example:
  • The axi_dma_simple data mover is the most efficient bulk transfer engine, but only supports up to 8 MB transfers, so it is only for larger transfers.
  • The axi_fifo data mover does not require as many hardware resources as the DMA, but due to its slower transfer rates, is preferred only for payloads of up to 300 bytes.
  • The axi_dma_sg (scatter-gather DMA) data mover provides slower DMA performance and consumes more hardware resources but has fewer limitations, and in the absence of any pragma directives, is often the best default data mover.


You can override the data mover selection by inserting a pragma into program source immediately before the function declaration, for example,
#pragma SDS data data_mover(A:AXIDMA_SIMPLE)
Note: #pragma SDS is always treated as a rule, not a hint, so you must ensure that their use conforms with the data mover requirements in the preceding figure (SDSoC Data Movers Table).
The data motion network in the SDSoC environment is made up of three components:
  • The memory system ports on the PS (A)
  • Data movers between the PS and accelerators as well as among accelerators (B)
  • The hardware interface on an accelerator (C)

The following figure illustrates these three components.

Figure: Data Motion Network Components

Without any SDS pragma, the SDSoC environment generates the data motion network based on an analysis of the source code. However, the SDSoC environment also provides pragmas for you to guide the data motion network generation.