Intel® FPGA SDK for OpenCL™ Pro Edition: Custom Platform Toolkit User Guide

ID 683085
Date 3/28/2022
Document Table of Contents

2.3.14. aocl_mmd_program

The aocl_mmd_program function is the program operation for the specified device.
The host must guarantee that no other OpenCL™ operations are executing on the device during the program operation. During aocl_mmd_program execution, the kernels are idle and no read, write, or copy operation can occur.

Disable interrupts and program the FPGA with the data from user_data, which has a size specified by the size argument. The host then calls aocl_mmd_set_status_handler and aocl_mmd_set_interrupt_handler again, which enable the interrupts. If events such as interrupts occur during aocl_mmd_program execution, race conditions or data corruption might occur.

This function replaces aocl_mmd_program, which is deprecated starting with Intel® FPGA SDK for OpenCL™ Version 18.1.


int aocl_mmd_program( int handle,
                      void* user_data,
                      size_t size,
                      aocl_mmd_program_mode_t program_mode );

Function Arguments

  • handle—A positive int value representing the handle to the board obtained from the aocl_mmd_open() call.

  • user_data—The void* type binary contents of the fpga.bin file that are created during compilation.

  • size—The size of user_data in bytes. The size argument is of size_t.

  • program_mode—The bit-field that specifies the mode of device programming.
    Table 19.  Possible Values for the program_mode Argument
    program_mode Argument Value Description
    AOCL_MMD_PROGRAM_PRESERVE_GLOBAL_MEMORY This flag specifies that during programming the global memory on the devices are preserved.

Return Value

If aocl_mmd_program executes successfully, the return value is the pointer value that the host uses to access shared memory.