When an application accesses global memory using the GMIO specification (see Configuring input_gmio/output_gmio), the simulation needs to model the DDR memory and the routing network connecting the DDR memory to the PL and AI Engines. AI Engine to DDR memory connections are mediated by the DMA data mover that is embedded in the AI Engine array interface and controlled through the GMIO APIs in the PS program. Connections to DDR memory from an AXI4-Stream port on a PL block are mediated by a soft GMIO data mover block, which is generated automatically by the AI Engine compiler for simulation purposes. The data mover converts the streaming interface from the PL blocks to memory-mapped AXI4 interface transactions over the NoC with a specific start address, block size, and burst size as shown in Configuring input_gmio/output_gmio.
While simulating with global memory, a memory data file can be supplied using an additional option, --gm-init-file, which initializes the DDR memory with predefined data. This file is a textual byte-dump of the DDR memory starting at a given address. The format of this file is as follows:
<startaddr>:
<byte>
<byte>
…
For example, the AI Engine simulator can be invoked with global memory initialization in the following way:
aiesimulator –-pkg-dir=./Work -–gm-init-file=dump.txt
The simulator also produces an output byte dump for the DDR
memory used, in the simulation output directory (default: aiesimulator_output). The name of the output file is based on the
internal location of the DDR memory bank (for example, DDRMC_SITE_X1Y0.mem) starting at the base address 0x0
. You can use this dump to verify the global memory
transactions.