| aiengine Vitis Drivers API Documentation

- Overview
- Data Structures
- APIs
- File List

aiengine Documentation

Math Engine (ME) Run Time Software (RTS) Driver is a congregation of software based APIs for the PS application to configure/initialize/program the AIE array and shim.The layered software stack of the AIE RTS driver is shown below :

## | Application layer (Cardano interface/PS app call) |

|

## |

## | AIE RTS driver |

|

## |

## | AIE simulator / LibMetal |

The Driver APIs are typically invoked by the Cardano tool flow as part of the PS application generation. The APIs can also be directly invoked by the user application for performing any runtime configuration like partial reconfiguration etc.

AIE driver is partitioned into the following sub-components :

- AIE Global Driver
  - APIs for device/configuration lookup, global driver instantiation and initialization and generic APIs commonly used by other components
- AIE Tile Driver
  - APIs for configuring the Tile resources: Core, Program memory, Data memory, Locks, Stream switch, Events
  - APIs for configuring the Shim resources: NoC and PL interfaces, Stream switch, Events
- AIE DMA Driver
  - APIs for configuring the Tile DMA S2MM and MM2S channels
  - APIs for configuring Shim DMA S2MM,MM2S channels and Locks
- AIE low level library layer
  - APIs to interface with the underlying target platform

AIE driver will be common for all the Math Engine devices. So in the similar lines of xparameters.h for other standalone drivers, AIE driver also needs the following device related parameters :

- AIE Array base address
- Number of Rows
- Number of Columns
- Interrupt IDs

These parameters can be passed to the AIE driver in the similar lines of any other standalone driver i.e., in the form of compile time parameters from xparameters.h or in the form of a runtime configuration object etc.

AIE RTS driver provides a suite of APIs to be invoked by the application layer and also a low level interface abstraction for the driver APIs to interface with the low level target specific APIs. These low level target APIs are in turn used to talk to the underlying target platform with typical AXI read and write transactions.

Following are the features of the AIE RTS driver APIs :

- Non re-entrant and not thread safe
- Implemented as bare-metal
- Implemented as blocking calls

    MODIFICATION HISTORY:

    Ver   Who     Date     Changes

    1.0  Naresh  03/14/2018  Initial creation
    1.1  Naresh  04/12/2018  Code changed to fix CR#999685
    1.2  Naresh  05/23/2018  Updated code to fix CR#999693
    1.3  Naresh  06/18/2018  Updated code as per standalone driver framework
    1.4  Naresh  07/11/2018  Updated copyright info
    1.5  Nishad  12/05/2018  Renamed ME attributes to AIE
    1.6  Wendy   01/10/2020  Add tile location type
    1.7  Wendy   01/20/2020  Add events handlers for each events
    1.7  Wendy   02/24/2020  Add errors handlers for each error