Skip to content

analogdevicesinc/pyadi-dt

Repository files navigation

pyadi-dt logo

Device Tree Generation for Analog Devices Hardware

CI Docs License Python 3.10+


pyadi-dt is a Python library and CLI for generating, inspecting, and managing Linux device trees for Analog Devices data converters, clock ICs, RF transceivers, and FPGA-based JESD204 data paths.

Key Features

  • XSA-to-DTS pipeline — Generate device trees from Vivado .xsa archives using built-in board profiles
  • BoardModel API — Build, edit, and render device tree overlays programmatically
  • 88 Kuiper boards — Full manifest of ADI Kuiper 2023-R2 supported boards
  • RPi support — Generate overlays for ADI sensors on Raspberry Pi (ADIS16495, ADXL345, AD7124, etc.)
  • 15 board classes — DAQ2, AD9081–AD9084, ADRV9002–ADRV9025, ADRV937x, ADRV9361-Z7035, ADRV9364-Z7020, FMComms, RPi
  • Component factories — Pre-configured factories for 12+ ADI devices
  • Visualization — Interactive HTML reports, clock-tree diagrams (DOT/D2), DTS linter
  • Hardware validated — FMCDAQ2, FMCDAQ3, AD9081, ADRV9009 on ZCU102

Quick Install

pip install git+https://github.com/analogdevicesinc/pyadi-dt.git

With XSA pipeline support (requires Vivado sdtgen):

pip install "git+https://github.com/analogdevicesinc/pyadi-dt.git#egg=adidt[xsa]"

Quick Examples

Generate a DTS from an XSA file

adidtc xsa2dt -x design.xsa --profile ad9081_zcu102 -o out/

Generate system-user.dtsi for PetaLinux

adidtc xsa2dt -x design.xsa -c cfg.json --format petalinux --petalinux-project /path/to/project

Generate a DTS from Python (BoardModel API)

from adidt.model import BoardModel, components
from adidt.model.renderer import BoardModelRenderer

model = BoardModel(
    name="rpi5_imu",
    platform="rpi5",
    components=[
        components.adis16495(spi_bus="spi0", cs=0, interrupt_gpio=25),
    ],
)
nodes = BoardModelRenderer().render(model)

Generate a DTS for an FPGA board

from adidt.boards.daq2 import daq2

board = daq2(platform="zcu102")
board.output_filename = "fmcdaq2.dts"
board.gen_dt_from_config(solver_config)

List Kuiper-supported boards

adidtc kuiper-boards

Inspect device trees on live hardware

adidtc -c remote_sysfs -i 192.168.2.1 prop -cp adi,ad9361 clock-output-names

props command

Supported Hardware

Converter Family Platforms HW Validated
AD9081 / AD9082 / AD9083 (MxFE) ZCU102, ZC706, VPK180 ZCU102 ✓
AD9084 VCU118, VPK180
ADRV9009 / ADRV9025 / ADRV9008 ZCU102, ZC706, Arria10, ZU11EG ZCU102 ✓
ADRV9009-ZU11EG (SOM) ADRV2CRR-FMC carrier
AD936x / FMComms2-5 (SDR) Zedboard, ZC702, ZC706, ZCU102
ADRV9361-Z7035 / ADRV9364-Z7020 (SOM) BOB, FMC carriers
FMCDAQ2 (AD9680 + AD9144) ZCU102, ZC706, Arria10 ZCU102 ✓
FMCDAQ3 (AD9680 + AD9152) ZCU102, ZC706 ZCU102 ✓
Precision ADCs / Sensors Zedboard, Raspberry Pi

Documentation

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest -vs

# Type check
nox -s ty

# Build docs
nox -s docs

License

Eclipse Public License 2.0

About

Device tree management tools for ADI hardware

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors