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
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.
,
#pragma SDS data data_mover(A:AXIDMA_SIMPLE)
#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 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
![](http://www.rushcopely.com/html_docs/xilinx2017_1/sdsoc_doc/topics/images/data-mover-network.png)
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.