Boards Module
Board layout classes define the physical wiring between FPGA platforms and ADI evaluation boards — SPI bus assignments, GPIO mappings, and DTC include paths.
Board classes that support the unified model provide a to_board_model(cfg)
method that produces a BoardModel from a
pyadi-jif solver configuration. The model can be inspected and modified before
rendering to DTS via BoardModelRenderer.
See Board Model Module for the full API.
Board Layout Base
- class adidt.boards.layout.layout
Bases:
objectCommon Layout Class for DT generation templates.
- gen_dt_preprocess(**kwargs: Any) dict[str, Any]
Pre-process template context before rendering; override to inject extra variables.
- gen_dt(**kwargs)
Generate the DT file from configuration structs.
- Raises:
Exception – If the template file does not exist.
Exception – If the output filename is not defined.
- Parameters:
kwargs – Configuration structs.
- gen_dt_from_model(model, config_source='board_model')
Render a
BoardModelto a DTS file.This is the BoardModel-based alternative to
gen_dt(). It renders the model viaBoardModelRendererand writes a standalone DTS file with SPDX header and metadata.- Parameters:
model – A
BoardModelinstance.config_source – Config source string for the metadata header.
- Returns:
Path to the generated DTS file.
- Return type:
str
- gen_dt_from_config(cfg, config_source='jif_solver')
Generate DTS from raw solver config via BoardModel.
Convenience method that calls
to_board_model()thengen_dt_from_model(). Subclasses must implementto_board_model(cfg).- Parameters:
cfg – Raw JIF solver configuration dict.
config_source – Config source string for metadata.
- Returns:
Path to the generated DTS file.
- Return type:
str
Evaluation Boards
DAQ2
- class adidt.boards.daq2.daq2(platform='zcu102', kernel_path=None)
Bases:
layout- PLATFORM_CONFIGS = {'zc706': {'arch': 'arm', 'base_dts_file': 'arch/arm/boot/dts/xilinx/zynq-zc706.dts', 'base_dts_include': 'zynq-zc706.dts', 'default_fpga_adc_pll': 'XCVR_CPLL', 'default_fpga_dac_pll': 'XCVR_QPLL', 'jesd_phy': 'GTX', 'output_dir': 'generated_dts', 'spi_bus': 'spi0', 'template_filename': 'daq2_zc706.tmpl'}, 'zcu102': {'arch': 'arm64', 'base_dts_file': 'arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-fmcdaq2.dts', 'base_dts_include': 'zynqmp-zcu102-rev10-fmcdaq2.dts', 'default_fpga_adc_pll': 'XCVR_CPLL', 'default_fpga_dac_pll': 'XCVR_QPLL', 'jesd_phy': 'GTH', 'output_dir': 'generated_dts', 'spi_bus': 'spi1', 'template_filename': 'daq2_zcu102.tmpl'}}
- __init__(platform='zcu102', kernel_path=None)
Initialize DAQ2 board.
- Parameters:
platform (str) – Target platform (‘zcu102’)
kernel_path (str, optional) – Path to Linux kernel source tree. If None, validation is skipped for backward compatibility.
- Raises:
ValueError – If platform is not supported
- get_dtc_include_paths()
Get list of include paths for dtc compilation.
- Returns:
Include paths for dtc -i option
- Return type:
list
- validate_and_default_fpga_config(cfg: dict) dict
Validate and apply platform defaults for FPGA configuration.
- Parameters:
cfg (dict) – Configuration dictionary
- Returns:
Configuration with FPGA defaults applied
- Return type:
dict
- map_jesd_structs(cfg: dict) tuple
Extract and annotate ADC and DAC JESD configuration dicts from the solver output.
- Parameters:
cfg (dict) – Solver configuration containing converter_ADC/DAC and jesd_ADC/DAC keys.
- Returns:
(adc dict, dac dict) each with a populated ‘jesd’ sub-dict.
- Return type:
tuple
- map_clocks_to_board_layout(cfg: dict) tuple
Map JIF solver configuration to the DAQ2 board clock and JESD layout.
- Parameters:
cfg (dict) – JIF solver configuration.
- Returns:
(clock_config, adc_config, dac_config, fpga_config)
- Return type:
tuple
- to_board_model(cfg: dict) BoardModel
Build a
BoardModelfrom JIF solver configuration.This maps the solver output through the existing board layout methods and produces a unified model that can be inspected, modified, and rendered via
BoardModelRenderer.- Parameters:
cfg (dict) – JIF solver configuration (same dict passed to
map_clocks_to_board_layout).- Returns:
Editable board model.
- Return type:
BoardModel
AD9081 FMC
- class adidt.boards.ad9081_fmc.ad9081_fmc(platform='zcu102', kernel_path=None)
Bases:
layoutAD9081 FMC board layout map for clocks and DSP
- PLATFORM_CONFIGS = {'vpk180': {'arch': 'arm64', 'base_dts_file': 'arch/arm64/boot/dts/xilinx/versal-vpk180-revA.dts', 'base_dts_include': 'versal-vpk180-revA.dts', 'default_fpga_adc_pll': 'XCVR_QPLL0', 'default_fpga_dac_pll': 'XCVR_QPLL0', 'jesd_phy': 'GTY', 'output_dir': 'generated_dts', 'spi_bus': 'spi1', 'template_filename': 'ad9081_fmc_vpk180.tmpl'}, 'zc706': {'arch': 'arm', 'base_dts_file': 'arch/arm/boot/dts/zynq-zc706.dts', 'base_dts_include': 'zynq-zc706.dts', 'default_fpga_adc_pll': 'XCVR_QPLL', 'default_fpga_dac_pll': 'XCVR_QPLL', 'jesd_phy': 'GTX', 'output_dir': 'generated_dts', 'spi_bus': 'spi0', 'template_filename': 'ad9081_fmc_zc706.tmpl'}, 'zcu102': {'arch': 'arm64', 'base_dts_file': 'arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.0.dts', 'base_dts_include': 'zynqmp-zcu102-rev1.0.dts', 'default_fpga_adc_pll': 'XCVR_QPLL', 'default_fpga_dac_pll': 'XCVR_QPLL', 'jesd_phy': 'GTH', 'output_dir': 'generated_dts', 'spi_bus': 'spi1', 'template_filename': 'ad9081_fmc_zcu102.tmpl'}}
- __init__(platform='zcu102', kernel_path=None)
Initialize AD9081 FMC board.
- Parameters:
platform (str) – Target platform (‘zcu102’, ‘vpk180’, or ‘zc706’)
kernel_path (str, optional) – Path to Linux kernel source tree. If None, validation is skipped for backward compatibility.
- Raises:
ValueError – If platform is not supported
- get_dtc_include_paths()
Get list of include paths for dtc compilation.
- Returns:
Include paths for dtc -i option
- Return type:
list
- validate_and_default_fpga_config(cfg: dict) dict
Validate and apply platform defaults for FPGA configuration.
- Parameters:
cfg (dict) – Configuration dictionary
- Returns:
Configuration with FPGA defaults applied
- Return type:
dict
- make_ints(cfg, keys)
Convert keys in a dict to integers.
- Parameters:
cfg (dict) – Configuration.
keys (list) – Keys to convert.
- Returns:
Configuration with keys converted to integers.
- Return type:
dict
- map_jesd_structs(cfg: dict) tuple
Map JIF configuration to integer structs.
- Parameters:
cfg (dict) – JIF configuration.
- Returns:
ADC JESD structs. dict: DAC JESD structs.
- Return type:
dict
- to_board_model(cfg: dict) BoardModel
Build a
BoardModelfrom JIF solver configuration.This maps the solver output through the existing board layout methods and produces a unified model that can be inspected, modified, and rendered via
BoardModelRenderer.- Parameters:
cfg (dict) – JIF solver configuration (same dict passed to
map_clocks_to_board_layout).- Returns:
Editable board model.
- Return type:
BoardModel
AD9084 FMC
AD9084 FMC board device tree generation support.
This module provides device tree generation for the AD9084-FMCA-EBZ evaluation board on Versal platforms (VPK180, VCK190).
The AD9084 is a high-performance multi-channel RF transceiver that uses: - HMC7044 as the primary clock generator - ADF4382 as the device clock PLL - ADF4030 (AION) for JESD204C sysref distribution
Reference: linux/arch/arm64/boot/dts/xilinx/versal-vpk180-reva-ad9084.dts
- class adidt.boards.ad9084_fmc.ad9084_fmc(platform='vpk180', kernel_path=None)
Bases:
layoutAD9084 FMC board layout map for clocks and DSP
- PLATFORM_CONFIGS = {'vck190': {'arch': 'arm64', 'base_dts_file': 'arch/arm64/boot/dts/xilinx/versal-vck190-revA.dts', 'base_dts_include': 'versal-vck190-revA.dts', 'default_fpga_adc_pll': 'XCVR_QPLL0', 'default_fpga_dac_pll': 'XCVR_QPLL0', 'jesd_phy': 'GTY', 'output_dir': 'generated_dts', 'spi_bus': 'spi0', 'template_filename': 'ad9084_fmc_vck190.tmpl'}, 'vcu118': {'arch': 'microblaze', 'base_dts_file': None, 'base_dts_include': 'vcu118_ad9084_204C_M4_L8_NP16_20p0_4x4.dts', 'default_fpga_adc_pll': 'XCVR_QPLL1', 'default_fpga_dac_pll': 'XCVR_QPLL1', 'jesd_phy': 'GTY', 'output_dir': None, 'spi_bus': 'axi_spi_2', 'template_filename': 'ad9084_fmc_vcu118.tmpl'}, 'vpk180': {'arch': 'arm64', 'base_dts_file': 'arch/arm64/boot/dts/xilinx/versal-vpk180-revA.dts', 'base_dts_include': 'versal-vpk180-revA.dts', 'default_fpga_adc_pll': 'XCVR_QPLL0', 'default_fpga_dac_pll': 'XCVR_QPLL0', 'jesd_phy': 'GTY', 'output_dir': 'generated_dts', 'spi_bus': 'spi0', 'template_filename': 'ad9084_fmc_vpk180.tmpl'}}
- __init__(platform='vpk180', kernel_path=None)
Initialize AD9084 FMC board.
- Parameters:
platform (str) – Target platform (‘vpk180’ or ‘vck190’)
kernel_path (str, optional) – Path to Linux kernel source tree. If None, uses LINUX_KERNEL_PATH env var or default path.
- Raises:
ValueError – If platform is not supported
FileNotFoundError – If kernel path is invalid (when explicitly provided)
- get_dtc_include_paths()
Get list of include paths for dtc compilation.
- Returns:
Include paths for dtc -i option
- Return type:
list
- validate_and_default_fpga_config(cfg: dict) dict
Validate and apply platform defaults for FPGA configuration.
- Parameters:
cfg (dict) – Configuration dictionary
- Returns:
Configuration with FPGA defaults applied
- Return type:
dict
- gen_dt_preprocess(**kwargs)
Add metadata to template rendering context.
- Parameters:
kwargs – Template rendering context
- Returns:
Updated context with metadata
- Return type:
dict
- to_board_model(cfg: dict) BoardModel
Build a
BoardModelfrom board configuration.This maps the configuration through the existing board layout methods and produces a unified model that can be inspected, modified, and rendered via
BoardModelRenderer.- Parameters:
cfg (dict) – Board configuration (same dict passed to
map_clocks_to_board_layout).- Returns:
Editable board model.
- Return type:
BoardModel
- map_clocks_to_board_layout(cfg: dict) tuple
Map configuration to board clock connection layout.
The AD9084 uses HMC7044 as the primary clock generator with the following channel assignments: - Channel 1: ADF4030_REFIN (125 MHz) - Channel 3: ADF4030_BSYNC0 (9.765 MHz) - Channel 8: CORE_CLK_TX (312.5 MHz) - Channel 9: CORE_CLK_RX (312.5 MHz) - Channel 10: FPGA_REFCLK (312.5 MHz) - Channel 11: CORE_CLK_RX_B (312.5 MHz) - Channel 12: CORE_CLK_TX_B (312.5 MHz)
- Parameters:
cfg (dict) – Configuration dictionary
- Returns:
(clock_config, adc_config, dac_config, fpga_config)
- Return type:
tuple
ADRV9009 FMC
ADRV9009 FMC board device tree generation support (JSON-based).
This module provides JSON-based device tree generation for the ADRV9009 evaluation board on ZCU102 and ZC706 platforms.
The ADRV9009 is a highly integrated RF transceiver that uses: - AD9528 as the clock generator - JESD204B for high-speed data interface
This is a NEW implementation using JSON configuration (like AD9081), distinct from the existing profile-based implementations in adrv9009_pcbz.py.
Reference: linux/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-adrv9009.dts
- class adidt.boards.adrv9009_fmc.adrv9009_fmc(platform='zcu102', kernel_path=None)
Bases:
layoutADRV9009 FMC board layout for JSON-based DT generation
- PLATFORM_CONFIGS = {'zc706': {'arch': 'arm', 'base_dts_file': 'arch/arm/boot/dts/xilinx/zynq-zc706.dts', 'base_dts_include': 'zynq-zc706.dts', 'clock_ref': 'clkc 16', 'default_fpga_orx_pll': 'XCVR_CPLL', 'default_fpga_rx_pll': 'XCVR_CPLL', 'default_fpga_tx_pll': 'XCVR_QPLL', 'jesd_phy': 'GTX', 'output_dir': 'generated_dts', 'spi_bus': 'spi1', 'template_filename': 'adrv9009_fmc_zc706.tmpl'}, 'zcu102': {'arch': 'arm64', 'base_dts_file': 'arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev1.0.dts', 'base_dts_include': 'zynqmp-zcu102-rev1.0.dts', 'clock_ref': 'zynqmp_clk 71', 'default_fpga_orx_pll': 'XCVR_CPLL', 'default_fpga_rx_pll': 'XCVR_CPLL', 'default_fpga_tx_pll': 'XCVR_QPLL', 'jesd_phy': 'GTH', 'output_dir': 'generated_dts', 'spi_bus': 'spi0', 'template_filename': 'adrv9009_fmc_zcu102.tmpl'}}
- __init__(platform='zcu102', kernel_path=None)
Initialize ADRV9009 FMC board.
- Parameters:
platform (str) – Target platform (‘zcu102’ or ‘zc706’)
kernel_path (str, optional) – Path to Linux kernel source tree.
- Raises:
ValueError – If platform is not supported
FileNotFoundError – If kernel path is invalid (when explicitly provided)
- validate_and_default_fpga_config(cfg: dict) dict
Validate and apply platform defaults for FPGA configuration.
- to_board_model(cfg: dict) BoardModel
Build a
BoardModelfrom configuration.This maps the configuration through the existing board layout methods and produces a unified model that can be inspected, modified, and rendered via
BoardModelRenderer.- Parameters:
cfg (dict) – Configuration dictionary (same dict passed to
map_clocks_to_board_layout).- Returns:
Editable board model.
- Return type:
BoardModel
- map_clocks_to_board_layout(cfg: dict) tuple
Map configuration to board clock connection layout.
The ADRV9009 uses AD9528 as the clock generator with outputs: - Channel 13: DEV_CLK (device clock) - Channel 1: FMC_CLK (FPGA clock) - Channel 12: DEV_SYSREF (device sysref) - Channel 3: FMC_SYSREF (FPGA sysref)
- Parameters:
cfg (dict) – Configuration dictionary
- Returns:
(clock_config, rx_config, tx_config, orx_config, fpga_config)
- Return type:
tuple
ADRV9009 PCB-Z
- class adidt.boards.adrv9009_pcbz.adrv9009_pcbz
Bases:
layoutADRV9009-PCBZ FMC board layout map for clocks and DSP
- parse_profile(filename: Path)
Parse a profile file.
- Parameters:
filename – Profile file name.
- Returns:
Profile configuration.
- Return type:
dict
ADRV9009 ZU11EG
- class adidt.boards.adrv9009_zu11eg.adrv9009_zu11eg
Bases:
layoutADRV9009-ZU11EG SOM board layout map for clocks and DSP
- make_ints(cfg, keys)
Convert keys in a dict to integers.
- Parameters:
cfg (dict) – Configuration.
keys (list) – Keys to convert.
- Returns:
Configuration with keys converted to integers.
- Return type:
dict
- map_jesd_structs(cfg)
Map JIF configuration to integer structs.
- Parameters:
cfg (dict) – JIF configuration.
- Returns:
ADC JESD structs. dict: DAC JESD structs.
- Return type:
dict
ADRV9361 Z7035
ADRV9361-Z7035 SOM board class for AD9361 SDR transceiver.
The ADRV9361-Z7035 is a System-on-Module pairing an AD9361 wideband SDR transceiver with a Zynq Z-7035 SoC. Like the FMComms boards it uses SPI + LVDS (no JESD204), so the device tree node is simple.
Two carrier variants are supported: - bob — breakout board (ADRV1CRR-BOB) - fmc — FMC carrier (ADRV1CRR-FMC)
- class adidt.boards.adrv9361_z7035.adrv9361_z7035(platform: str = 'bob', kernel_path: str | None = None)
Bases:
fmcomms_fmcADRV9361-Z7035 SOM board class.
ADRV9364 Z7020
ADRV9364-Z7020 SOM board class for AD9364 SDR transceiver.
The ADRV9364-Z7020 is a System-on-Module pairing an AD9364 (1x1 TRX) SDR transceiver with a Zynq Z-7020 SoC. It uses SPI + LVDS (no JESD204), identical to the ADRV9361-Z7035 but with a single TX/RX path.
Supported carrier: - bob — breakout board (ADRV1CRR-BOB)
- class adidt.boards.adrv9364_z7020.adrv9364_z7020(platform: str = 'bob', kernel_path: str | None = None)
Bases:
adrv9361_z7035ADRV9364-Z7020 SOM board class.