dau build
Build tools for dau
Overview
dau-build turns a declarative FPGA build spec into the files a build needs: generated SystemVerilog, artlink.manifest/v0 artifact bundles, backend handoff manifests, Vivado Tcl, and ordered hardware command plans. The operations are typed ccflow.CallableModels composed from the Hydra config tree in dau_build/config. The whole pipeline composes, inspects and tests on a development machine; the steps that need Vivado, a JTAG cable or a PCIe bus run only when you pass execute=true.
Two synthesis engines are supported: Vivado for the FPGA bitstream flow, and yosys for open-source synthesis that runs in CI. The config plumbing does not depend on either, so more can be added.
Other packages extend dau-build by composition rather than by editing it. A package registers its own config tree on the shared Hydra search path through a hydra.lernaplugins entry point, and its task, design and board groups then compose through this CLI without dau-build importing the package. The core registry arrives the same way: dau-core publishes each hardware building block as a CoreDefinition at /dau-core/<name>, and the synthesize-cores task resolves cores from that registry to characterize them one at a time, out of context. Without a synthesis host it stages the Tcl and a command plan; with model.execute=true on a machine that has Vivado it runs the synthesis and reports any drift from the resource and timing envelope the registry records:
dau-build task=tasks/build/synthesize-cores 'model.cores=[/dau-core/int32-predicate-filter]' model.output_root=outputs/ooc model.part=xc7a200tfbg484-2
Installation
Python 3.11 or later. There is no package index release yet; install from a clone or straight from GitHub:
pip install git+https://github.com/dau-dev/dau-build.git
For development, clone and run make develop. Vivado and yosys are needed only for the steps that run them; everything else composes, generates and tests without them.
Quickstart
Build the checked-in identity example. No board and no vendor tools are needed:
dau-build task=tasks/spec/inspect spec=specs/identity
dau-build task=tasks/spec/build spec=specs/identity model.output_root=outputs/identity
dau-build task=tasks/spec/validate model.manifest_path=outputs/identity/dau-identity.manifest model.root=outputs/identity
dau-build task=tasks/sim/simulate spec=specs/identity model.module=dau_identity_top
Task names are paths into the config tree (task=tasks/spec/inspect).
Documentation
- Tutorial: Build the identity example.
- How-to: Run a build end to end · Program a bitstream on a board · Extend dau-build.
- Reference: Commands · Config groups · Task and step catalog.
- Explanation: Architecture, on Hydra composition, ccflow evaluation, the search-path extension model, and the state of backend support.
Metadata
Release files for dau-build 0.15.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 | |
|---|---|---|---|
| dau_build-0.15.0.tar.gz | 270.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dau_build-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 591.4 kB
Release files / dau_build-0.15.0.tar.gz
| Download URL | dau_build-0.15.0.tar.gz |
|---|---|
| Size | 270.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f1c6cd4402c646c2c0a7a3be5684345f5fdac42ddd2eea62adb05cb322496dad
|
|
BLAKE2b-256 checksum How to use checksums |
b75024eccb40d2fc5691d416fe3128de393271268589dd14daa9c463536c6c71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / dau_build-0.15.0-py3-none-any.whl
| Download URL | dau_build-0.15.0-py3-none-any.whl |
|---|---|
| Size | 321.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0bbfc9f67ae2544aae60138343a5fca58f8db618191c998038be1c278755b1fc
|
|
BLAKE2b-256 checksum How to use checksums |
53eb5f0a94b2ea7404d2c2f1f0c4ad2b66015e7c81069b7306cfa383f3d431a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|