Repository navigation
Conversation
…ched Seven workflows still built their chipdb on every run after the composite action landed on this branch (#852). Two of them run often enough to pay for a cache; five are dispatch-only probes where a cache would be wrong or would change an instrument for nothing. Cached through .github/actions/openxc7-chipdb: - part-coverage.yml runs daily on a 4-part matrix and ran bbaexport for every part every time. In run 37196269484 its "Build it" step, which included the chipdb, took 87 s (xc7a35t), 437 s (xc7k325t), 87 s (xc7s50) and 351 s (xc7a200t). The chipdb step has continue-on-error, so a chipdb failure is still an INCONCLUSIVE verdict, as it was when the chipdb was built inside the build step. - fpga-hslm-bitstream.yml, keyed on the ID of regymm/openxc7:latest, so it misses exactly when the tag moves. Left uncached, each with a "# chipdb-uncached: <reason>" line above the step that builds it: - openxc7-vs-vivado-openxc7-half, bufr-divide-probe, iddr-vivado-diff: the chipdb comes from a nextpnr-xilinx revision checked out in the job, not from the image the cache keys on, so an image-keyed entry would be the wrong chipdb. - iddr-golden-diff, router-vcc-reducer: the action would fit, but they have run 3 times each, last on 2026-08-18, and they are the instruments behind openXC7/nextpnr-xilinx#114. The loop's classifier (speed coverage) now counts a stated reason as decided, not as cached: on this branch 56/61 workflows cache the chipdb and 61/61 either cache it or say why not. main is 1/61. Not measured: whether bbasm resolves on PATH inside the pinned image eced1cdd that part-coverage uses. That image installs it with "cp bbasm /usr/local/bin/ || true". A dispatch of part-coverage on this branch settles it. Refs #846 #851 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hit run: chipdb drops from 797 s to about 10 s across the four partsBoth runs dispatched
Step times come from the API's whole-second timestamps, so the hit column is ±1 s. What the logs show:
After the cache, image pull is most of the job. In the hit run, pull takes 68–96 s of the 100–123 s per job. Not measured
🤖 Generated with Claude Code |
a4421f1 to
df19c26
Compare
Summary by t27-beesThis PR moves two workflows ( Worth a look
Read: 7 files, +38 -19, the whole diff. Head |
Stacked on #852 (base
fix/ci-chipdb-cache). Merge #852 first; this PR's diff is the 7 workflows only.What
#852 moved 54 of 61 chipdb-building workflows onto the composite action
.github/actions/openxc7-chipdb. This PR settles the other 7 (#846).Cached through the action:
part-coverage.ymlbbaexportfor every part, every dayfpga-hslm-bitstream.ymlregymm/openxc7:latest, so it misses exactly when the tag movesIn
part-coverage.ymlthe chipdb step hascontinue-on-error: true. A chipdb failure is still an INCONCLUSIVE verdict, as it was when the chipdb was built inside the build step, and it does not stop the job before the verdict is written.Left uncached on purpose. Each has a
# chipdb-uncached: <reason>line directly above the step that builds its chipdb:openxc7-vs-vivado-openxc7-half.ymlNEXTPNR_REV, not the imagebufr-divide-probe.ymlbbaexportruns after checking outNEXTPNR_STOCKiddr-vivado-diff.ymlNEXTPNR_REVandPRJXRAY_DB_REViddr-golden-diff.ymlrouter-vcc-reducer.ymlFor the first three, an image-keyed cache would hand them a chipdb built from a different nextpnr revision, with possibly different constids. That is a wrong result, not a slow one.
Measured
part-coveragerun 37196269484, "Build it, all the way to frames" (chipdb included): 87 s (xc7a35t), 437 s (xc7k325t), 87 s (xc7s50), 351 s (xc7a200t).speed coverage):run_idkey or a floating-tag key. Self-test 55/55, and 4 of 4 mutants of the rule are killed.uses/run, and the local action exists and comes afteractions/checkout. actionlint was not run, and the repo has no actionlint workflow. The Run syntax gate parses everyrun:script on this PR.Why it is safe
part-coveragekeeps its verdict logic.chipdb_rcnow comes from the action step's outcome instead of thedocker runexit code.fpga-hslm-bitstreamalready pulled:latest. The action reuses the image already on the runner, so the chipdb and the nextpnr step share one image.Not measured
part-coveragepinsregymm/openxc7@sha256:eced1cdd…. That image installs bbasm withcp bbasm /usr/local/bin/ || true, so "bbasm is on PATH" there is an assumption. The action has only been proven on:latest. Two dispatches ofpart-coverageon this branch (a miss, then a hit) settle it and give the hit-versus-miss step times. Results go on ci: 7 workflows build a chipdb with no cache #846.fpga-hslm-bitstreamhas not been run on this branch.Refs #846 #851
🤖 Generated with Claude Code