Skip to main content

dau-driver

Host I/O for DAU devices: discovery, registers, DMA, and job execution over XDMA

Build Status codecov License PyPI

dau-driver is the host side of a DAU device. It discovers DAU-compatible XDMA endpoints, reads the canonical register block, decodes the device's capability advertisement, moves data over H2C/C2H DMA, allocates device storage, and runs the register-contract jobs the shells expose. All device semantics (register offsets, stream framing, capability words, record layouts) come from dau-core; this package owns transport and execution only.

  • Linux hosts use the Xilinx XDMA character devices under /dev.
  • macOS hosts use a DriverKit-based XDMA system extension through IOKit user-client calls, for register access and full H2C/C2H DMA.
from pathlib import Path

from dau_driver import discover_devices
from dau_driver.testing import FakeTransport, fake_device

devices = discover_devices()                       # the XDMA devices under /dev, when a board is installed
device = devices[0] if devices else fake_device(Path("."), FakeTransport())
device.check_bar_health()                          # all-ones reads fail here, not later
print(device.name, device.backend)                 # xdma0 linux-xdma
print(device.capabilities.dma)                     # alignment / max-transfer constraints
print(device.read_register_block_snapshot())       # the whole identity block
print(device.read_status())                        # the status word and last error

The Python execution paths (discovery, registers, transfers, storage, the scan, pipeline and fleet runners) also run against the in-memory fake transport above, and that is how the test suite exercises them. The kernel driver, the DriverKit extension and the native extension are tested on hardware.

Documentation

The full documentation is at dau-dev.github.io/dau-driver.

The examples directory holds end-to-end host flows (record-batch round trip, stream aggregation, the OHLCV pipeline job) that run against real hardware.

Installation

Requires Python 3.12 or newer.

pip install dau-driver

Wheels are published for CPython 3.12 and 3.13 on Linux (x86_64 and aarch64) and macOS (arm64). Elsewhere pip builds the small native extension from source, which needs a C++ toolchain.

On a host with a board, load the Linux XDMA module from kernel/linux-xdma/ or the macOS DriverKit extension from kernel/macos-xdma/; each has its own build and load instructions. Without one, the package still imports and runs against its fake transport. Whoever can open the character devices (Linux) or the user client (macOS) can read and write the card's memory and registers, so the operating system's device permissions are the access control.

License

Apache-2.0, except kernel/linux-xdma/, which is Xilinx's XDMA reference driver under its own Dual BSD/GPL terms. See kernel/README.md.

Metadata

Release files for dau-driver 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dau-driver 0.1.0
File Size Uploaded Provenance Actions
dau_driver-0.1.0.tar.gz 251.2 kB Without provenance Details for dau_driver-0.1.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for dau-driver 0.1.0
File Actions
dau_driver-0.1.0-cp313-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 abi3 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for dau_driver-0.1.0-cp313-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
dau_driver-0.1.0-cp313-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 abi3 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for dau_driver-0.1.0-cp313-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
dau_driver-0.1.0-cp313-abi3-macosx_11_0_arm64.whl CPython 3.13 abi3 macOS 11.0+ ARM64 Details for dau_driver-0.1.0-cp313-abi3-macosx_11_0_arm64.whl
dau_driver-0.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 abi3 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for dau_driver-0.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
dau_driver-0.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for dau_driver-0.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
dau_driver-0.1.0-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for dau_driver-0.1.0-cp312-abi3-macosx_11_0_arm64.whl

Total release size: 1.9 MB

Release files / dau_driver-0.1.0.tar.gz

Download URL dau_driver-0.1.0.tar.gz
Size 251.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ec6186f140ccba8866126fb768ae40667d5295ff36cc3fc4cee15cf3d566eef6
BLAKE2b-256 checksum
How to use checksums
2930b6b51945559171605ef05a0fe127ecea3b21a18a90b878dc7f32ba03de80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / dau_driver-0.1.0-cp313-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL dau_driver-0.1.0-cp313-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 270.1 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
0ba85eb1de39a64384b3f019461b58937377d0dcc87b1ea8b39285dd178e3070
BLAKE2b-256 checksum
How to use checksums
0776f492527f8d07c8d2f3760e83fff82568c74c45a5724baf0e6515787598c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / dau_driver-0.1.0-cp313-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL dau_driver-0.1.0-cp313-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 269.0 kB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
97e77eddcae97a43f8a6b1344fc4390688a082b5edc61afcbcd6658953d900f8
BLAKE2b-256 checksum
How to use checksums
61f25bd0c86a72b3eee903a1707aced1573a436512f16c2a12717b717c05b117
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / dau_driver-0.1.0-cp313-abi3-macosx_11_0_arm64.whl

Download URL dau_driver-0.1.0-cp313-abi3-macosx_11_0_arm64.whl
Size 263.7 kB
Tags CPython 3.13 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9c5e9479fbd73dbac11c59b8d48ab734efa0bc45e243a82f99083ca3114bebc5
BLAKE2b-256 checksum
How to use checksums
27b509e1c62b84ac81a0859bb087e1673a3715ec9c2d670f7aa0459d1a6e11fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / dau_driver-0.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL dau_driver-0.1.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 270.1 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
75301533210211d5b53a593dfd5b123cc8d66e529093025c9f3dd174ffd0b691
BLAKE2b-256 checksum
How to use checksums
e820cd2d587980d3ff50a09f13ba4ef67e773e96158e50663552296920ac60c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / dau_driver-0.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL dau_driver-0.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 269.0 kB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
ff99bc0425ce220e306bf39ade6e9f1aed68416a8200db03ad638401d4c57101
BLAKE2b-256 checksum
How to use checksums
68f902d75a0dcfac22ef1611b5040ae2f0adcfa893719455b81ac291b81c8f22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / dau_driver-0.1.0-cp312-abi3-macosx_11_0_arm64.whl

Download URL dau_driver-0.1.0-cp312-abi3-macosx_11_0_arm64.whl
Size 263.7 kB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dcff39e9f48e3aa11643177352a31312229611081836fd5b5d9c3a5f6d3e8baa
BLAKE2b-256 checksum
How to use checksums
89777ba8fb25fe982f54ec90c6789c947d091c4ca6df09d340a81c933c8794d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for dau-driver 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

7 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page