Skip to content

Latest commit

 

History

History
49 lines (32 loc) · 3.58 KB

README.md

File metadata and controls

49 lines (32 loc) · 3.58 KB

dau build

Build tools for dau

Build Status codecov License

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