Robuta

https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/AI-Engine-Data-Types?contentId=UZCB9IaSxwTdko_xL6Q2Eg AI Engine Data Types - AI Engine Data Types - 2021.1 English - UG1079 The AI Engine scalar unit supports signed and unsigned integers in 8, 16, and 32-bit widths, along with some single-precision floating-point for specific... ai enginedata typesenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/FIFO-Depth?contentId=pT3Shosq9blXnZzrkD3bUQ FIFO Depth - FIFO Depth - 2022.2 English - UG1079 The AI Engine architecture uses stream data extensively for DMA-based I/O, for communicating between two AI Engines, and for communicating between the AI... fifodepthenglish https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/Vectorization?contentId=GdIfruG_F~moKn_D758prA Vectorization - Vectorization - 2021.1 English - UG1079 The scalar reference code for this matrix multiplication example is shown as follows. Note that the data is stored in columns. void... vectorizationenglish https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/Load-and-Store-From-Memory?contentId=phIotqXX1xw2iGBgBd4o~g Load and Store From Memory - Load and Store From Memory - 2021.1 English - UG1079 AI Engine APIs provide access methods to read and write data from data memory, streaming data ports, and cascade streaming ports which can be used by AI Engine... loadstorememoryenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Data-Shuffle Data Shuffle - Data Shuffle - 2022.2 English - UG1079 The AI Engine shuffle intrinsic function selects data from a single input data buffer according to the start and offset parameters. This allows for flexible... datashuffleenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Kernel-Optimization?contentId=zh3Hh6qOcO3yX3TbD~_LGA Kernel Optimization - Kernel Optimization - 2025.2 English - UG1079 kerneloptimizationenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Vector-Registers Vector Registers - Vector Registers - 2023.1 English - UG1079 All vector intrinsic functions require the operands to be present in the AI Engine vector registers. The following table shows the set of vector registers and... vectorregistersenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Buffer-Port-Multicasting?contentId=LV3lH7PUPIiPkOsGcvv99g Buffer Port Multicasting - Buffer Port Multicasting - 2025.2 English - UG1079 The AI Engine compiler does not limit the buffer ports to a one-to-one connection. Under certain conditions, multiple kernels can share the same output buffer... bufferportmulticastingenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Strict-Aliasing-Rule Strict Aliasing Rule - Strict Aliasing Rule - 2022.2 English - UG1079 The strict aliasing rule dictates that pointers are assumed not to alias if they point to fundamentally different types, except for char* and void* which can... strictaliasingruleenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Graphs-with-Libraries-Components Graphs with Libraries Components - Graphs with Libraries Components - 2025.2 English - UG1079 The Vitis libraries targeting AI Engine are currently split into two levels: Level 1 Basic kernels Level 2 Graphs that use multiple Level 1 kernels with... graphslibrariescomponentsenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/MAC-on-8x8-bits?contentId=aw0Cqn8MQPl0Q6ljzPjmqA MAC on 8x8 bits - MAC on 8x8 bits - 2023.1 English - UG1079 The following figures show MAC with int8 X buffer and int8 Z buffer. The first figure shows how data is permuted and the second figure shows how coefficients... macbitsenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Configuring-input_plio/output_plio?contentId=gmE0hTkN6gFBDOsdcBNUDA Configuring input_plio/output_plio - Configuring input_plio/output_plio - 2023.1 English - UG1079 An input_plio/output_plio object can be configured to make external stream connections that cross the AI Engine to programmable logic (PL) boundary. This... configuringinputpliooutputenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Relative-Constraints Relative Constraints - Relative Constraints - 2023.2 English - UG1079 Kernel, PLIO and GMIO objects can be placed relative to each other. These types of constraints are called relative constraints. The X and Y offsets indicates... relativeconstraintsenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/MAC-on-8x8-bits?contentId=mJ0l_OlEezS22UsRaOphEQ MAC on 8x8 bits - MAC on 8x8 bits - 2025.2 English - UG1079 The following figures show MAC with int8 X buffer and int8 Z buffer. The first figure shows how data is permuted and the second figure shows how coefficients... macbitsenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Data-Comparison?contentId=mAgZbY4ESvLRSQsq1zrwlQ Data Comparison - Data Comparison - 2023.2 English - UG1079 AI Engine API provides vector comparison operations, including: aie::eq aie::neq aie::le aie::lt aie::ge aie::gt The vector comparison operations compare two... data comparisonenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Colocated-Ports-Constraint?contentId=ml4UZOHWHn1Ltj2pQxh0qA Colocated Ports Constraint - Colocated Ports Constraint - 2025.2 English - UG1079 This constrains a ports buffer location to be on the same bank as that of one or more other port buffers. When two double buffers are co-located, this... portsconstraintenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Global-Constraints Global Constraints - Global Constraints - 2023.2 English - UG1079 global constraintsenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Vector-Arithmetic-Operations Vector Arithmetic Operations - Vector Arithmetic Operations - 2023.2 English - UG1079 The AI Engine API supports basic arithmetic operations on two vectors, or on a scalar and a vector (operation on the scalar and each element of the vector). It... arithmetic operationsvectorenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/DMA-FIFO DMA FIFO - DMA FIFO - 2022.2 English - UG1079 A fifo_depth() constraint specification above 40 allocates FIFOs from memory, known as DMA FIFOs. The following is an example of a FIFO allocation for a... dmafifoenglish https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Vector-Register-Lane-Permutations Vector Register Lane Permutations - Vector Register Lane Permutations - 2022.1 English - UG1079 The AI Engine fixed point vector units datapath consists of the following three separate and largely independently usable paths: Main MAC datapath... vectorregisterlanepermutationsenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Recursive-Graphs Recursive Graphs - Recursive Graphs - 2023.2 English - UG1079 recursivegraphsenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Strict-Aliasing-Rule?contentId=rodZ9C9chle7gnLcZUt25w Strict Aliasing Rule - Strict Aliasing Rule - 2023.2 English - UG1079 The strict aliasing rule dictates that pointers are assumed not to alias if they point to fundamentally different types, except for char* and void* which can... strictaliasingruleenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/input_gmio/output_gmio?contentId=bxMy_eEhbQXDiBgxh7SsYg input_gmio/output_gmio - input_gmio/output_gmio - 2025.2 English - UG1079 This class represents the global memory (DDR) resource management and data transfer between AI Engine and global memory (DDR). The input_gmio object manages... inputoutputenglish https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Free-Running-AI-Engine-Kernel?contentId=OR4WxmVCzLKQFCaWfixVDQ Free Running AI Engine Kernel - Free Running AI Engine Kernel - 2022.1 English - UG1079 The AI Engine kernel can always be running using graph::run(-1). This way the kernel will restart automatically after the last iteration is complete. Note:... free runningai enginekernelenglish https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/DDR-Memory-Access-through-GMIO?contentId=OKaQRxB9JP~BRCRtzSUgsA DDR Memory Access through GMIO - DDR Memory Access through GMIO - 2021.1 English - UG1079 The main data streams from and to the AI Engine are the AI Engine to PL streaming interface and GMIO, which is used to make external memory-mapped connections... ddr memoryaccessenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Operator-Overloading?contentId=AgO33u9LrXj4XhyOWZ4t_g Operator Overloading - Operator Overloading - 2025.2 English - UG1079 The AI Engine API provides operator overloading for many operations. Use this feature by including the aie_api/operators.hpp header and the aie::operators... operator overloadingenglish https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/MAC-Intrinsics MAC Intrinsics - MAC Intrinsics - 2022.1 English - UG1079 MAC intrinsics perform vector multiply and accumulate operations between data from two buffers, the X and Z buffers, with the other parameters and options... macintrinsicsenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/constraint-std-vector-T?contentId=nmUYhalL_pT0oRLzgb13vw constraint std::vectorT - constraint std::vectorT - 2023.1 English - UG1079 This template class is used to build vector data constraints on kernels, connections, and ports. Scope Constraint must appear inside a user graph constructor.... constraintstdenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Hierarchical-Graphs Hierarchical Graphs - Hierarchical Graphs - 2022.2 English - UG1079 A graph can contain a mix of kernels and sub-graphs. If you want to instantiate multiple kernels they can be declared as an array or with specific names. In... hierarchicalgraphsenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Configuring-input_plio/output_plio Configuring input_plio/output_plio - Configuring input_plio/output_plio - 2023.1 English - UG1079 An input_plio/output_plio object can be configured to make external stream connections that cross the AI Engine to programmable logic (PL) boundary. This... configuringinputpliooutputenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding AI Engine Kernel and Graph Programming Guide (UG1079) - 2022.2 English - Describes the intricacies... Describes the intricacies of AI Engine kernel and graph programming. https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Not-Colocated-Ports-Constraint Not Colocated Ports Constraint - Not Colocated Ports Constraint - 2023.1 English - UG1079 portsconstraintenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/FIFO-Constraint FIFO Constraint - FIFO Constraint - 2025.2 English - UG1079 This constrains a FIFO to a specific tile located at a specified column and row within the array. The tile can be an AI Engine tile, memory tile, or interface... fifoconstraintenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Access-Data-From-a-Buffer-Port Access Data From a Buffer Port - Access Data From a Buffer Port - 2023.1 English - UG1079 access databufferportenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Matrix-Multiplication?contentId=rXOtHCmregukFpvoCXxm_A Matrix Multiplication - Matrix Multiplication - 2025.2 English - UG1079 The following matrix multiplication example implements the equation: C (64 x 2) = A (64 x 8) * B(8 x 2) The example assumes that: The data for the matrices is... matrix multiplicationenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Data-Comparison?contentId=hVH8WuOOdVc4Li0uVNudog Data Comparison - Data Comparison - 2025.2 English - UG1079 AI Engine API provides vector comparison operations, including: aie::eq aie::neq aie::le aie::lt aie::ge aie::gt The vector comparison operations compare two... data comparisonenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Kernel-Bypass Kernel Bypass - Kernel Bypass - 2025.2 English - UG1079 A bypass encapsulator construct executes a kernel conditionally. A runtime parameter controls the bypass. The bypass runtime control input bp : 0 for no bypass... kernelbypassenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Other-Constraints?contentId=77z5EVft9PqIZP51Wy9sLQ Other Constraints - Other Constraints - 2022.2 English - UG1079 Multi-Rate Designs Some designs implement kernels which are based on various data frame size. The data can be transferred through streams and/or windows. If... constraintsenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Load-and-Store-From-Memory Load and Store From Memory - Load and Store From Memory - 2025.2 English - UG1079 AI Engine APIs let you read and write data from data memory, streaming data ports, and cascade streaming ports used by AI Engine kernels. For additional... loadstorememoryenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Area-Group-Constraint?contentId=zS16S0jP14nUW1EkP8Njtw Area Group Constraint - Area Group Constraint - 2023.1 English - UG1079 The area group constraint specifies a range of tile and/or shim locations to which a group of one or more nodes can be mapped. The area group constraint can be... area groupconstraintenglish https://docs.amd.com/r/2021.1-English/ug1079-ai-engine-kernel-coding/Data-Permute-and-MAC-Examples?contentId=FMQb62KNARjtCM~FW~AHeg Data Permute and MAC Examples - Data Permute and MAC Examples - 2021.1 English - UG1079 The following example takes two vectors with reals in rva and imaginary in rvb (with type v8int32) and creates a new complex vector, using the offsets to... datapermutemacexamplesenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Writing-Data-to-an-Output-Window Writing Data to an Output Window - Writing Data to an Output Window - 2022.2 English - UG1079 The following code writes a scalar typed value to an output window of the same type. The current position is not modified. void window_write(output_window_int8... writing dataoutputwindowenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Loop-Flattening-and-Unrolling?contentId=~GU~ovpM2tIcWfCwTLeniw Loop Flattening and Unrolling - Loop Flattening and Unrolling - 2025.2 English - UG1079 Loops can be flattened completely with the chess_flatten_loop pragma. Flattening can be useful for small loops that are not optimally automated by the AI... loopflatteningenglish https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Kernel-Pragmas?contentId=2pYbvOHp74Qk5_rSKPJGlA Kernel Pragmas - Kernel Pragmas - 2022.1 English - UG1079 The AI Engine compiler supports dedicated directives for efficient loop scheduling. Additional pragmas for reducing memory dependencies and removing function... kernelpragmasenglish https://docs.amd.com/r/2023.1-English/ug1079-ai-engine-kernel-coding/Derived-Pointers Derived Pointers - Derived Pointers - 2023.1 English - UG1079 Pointers derived from a restrict pointer are considered restrict pointers and point to the same restricted memory region, as shown in the following example,... derivedpointersenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Asynchronous-Buffer-Port-Access Asynchronous Buffer Port Access - Asynchronous Buffer Port Access - 2025.2 English - UG1079 In some situations, if you are not consuming a buffer port worth of data on every invocation of a kernel, or if you are not producing a buffer port worth of... port accessasynchronousbufferenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/Restrict-Qualification Restrict Qualification - Restrict Qualification - 2022.2 English - UG1079 The C standard provides a specific pointer qualifier, __restrict, intended to allow more aggressive compiler optimization by explicitly stating data... restrictqualificationenglish https://docs.amd.com/r/2022.1-English/ug1079-ai-engine-kernel-coding/Vector-Register-Lane-Permutations?contentId=6G3MikhfLPEcoF~Pd9Aluw Vector Register Lane Permutations - Vector Register Lane Permutations - 2022.1 English - UG1079 The AI Engine fixed point vector units datapath consists of the following three separate and largely independently usable paths: Main MAC datapath... vectorregisterlanepermutationsenglish https://docs.amd.com/r/2022.2-English/ug1079-ai-engine-kernel-coding/FIFO-Location-Constraints FIFO Location Constraints - FIFO Location Constraints - 2022.2 English - UG1079 The AI Engine compiler tries to automatically allocate FIFOs in the most efficient manner possible. However, you might want to explicitly control their... fifolocationconstraintsenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/graph graph - graph - 2023.2 English - UG1079 This is the main graph abstraction exported by the ADF tools. All user-defined graphs should be inherited from class graph. Scope All instances of those... graphenglish https://docs.amd.com/r/2023.2-English/ug1079-ai-engine-kernel-coding/Buffer-Port-Multicasting?contentId=06XUqzZfsQTS7ek06csrtA Buffer Port Multicasting - Buffer Port Multicasting - 2023.2 English - UG1079 The aiecompiler is not limited to a one to one connection of buffer ports. In certain circumstances the same output buffer might be used by multiple other... bufferportmulticastingenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/AI-Engine-API AI Engine API - AI Engine API - 2025.2 English - UG1079 The AI Engine API is a portable programming interface for AI Engine kernel programming. This API interface targets current and future AI Engine architectures.... ai engineapienglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Floating-Point-Operations?contentId=U2JCAt~sq4t9nSVNirCsYg Floating-Point Operations - Floating-Point Operations - 2025.2 English - UG1079 The scalar unit floating-point hardware support includes square root, inverse square root, inverse, absolute value, minimum, and maximum. It supports other... floating pointoperationsenglish https://docs.amd.com/r/en-US/ug1079-ai-engine-kernel-coding/Buffer-Location-Constraints Buffer Location Constraints - Buffer Location Constraints - 2025.2 English - UG1079 The AI Engine compiler tries to automatically allocate buffers for buffers, lookup tables, and runtime parameters in the most efficient manner possible.... bufferlocationconstraintsenglish