AXI Manager Simulation
Note
MATLAB® AXI master has been renamed to AXI manager. In the software and documentation, the terms "manager" and "subordinate" replace "master" and "slave," respectively.
Prior to deploying your algorithm on an FPGA, you can simulate the algorithm and
            perform read and write operations to simulated memory or memory-mapped registers on your
            board. Use the provided SystemVerilog
            readmemory and writememory tasks to read and write
            memory-mapped locations on the board. Simulation is available for only the Vivado® Simulator, on which you can perform only behavior simulations.
To integrate the AXI manager IP in your design, see Integrate AXI Manager IP in FPGA Design. After you integrate the AXI manager IP in your design, create a SystemVerilog wrapper that includes your design under test (DUT), memory interface generator (MIG), AXI manager IP, clock, and reset logic. You can then instantiate the wrapper in a SystemVerilog testbench and simulate.
HDL Wrapper Creation
Create a wrapper for the FPGA design. The wrapper includes all of the user logic
                and FPGA logic. The interface to the wrapper includes clock and reset ports and an
                optional DDR3 interface to the memory or other on-board peripherals. After creating
                and configuring the design in Vivado, navigate to the Sources window in Vivado. In the Sources tab, under Design
                    Sources, right-click the design name and select Create HDL
                    Wrapper. This action creates an HDL file named
                        design_name_wrapper.vdesign_name/hdldesign_name is the name of the Vivado project.
SystemVerilog Testbench
HDL Verifier™ provides SystemVerilog tasks to interact with the design in a SystemVerilog simulation. After you create a SystemVerilog wrapper, instantiate the wrapper in a SystemVerilog testbench. The testbench also includes on-board IP models, such as
                memory models. Drive a clock and a reset signal to your DUT. To include definitions
                specific to HDL Verifier, import the hdlverifier package to the testbench by
                entering this code in the testbench file.
import hdlverifier::*;
To write data to memory locations or to read data from memory locations, use the
                    writememory and readmemory
                SystemVerilog tasks, respectively, as detailed in the next two sections. For an
                example that uses AXI manager simulation, see Access FPGA Memory Using JTAG-Based AXI Manager.
writememory(addr,wdata,burst_type) SystemVerilog Task
Write data to AXI4 memory-mapped subordinates in simulation.
- addr– Start address for write operation- The address is zero-extended to 32 or 64 bits, depending on the AXI manager IP address width. The address must refer to an AXI subordinate memory location controlled by the AXI manager IP on your FPGA board. For more information, see Memory Mapping Guidelines. 
- wdata– Data words to write- By default, the testbench writes data to a contiguous address block, incrementing the address for each operation. To turn off address increment mode and write each data value to the same location, set the - burst_typeparameter to- HDLV_AXI_BURST_TYPE_FIXED.
- burst_type– AXI4 burst type- Specify - HDLV_AXI_BURST_TYPE_INCRfor increment mode, or- HDLV_AXI_BURST_TYPE_FIXEDfor fixed-burst mode.- In - HDLV_AXI_BURST_TYPE_INCRmode, the AXI manager reads a vector of data from contiguous memory locations, starting with the specified address. In- HDLV_AXI_BURST_TYPE_FIXEDmode, the AXI manager reads all of the data from the same address.
readmemory(addr,length,burst_type)                 SystemVerilog Task
Read data out of AXI4 memory-mapped subordinates in simulation.
- addr– Start address for read operation- The address is zero-extended to 32 or 64 bits, depending on the AXI manager IP address width. By default, the address width is set to 32 bits. To set the width to 64 bits, specify - parameter AXI_ADDR_WIDTH=64in the HDL testbench. The address must refer to an AXI subordinate memory location controlled by the AXI manager IP on your FPGA board. For more information, see Memory Mapping Guidelines.
- length– Number of locations to read- Specify the number of memory locations to read. By default, the testbench reads from a contiguous address block, incrementing the address for each operation. To turn off address increment mode and read repeatedly from the same location, set the - burst_typeparameter to- HDLV_AXI_BURST_TYPE_FIXED.
- burst_type– AXI4 burst type- Specify - HDLV_AXI_BURST_TYPE_INCRfor increment mode, or- HDLV_AXI_BURST_TYPE_FIXEDfor fixed-burst mode.- In - HDLV_AXI_BURST_TYPE_INCRmode, the AXI manager reads a vector of data from contiguous memory locations, starting with the specified address. In- HDLV_AXI_BURST_TYPE_FIXEDmode, the AXI manager reads all of the data from the same address.
Memory Mapping Guidelines
- If the AXI manager IP data width is 32 bits, the memory is 4 bytes aligned, and addresses have 4-byte increments ( - 0x0,- 0x4,- 0x8). In this case,- 0x1is an invalid address and you get an error.
- If the AXI manager IP data width is 64 bits, the memory is 8 bytes aligned, and addresses have 8-byte increments ( - 0x0,- 0x8,- 0x10). In this case,- 0x1or- 0x4are invalid addresses and will emit an error.
- If the AXI manager IP data width is 32 bits and the Burst type parameter is set to - Increment, the address is incremented by 4 bytes.
- If the AXI manager IP data width is 64 bits and the Burst type parameter is set to - Increment, the address is incremented by 8 bytes.
- Do not use a 64-bit AXI manager for accessing 32-bit registers.