gen-machine-conf Best Practices

This documents AMD recommendations for things like naming and performance improvement.

SDT Machine Nomenclature for AMD Built Boards

AMD uses the following nomenclature for the boards and examples it produces: <soc-family>-<board-name>-sdt-<load-methodology>. This allows consumers to know important information about the design at a glance, including which SoC family it uses, which board it is targeted for, the kind of hardware translation flow that was used to create it, and when and how the PL and AIE are loaded. For example: MACHINE = "versal-vek280-sdt-seg"

In this example, the MACHINE is configured for a Versal generation device, running on a VEK280 board, it uses the system device tree flow (as opposed to XSCT/DTG), and uses segmented flow (meaning that the AIE and PL images are loaded by software post boot, not in the bootloader)

Load Methodology

Various generations of AMD FPGAs have allowed different methodologies for loading:

  • <blank> - flat design without dynamic PL configuration, full bitstream loaded by U-Boot or FSBL

  • full - Zynq-7000/ZynqMP - flat design without dynamic PL configuration, full bitstream loaded by U-Boot or FSBL

  • dfx - ZynqMP/Versal - base PL loaded by FSBL/PLM, remaining partial bitstreams loaded by Linux

  • seg - Versal - “Segmented Configuration” full PL bitstream loaded by Linux

bitbake Performance

Each BBMULTICONFIG value requires all the recipes to be parsed for that configuration. As a result, each multiconfig add more parsing time. A long list can lead to a slow parse (many minutes). To speed up parsing, AMD recommends that you trim this down to only the configurations you require.

A minimum configuration is included with the generated configuration.

Note: Only AMD evaluation boards have the .dtsi in the System Device Tree repo. For a custom board, follow one of the following methods.

  1. Patch the System Device Tree to include the custom board .dtsi and include the custom board .dtsi during the sdtgen build step. % sdtgen set_dt_param -board_dts <custom-board-dtsi-name>

  2. Create a custom board .dtsi file and use the EXTRA_DT_INCLUDE_FILES variable to include the custom board .dtsi to the final DTB. Example usage:

    EXTRA_DT_INCLUDE_FILES:append = " <path-to-directory>/<custom-board>.dtsi"