dau-driver
Host I/O for DAU devices: discovery, registers, DMA, and job execution over XDMA
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.
- Tutorial: Talk to a device without any hardware · Run a scan over many batches. Both drive a device end to end against the fake transport, no board required.
- How-to guides: Find and check a device · Move data to and from it · Run scan jobs across batches and cards · Allocate device storage · Fence a PCIe operation with the deadman · Develop and contribute.
- Reference: Device and discovery, including transfers, storage and errors · Execution contracts for stream, scan, pipeline and fleet jobs · Stream codec.
- Explanation: Why the driver owns almost nothing
and where the
dau-coreboundary sits · Why staging overlaps compute, and when the runner stops · Why storage is handed out as generation-checked handles.
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)
| 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)
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.