Intel® MAX® 10 FPGA Configuration User Guide

ID 683865
Date 3/27/2023
Public
Document Table of Contents

3.3.2.2. Generating .pof using Convert Programming Files

To convert .sof files to .pof files and to set the ICB using Convert Programming Files, follow these steps:

  1. On the File menu, click Convert Programming Files.
  2. Under Output programming file, select Programmer Object File (.pof) in the Programming file type list.
  3. In the Mode list, select Internal Configuration.
  4. To set the ICB settings, click Option/Boot Info and the Max 10 Device Options dialog box appears. The Max 10 Device Options dialog box allows you to set the following:
    1. User I/Os weak pull up during configuration.
    2. Configure device from CFM0 only.
      Note: When you enable this feature, the device always loads configuration image 0 without sampling the physical CONFIG_SEL pin. After successfully loading configuration image 0, you can switch between configuration images using the config_sel_overwrite bit of the input register. Refer to related information for details about Dual Configuration Intel® FPGA IP input register.
    3. Use secondary image ISP data as default setting when available.
    4. JTAG Secure.
      Note: The JTAG Secure feature is disabled by default in Intel® Quartus® Prime software. To make this option visible in the GUI, you must create a quartus.ini file using the text editor, with the key-value pair: PGM_ENABLE_MAX10_JTAG_SECURITY=ON and save the file in one of the following folders:
      • Project folder.
      • Windows operating system: <Quartus installation folder>\bin64 folder.
      • Linux operating system: <Quartus installation folder>/linux64 folder.
      CAUTION:
      Intel® MAX® 10 FPGA device becomes permanently locked if you enabled JTAG secure mode in the POF file and POF is encrypted with the wrong key. You must instantiate the internal JTAG interface for you unlock the external JTAG when the device is in JTAG Secure mode.
    5. Verify Protect.
    6. Allow encrypted POF only.
    7. Watchdog timer for dual configuration and watchdog timer value (Enabled after adding 2 .sof page with two designs that compiled with Dual Compressed Internal Images).
    8. User Flash Memory settings.
    9. User Data in Configuration Flash Memory (CFM).
      The function is to store user data in unused CFM0/1 space. It can be done by using Convert Programming File (CPF) GUI, command line (quartus_cpf), and the conversion setup file (.cof). CPF reports error messages for cases as shown in the following table:
      Table 29.  CPF Error Messages
      Case Error Message
      if the start address overlaps with configuration data Error (20646): The page CFM0 user data requested start address 0x0014BA00 overlaps with configuration data that end at address 0x0014BA6B.
      if the HEX file cannot fit in unused CFM space Error (20640): Memory file test.hex contains 256 bytes. It cannot fit in CFM0 section which has only 254 bytes unused memory space. Size of file(s) in CFM0 exceeds memory capacity.
      if the start address exceeds the CFM block Error (20648): The page CFM0 user data requested start address 0x00162000 exceeds page end address 0x00161FFF.
      Convert Programming File GUI

      You can specify a starting address and HEX file for insertion into CFM 0/1 in CFM0/1 File path and CFM0/1 start address (32-bit hexadecimal) respectively in the Max 10 Device Options dialog box. The tool automatically allocates an empty space for the HEX file if the start address remains as 0x0.

      You can refer to the memory map file (*.map) to check the start address. The start address is after the end address of CFM0/1. For example, in the figure below, insert your data in CFM0 with start address 0x0014BA6C and end address 0x00161FFF. The .map file is updated with CFM0_DATA start address and end address once you generate the POF file with Create Memory Map enabled.

      Figure 14. Example of Memory Map File (*.map)
      Command Line (quartus_cpf)
      In the command line interface, run the quartus_cpf command with the following syntax:
      quartus_cpf  -c -o cfm0_source_file=<user>.hex -o cfm0_start_address=<12345678> <user>.sof <user>.pof
      Example of quartus_cpf command:
      quartus_cpf  -c -o cfm0_source_file=test.hex -o cfm0_start_address=0014BA6C abc.sof abc.pof
      Conversion Setup File (*.cof)
      In the Convert Programming File dialog box, you may save the setting by click the Save Conversion Setup… and edit cfm0_filepath and cfm_ file_start_addr in the <user>.cof file as shown below.
    10. RPD File Endianness.
  5. In the File name box, specify the file name for the programming file you want to create.
  6. To generate a Memory Map File (.map), turn on Create Memory Map File (Auto generate output_file.map). The .map contains the address of the CFM and UFM with the ICB setting that you set through the Option/Boot Info option.
  7. To generate a Raw Programming Data (.rpd), turn on Create config data RPD (Generate output_file_auto.rpd).
    Separate Raw Programming Data (.rpd) for each configuration flash memory and user flash memory (CFM0, CFM1, UFM) section are generated together for remote system upgrade purpose.
  8. The .sof can be added through Input files to convert list and you can add up to two .sof files.
    For remote system upgrade purpose, you can retain the original page 0 data in the .pof, and replace page 1 data with a new .sof file. To perform this, you must to add the .pof file in page 0, then add .sof page, then add the new .sof file to page 1.
  9. After all settings are set, click Generate to generate related programming file.