Build tools for dau
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-2Python 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.gitFor 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.
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_topTask names are paths into the config tree (task=tasks/spec/inspect).
- 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.