Skip to content

Distribute generated RTL without deploy-branches (regen / RTL repo / release assets) #157

Description

@DanielKellerM

Current mechanism

util/deploy.py distributes generated RTL by, for each release, temporarily un-gitignoring target/rtl, git add .-ing the generated RTL, and pushing a __deploy__<hash>__<branch> branch (the two-tag scheme: vX.Y.Z-src source / vX.Y.Z deploy). Downstreams Bender-depend on the deploy branch/tag because source branches gitignore target/rtl and Bender needs a concrete RTL flist.

Why change it

  • The __deploy__* branches proliferate on the repo and the GitLab mirror.
  • Deploy branches generate a representative configuration, but most of the cases users will have to modify the make file for their own protocols, generating dirty uncommited local files.

Options to weigh

  1. Downstream regeneration — consumers run make idma_hw_all themselves; nothing generated is stored. Purest (single source of truth = templates + src/db), but pushes the Python/MARIO toolchain (peakrdl, mako, bender-pickle) onto every downstream build, and Bender has no native pre-generate hook.
  2. Separate generated-RTL repo — a thin iDMA-rtl repo holding only the generated RTL, auto-pushed by CI on release; downstreams Bender-depend on it. Keeps Bender's git-dep model, separates generated from source, removes __deploy__* from the main repo. Cost: a second repo to maintain.
  3. GitHub Release assets — CI attaches the generated RTL as a release tarball; downstreams fetch + unpack. Versioned + durable, but Bender fetches git repos, not release assets, so it needs a fetch/vendor step.
  4. CI artifacts (actions/upload-artifact) — cheapest to produce but expire (~90d) and aren't cleanly versioned — CI-internal only, not for downstream consumption.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions