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
- 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.
- 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.
- 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.
- CI artifacts (
actions/upload-artifact) — cheapest to produce but expire (~90d) and aren't cleanly versioned — CI-internal only, not for downstream consumption.
Current mechanism
util/deploy.pydistributes generated RTL by, for each release, temporarily un-gitignoringtarget/rtl,git add .-ing the generated RTL, and pushing a__deploy__<hash>__<branch>branch (the two-tag scheme:vX.Y.Z-srcsource /vX.Y.Zdeploy). Downstreams Bender-depend on the deploy branch/tag because source branches gitignoretarget/rtland Bender needs a concrete RTL flist.Why change it
__deploy__*branches proliferate on the repo and the GitLab mirror.Options to weigh
make idma_hw_allthemselves; 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.iDMA-rtlrepo 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.actions/upload-artifact) — cheapest to produce but expire (~90d) and aren't cleanly versioned — CI-internal only, not for downstream consumption.