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 FSBLdfx- ZynqMP/Versal - base PL loaded by FSBL/PLM, remaining partial bitstreams loaded by Linuxseg- 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.
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>Create a custom board
.dtsifile and use theEXTRA_DT_INCLUDE_FILESvariable to include the custom board.dtsito the final DTB. Example usage:
EXTRA_DT_INCLUDE_FILES:append = " <path-to-directory>/<custom-board>.dtsi"