From 8a8a32bee4e666b2c892a74501ce3104016a7c78 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Sun, 4 Oct 2026 17:45:03 +0700 Subject: [PATCH 1/2] fix(ci): key the chipdb cache on the openXC7 image so it can hit The chipdb cache in 48 openXC7 workflows was keyed on github.run_id. actions/cache sets cache-hit only on an exact key match, so the guarded build step ran on every run and the cache never saved a second. Five more used a fixed key on a floating image tag, which never misses but can serve a chipdb built by an image the job no longer runs. A composite action, .github/actions/openxc7-chipdb, now owns this: - key = part + the ID of the image the job's nextpnr runs (docker image inspect), so it hits on every run with the same image and misses exactly when it moves; - one cached path for every workflow (~/.cache/openxc7-chipdb/.bin), copied to each workflow's own `out`, because actions/cache folds the path into the entry version and 50 distinct paths would store 50 copies of one file; - saved with actions/cache/save straight after the build, so a later nextpnr failure does not discard it. The 53 workflows were rewritten by a gated script: each rewrite must parse to the old document with exactly the two chipdb steps replaced by one, must re-classify as OK, and is refused for any shape it does not model (more than one cache step, more than one image, shell variables in the part or path, no checkout before it). Coverage by the speed-loop classifier, 61 chipdb-building workflows: before 1 OK, 48 NEVER_HIT, 5 STALE_RISK, 7 NO_CACHE; after 54 OK, 7 NO_CACHE. The remaining 7 build other parts or their own nextpnr and are tracked in #846. Part of #851. Fixes #843, #845. Co-Authored-By: Claude Opus 5.5 --- .github/actions/openxc7-chipdb/action.yml | 103 ++++++++++++++++++ .github/workflows/ax7203-blinky-bitstream.yml | 25 +---- .github/workflows/ax7203-corona-decode.yml | 13 +-- .../workflows/ax7203-dual-clk-heartbeat.yml | 25 +---- .github/workflows/ax7203-format-cost.yml | 14 +-- .github/workflows/ax7203-gf10-add.yml | 13 +-- .github/workflows/ax7203-gf10-mul.yml | 13 +-- .github/workflows/ax7203-gf10-sub.yml | 13 +-- .github/workflows/ax7203-gf12-clean.yml | 13 +-- .github/workflows/ax7203-gf12-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf12-sub.yml | 13 +-- .github/workflows/ax7203-gf14-add.yml | 13 +-- .github/workflows/ax7203-gf14-mul.yml | 13 +-- .github/workflows/ax7203-gf14-sub.yml | 13 +-- .github/workflows/ax7203-gf16-clean.yml | 16 +-- .github/workflows/ax7203-gf16-conformance.yml | 25 +---- .github/workflows/ax7203-gf16-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf16-sub.yml | 13 +-- .github/workflows/ax7203-gf20-clean.yml | 16 +-- .github/workflows/ax7203-gf20-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf20-sub.yml | 13 +-- .github/workflows/ax7203-gf24-clean.yml | 16 +-- .github/workflows/ax7203-gf24-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf24-sub.yml | 13 +-- .github/workflows/ax7203-gf32-add.yml | 13 +-- .github/workflows/ax7203-gf32-mul.yml | 13 +-- .github/workflows/ax7203-gf32-sub.yml | 13 +-- .github/workflows/ax7203-gf4-clean.yml | 13 +-- .github/workflows/ax7203-gf4-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf4-sub.yml | 13 +-- .github/workflows/ax7203-gf6-clean.yml | 13 +-- .github/workflows/ax7203-gf6-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf6-sub.yml | 13 +-- .github/workflows/ax7203-gf8-clean.yml | 13 +-- .github/workflows/ax7203-gf8-mul-clean.yml | 13 +-- .github/workflows/ax7203-gf8-sub.yml | 13 +-- .github/workflows/ax7203-gfternary-mul.yml | 13 +-- .github/workflows/ax7203-identity-echo.yml | 13 +-- .github/workflows/ax7203-led-onehot.yml | 25 +---- .github/workflows/ax7203-rx-echo-hb.yml | 25 +---- .github/workflows/ax7203-trinet-baud.yml | 14 +-- .github/workflows/ax7203-trinet-dna-probe.yml | 13 +-- .github/workflows/ax7203-trinet-fleet.yml | 14 +-- .github/workflows/ax7203-trinet-mac32.yml | 13 +-- .github/workflows/ax7203-trinet-node-v2.yml | 13 +-- .github/workflows/ax7203-uart-loopback.yml | 25 +---- .github/workflows/ax7203-uart-tx-probe.yml | 25 +---- .../workflows/build-ax7203-bitstream-mul.yml | 17 +-- .github/workflows/build-ax7203-bitstream.yml | 23 +--- .../workflows/build-ax7203-routing-test.yml | 17 +-- .github/workflows/build-matrix.yml | 23 +--- .github/workflows/openxc7-build-timing.yml | 19 +--- .github/workflows/tnf-cost-sweep.yml | 15 +-- .github/workflows/tnf-format-throughput.yml | 15 +-- 54 files changed, 321 insertions(+), 605 deletions(-) create mode 100644 .github/actions/openxc7-chipdb/action.yml diff --git a/.github/actions/openxc7-chipdb/action.yml b/.github/actions/openxc7-chipdb/action.yml new file mode 100644 index 0000000000..2a06441b43 --- /dev/null +++ b/.github/actions/openxc7-chipdb/action.yml @@ -0,0 +1,103 @@ +name: openXC7 chipdb +description: >- + Restore, or build and save, the nextpnr-xilinx chipdb for one part. The cache + key is the part plus the ID of the image that builds it, so it hits on every + run that uses the same image and misses exactly when the image moves. + gHashTag/trinity-fpga#843. + +# Why the key looks like this. +# +# A chipdb is a pure function of the part and of the nextpnr-xilinx and +# prjxray-db trees inside the image, so the image ID is a sufficient key. +# +# - A key carrying github.run_id never matches exactly. actions/cache sets +# cache-hit only on an exact match (a restore-keys match leaves it false), so +# `if: cache-hit != 'true'` rebuilt the chipdb on every run. +# - A fixed key on a floating tag never misses, and keeps serving a chipdb built +# by an image the job no longer runs. +# +# The cached path is the same for every workflow (~/.cache/openxc7-chipdb/.bin) +# and is copied to `out` afterwards. actions/cache folds the path list into the +# entry's version, so caching `out` directly would give each of the ~50 workflows +# its own copy of an identical file. +# +# The chipdb is saved straight after it is built, not in a post-job step, so a +# later nextpnr failure does not throw the build away. +# +# Caches are scoped by ref: an entry saved on main is visible to every branch and +# PR, an entry saved in a PR only to that PR. + +inputs: + part: + description: Xilinx part, e.g. xc7a200tfbg484-2 + default: xc7a200tfbg484-2 + out: + description: Path of the chipdb .bin to produce, relative to the workspace + required: true + image: + description: The openXC7 image the job's nextpnr step runs (tag or digest) + default: regymm/openxc7 + +outputs: + cache-hit: + description: "'true' when the chipdb came from the cache" + value: ${{ steps.restore.outputs.cache-hit }} + image-id: + description: ID of the image the chipdb belongs to + value: ${{ steps.ident.outputs.image-id }} + key: + description: The cache key used + value: ${{ steps.ident.outputs.key }} + +runs: + using: composite + steps: + - id: ident + shell: bash + env: + IMAGE: ${{ inputs.image }} + PART: ${{ inputs.part }} + run: | + # Use the image already on the runner if a previous step pulled it, so + # the chipdb and the job's nextpnr come from the same image. + present=false + docker image inspect "$IMAGE" >/dev/null 2>&1 && present=true + if [ "$present" = false ]; then docker pull -q "$IMAGE" >/dev/null; fi + image_id=$(docker image inspect --format '{{.Id}}' "$IMAGE") + key="chipdb-$PART-${image_id#sha256:}-bbasm-le-v1" + echo "image-id=$image_id" >> "$GITHUB_OUTPUT" + echo "key=$key" >> "$GITHUB_OUTPUT" + echo "chipdb key $key ($IMAGE)" + + - id: restore + uses: actions/cache/restore@v4 + with: + path: ~/.cache/openxc7-chipdb/${{ inputs.part }}.bin + key: ${{ steps.ident.outputs.key }} + + - if: steps.restore.outputs.cache-hit != 'true' + shell: bash + env: + IMAGE_ID: ${{ steps.ident.outputs.image-id }} + PART: ${{ inputs.part }} + run: | + mkdir -p ~/.cache/openxc7-chipdb + docker run --rm -v "$HOME/.cache/openxc7-chipdb:/chipdb" "$IMAGE_ID" bash -c "cd /nextpnr-xilinx && \ + python3 xilinx/python/bbaexport.py --device $PART --bba /chipdb/$PART.bba && \ + bbasm -l /chipdb/$PART.bba /chipdb/$PART.bin && rm -f /chipdb/$PART.bba" + + - if: steps.restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: ~/.cache/openxc7-chipdb/${{ inputs.part }}.bin + key: ${{ steps.ident.outputs.key }} + + - shell: bash + env: + PART: ${{ inputs.part }} + OUT: ${{ inputs.out }} + HIT: ${{ steps.restore.outputs.cache-hit }} + run: | + mkdir -p "$(dirname "$OUT")" + cp -f "$HOME/.cache/openxc7-chipdb/$PART.bin" "$OUT" + echo "chipdb $OUT $(stat -c %s "$OUT") bytes cache-hit=${HIT:-false}" diff --git a/.github/workflows/ax7203-blinky-bitstream.yml b/.github/workflows/ax7203-blinky-bitstream.yml index 1d38679a0a..89183ba1a4 100644 --- a/.github/workflows/ax7203-blinky-bitstream.yml +++ b/.github/workflows/ax7203-blinky-bitstream.yml @@ -53,28 +53,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep "Estimated number of LCs" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_blinky/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_blinky/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_blinky/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_blinky/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_blinky/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_blinky/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_blinky/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route run: | diff --git a/.github/workflows/ax7203-corona-decode.yml b/.github/workflows/ax7203-corona-decode.yml index 5c4e97de1a..1bdeb390ce 100644 --- a/.github/workflows/ax7203-corona-decode.yml +++ b/.github/workflows/ax7203-corona-decode.yml @@ -67,16 +67,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top ${{ steps.cell.outputs.top }}; setundef -zero -params; write_json build/corona_decode/corona_decode_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/corona_decode/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/corona_decode/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/corona_decode/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/corona_decode/chipdb/xc7a200tfbg484-2.bba /work/build/corona_decode/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/corona_decode/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in $(seq 1 8); do diff --git a/.github/workflows/ax7203-dual-clk-heartbeat.yml b/.github/workflows/ax7203-dual-clk-heartbeat.yml index c256ea23a6..bcc6577bbc 100644 --- a/.github/workflows/ax7203-dual-clk-heartbeat.yml +++ b/.github/workflows/ax7203-dual-clk-heartbeat.yml @@ -43,28 +43,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_dualclk/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_dualclk/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_dualclk/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_dualclk/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_dualclk/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_dualclk/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_dualclk/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route (seed search for a clean $PACKER_VCC_NET route) run: | diff --git a/.github/workflows/ax7203-format-cost.yml b/.github/workflows/ax7203-format-cost.yml index 085b3c0ea1..948cb7f470 100644 --- a/.github/workflows/ax7203-format-cost.yml +++ b/.github/workflows/ax7203-format-cost.yml @@ -83,17 +83,11 @@ jobs: setundef -zero -params" 2>&1 | tee /tmp/yosys_carry.log grep -E "Estimated|ERROR" /tmp/yosys_carry.log ! grep -q "ERROR" /tmp/yosys_carry.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/fmtcost/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - name: Build chipdb - run: | - mkdir -p build/fmtcost/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/fmtcost/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/fmtcost/chipdb/xc7a200tfbg484-2.bba /work/build/fmtcost/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/fmtcost/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | TOP=corona_compute_${{ matrix.cell }}_ax7203 diff --git a/.github/workflows/ax7203-gf10-add.yml b/.github/workflows/ax7203-gf10-add.yml index b4d239c532..bc09c2fb4d 100644 --- a/.github/workflows/ax7203-gf10-add.yml +++ b/.github/workflows/ax7203-gf10-add.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf10_add_ax7203; setundef -zero -params; write_json build/gf10_add/gf10_add_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf10_add/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf10_add/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf10_add/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf10_add/chipdb/xc7a200tfbg484-2.bba /work/build/gf10_add/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf10_add/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf10-mul.yml b/.github/workflows/ax7203-gf10-mul.yml index fa0b8e75db..7b3a8d6a6c 100644 --- a/.github/workflows/ax7203-gf10-mul.yml +++ b/.github/workflows/ax7203-gf10-mul.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf10_mul_ax7203; setundef -zero -params; write_json build/gf10_mul/gf10_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf10_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf10_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf10_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf10_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf10_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf10_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search, heap+sa — wider for the mul core) run: | CLEAN=0 diff --git a/.github/workflows/ax7203-gf10-sub.yml b/.github/workflows/ax7203-gf10-sub.yml index 8cb8dfd2f9..421a1c14d4 100644 --- a/.github/workflows/ax7203-gf10-sub.yml +++ b/.github/workflows/ax7203-gf10-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf10_sub_ax7203; setundef -zero -params; write_json build/gf10_sub/gf10_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf10_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf10_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf10_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf10_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf10_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf10_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf12-clean.yml b/.github/workflows/ax7203-gf12-clean.yml index 96791df5e0..fdfd10b835 100644 --- a/.github/workflows/ax7203-gf12-clean.yml +++ b/.github/workflows/ax7203-gf12-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf12_clean_ax7203; setundef -zero -params; write_json build/gf12_clean/gf12_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf12_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf12_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf12_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf12_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf12_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf12_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in $(seq 1 8); do diff --git a/.github/workflows/ax7203-gf12-mul-clean.yml b/.github/workflows/ax7203-gf12-mul-clean.yml index f2cbe10b5b..883a55dd0e 100644 --- a/.github/workflows/ax7203-gf12-mul-clean.yml +++ b/.github/workflows/ax7203-gf12-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf12_mul_ax7203; setundef -zero -params; write_json build/gf12_mul/gf12_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf12_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf12_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf12_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf12_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf12_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf12_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf12-sub.yml b/.github/workflows/ax7203-gf12-sub.yml index fc6ceb949a..1c715568b7 100644 --- a/.github/workflows/ax7203-gf12-sub.yml +++ b/.github/workflows/ax7203-gf12-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf12_sub_ax7203; setundef -zero -params; write_json build/gf12_sub/gf12_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf12_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf12_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf12_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf12_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf12_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf12_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf14-add.yml b/.github/workflows/ax7203-gf14-add.yml index 54037e87bc..47c54ae702 100644 --- a/.github/workflows/ax7203-gf14-add.yml +++ b/.github/workflows/ax7203-gf14-add.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf14_add_ax7203; setundef -zero -params; write_json build/gf14_add/gf14_add_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf14_add/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf14_add/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf14_add/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf14_add/chipdb/xc7a200tfbg484-2.bba /work/build/gf14_add/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf14_add/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf14-mul.yml b/.github/workflows/ax7203-gf14-mul.yml index 78222e3346..2ae41d1b14 100644 --- a/.github/workflows/ax7203-gf14-mul.yml +++ b/.github/workflows/ax7203-gf14-mul.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf14_mul_ax7203; setundef -zero -params; write_json build/gf14_mul/gf14_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf14_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf14_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf14_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf14_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf14_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf14_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search, heap+sa — wider for the mul core) run: | CLEAN=0 diff --git a/.github/workflows/ax7203-gf14-sub.yml b/.github/workflows/ax7203-gf14-sub.yml index 8dab954f9b..51926338e4 100644 --- a/.github/workflows/ax7203-gf14-sub.yml +++ b/.github/workflows/ax7203-gf14-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf14_sub_ax7203; setundef -zero -params; write_json build/gf14_sub/gf14_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf14_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf14_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf14_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf14_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf14_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf14_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf16-clean.yml b/.github/workflows/ax7203-gf16-clean.yml index 4897261b13..17031faf6c 100644 --- a/.github/workflows/ax7203-gf16-clean.yml +++ b/.github/workflows/ax7203-gf16-clean.yml @@ -31,19 +31,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf16_clean_ax7203; setundef -zero -params; write_json build/gf16_clean/gf16_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf16_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm-openxc7- - - name: Generate chipdb - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf16_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c " - cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf16_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf16_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf16_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf16_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0 diff --git a/.github/workflows/ax7203-gf16-conformance.yml b/.github/workflows/ax7203-gf16-conformance.yml index 9e1c3e903f..c338161ad7 100644 --- a/.github/workflows/ax7203-gf16-conformance.yml +++ b/.github/workflows/ax7203-gf16-conformance.yml @@ -64,28 +64,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_gf16/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_gf16/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_gf16/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_gf16/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_gf16/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_gf16/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_gf16/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route (seed search for a clean $PACKER_VCC_NET route) run: | diff --git a/.github/workflows/ax7203-gf16-mul-clean.yml b/.github/workflows/ax7203-gf16-mul-clean.yml index 57f7733f30..6f6b34d185 100644 --- a/.github/workflows/ax7203-gf16-mul-clean.yml +++ b/.github/workflows/ax7203-gf16-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf16_mul_ax7203; setundef -zero -params; write_json build/gf16_mul/gf16_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf16_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf16_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf16_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf16_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf16_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf16_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf16-sub.yml b/.github/workflows/ax7203-gf16-sub.yml index 8f83a6ca55..061d6621ed 100644 --- a/.github/workflows/ax7203-gf16-sub.yml +++ b/.github/workflows/ax7203-gf16-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf16_sub_ax7203; setundef -zero -params; write_json build/gf16_sub/gf16_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf16_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf16_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf16_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf16_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf16_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf16_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf20-clean.yml b/.github/workflows/ax7203-gf20-clean.yml index 6ed7cb1ff7..220d2c6ae7 100644 --- a/.github/workflows/ax7203-gf20-clean.yml +++ b/.github/workflows/ax7203-gf20-clean.yml @@ -31,19 +31,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf20_clean_ax7203; setundef -zero -params; write_json build/gf20_clean/gf20_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf20_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm-openxc7- - - name: Generate chipdb - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf20_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c " - cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf20_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf20_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf20_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf20_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0 diff --git a/.github/workflows/ax7203-gf20-mul-clean.yml b/.github/workflows/ax7203-gf20-mul-clean.yml index 58c8454374..1b016c2c58 100644 --- a/.github/workflows/ax7203-gf20-mul-clean.yml +++ b/.github/workflows/ax7203-gf20-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf20_mul_ax7203; setundef -zero -params; write_json build/gf20_mul/gf20_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf20_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf20_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf20_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf20_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf20_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf20_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf20-sub.yml b/.github/workflows/ax7203-gf20-sub.yml index b828e4a7fc..bec340bda8 100644 --- a/.github/workflows/ax7203-gf20-sub.yml +++ b/.github/workflows/ax7203-gf20-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf20_sub_ax7203; setundef -zero -params; write_json build/gf20_sub/gf20_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf20_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf20_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf20_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf20_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf20_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf20_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf24-clean.yml b/.github/workflows/ax7203-gf24-clean.yml index 010c039f62..9d7dc3305f 100644 --- a/.github/workflows/ax7203-gf24-clean.yml +++ b/.github/workflows/ax7203-gf24-clean.yml @@ -31,19 +31,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf24_clean_ax7203; setundef -zero -params; write_json build/gf24_clean/gf24_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf24_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm-openxc7- - - name: Generate chipdb - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf24_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c " - cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf24_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf24_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf24_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf24_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0 diff --git a/.github/workflows/ax7203-gf24-mul-clean.yml b/.github/workflows/ax7203-gf24-mul-clean.yml index 631c4ce52f..faadca4dbf 100644 --- a/.github/workflows/ax7203-gf24-mul-clean.yml +++ b/.github/workflows/ax7203-gf24-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf24_mul_ax7203; setundef -zero -params; write_json build/gf24_mul/gf24_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf24_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf24_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf24_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf24_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf24_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf24_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf24-sub.yml b/.github/workflows/ax7203-gf24-sub.yml index dbf617cfe2..08badd4ee0 100644 --- a/.github/workflows/ax7203-gf24-sub.yml +++ b/.github/workflows/ax7203-gf24-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf24_sub_ax7203; setundef -zero -params; write_json build/gf24_sub/gf24_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf24_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf24_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf24_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf24_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf24_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf24_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf32-add.yml b/.github/workflows/ax7203-gf32-add.yml index d1d3c77a3f..c655d6df1e 100644 --- a/.github/workflows/ax7203-gf32-add.yml +++ b/.github/workflows/ax7203-gf32-add.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf32_add_ax7203; setundef -zero -params; write_json build/gf32_add/gf32_add_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf32_add/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf32_add/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf32_add/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf32_add/chipdb/xc7a200tfbg484-2.bba /work/build/gf32_add/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf32_add/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search, heap placer) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf32-mul.yml b/.github/workflows/ax7203-gf32-mul.yml index 286e7e90c6..a9c24afcb9 100644 --- a/.github/workflows/ax7203-gf32-mul.yml +++ b/.github/workflows/ax7203-gf32-mul.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf32_mul_ax7203; setundef -zero -params; write_json build/gf32_mul/gf32_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf32_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf32_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf32_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf32_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf32_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf32_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search, heap+sa placers — GF32 mul is the largest core, needs more attempts) run: | CLEAN=0 diff --git a/.github/workflows/ax7203-gf32-sub.yml b/.github/workflows/ax7203-gf32-sub.yml index 1ae1e7ab2a..1b7179e5a7 100644 --- a/.github/workflows/ax7203-gf32-sub.yml +++ b/.github/workflows/ax7203-gf32-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf32_sub_ax7203; setundef -zero -params; write_json build/gf32_sub/gf32_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf32_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf32_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf32_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf32_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf32_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf32_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search, heap placer — GF32 widest, sa mis-places wide formats like GF20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf4-clean.yml b/.github/workflows/ax7203-gf4-clean.yml index a7a084808e..eb2e7bd95a 100644 --- a/.github/workflows/ax7203-gf4-clean.yml +++ b/.github/workflows/ax7203-gf4-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf4_clean_ax7203; setundef -zero -params; write_json build/gf4_clean/gf4_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf4_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf4_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf4_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf4_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf4_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf4_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do diff --git a/.github/workflows/ax7203-gf4-mul-clean.yml b/.github/workflows/ax7203-gf4-mul-clean.yml index 87fd2e4c0b..3f7d676161 100644 --- a/.github/workflows/ax7203-gf4-mul-clean.yml +++ b/.github/workflows/ax7203-gf4-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf4_mul_ax7203; setundef -zero -params; write_json build/gf4_mul/gf4_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf4_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf4_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf4_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf4_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf4_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf4_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf4-sub.yml b/.github/workflows/ax7203-gf4-sub.yml index 8030fd6b90..b82720631c 100644 --- a/.github/workflows/ax7203-gf4-sub.yml +++ b/.github/workflows/ax7203-gf4-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf4_sub_ax7203; setundef -zero -params; write_json build/gf4_sub/gf4_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf4_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf4_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf4_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf4_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf4_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf4_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf6-clean.yml b/.github/workflows/ax7203-gf6-clean.yml index 2c8550a5fc..f141cfb55f 100644 --- a/.github/workflows/ax7203-gf6-clean.yml +++ b/.github/workflows/ax7203-gf6-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf6_clean_ax7203; setundef -zero -params; write_json build/gf6_clean/gf6_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf6_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf6_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf6_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf6_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf6_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf6_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf6-mul-clean.yml b/.github/workflows/ax7203-gf6-mul-clean.yml index 9c8445b9ad..8902b1846e 100644 --- a/.github/workflows/ax7203-gf6-mul-clean.yml +++ b/.github/workflows/ax7203-gf6-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf6_mul_ax7203; setundef -zero -params; write_json build/gf6_mul/gf6_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf6_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf6_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf6_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf6_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf6_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf6_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf6-sub.yml b/.github/workflows/ax7203-gf6-sub.yml index 0bf57e0889..9d123cc68c 100644 --- a/.github/workflows/ax7203-gf6-sub.yml +++ b/.github/workflows/ax7203-gf6-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf6_sub_ax7203; setundef -zero -params; write_json build/gf6_sub/gf6_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf6_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf6_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf6_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf6_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf6_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf6_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf8-clean.yml b/.github/workflows/ax7203-gf8-clean.yml index f51923e21b..8bfc0e988f 100644 --- a/.github/workflows/ax7203-gf8-clean.yml +++ b/.github/workflows/ax7203-gf8-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf8_clean_ax7203; setundef -zero -params; write_json build/gf8_clean/gf8_clean_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf8_clean/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf8_clean/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf8_clean/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf8_clean/chipdb/xc7a200tfbg484-2.bba /work/build/gf8_clean/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf8_clean/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf8-mul-clean.yml b/.github/workflows/ax7203-gf8-mul-clean.yml index 50c37fec90..48330a0437 100644 --- a/.github/workflows/ax7203-gf8-mul-clean.yml +++ b/.github/workflows/ax7203-gf8-mul-clean.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top gf8_mul_ax7203; setundef -zero -params; write_json build/gf8_mul/gf8_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf8_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf8_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf8_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf8_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gf8_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf8_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search — placer heap + per-seed timeout, lessons from gf20) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gf8-sub.yml b/.github/workflows/ax7203-gf8-sub.yml index 8b3d3f02c8..776a459ac2 100644 --- a/.github/workflows/ax7203-gf8-sub.yml +++ b/.github/workflows/ax7203-gf8-sub.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top gf8_sub_ax7203; setundef -zero -params; write_json build/gf8_sub/gf8_sub_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gf8_sub/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gf8_sub/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gf8_sub/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gf8_sub/chipdb/xc7a200tfbg484-2.bba /work/build/gf8_sub/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gf8_sub/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8; do diff --git a/.github/workflows/ax7203-gfternary-mul.yml b/.github/workflows/ax7203-gfternary-mul.yml index b076fc05f4..7fd8174936 100644 --- a/.github/workflows/ax7203-gfternary-mul.yml +++ b/.github/workflows/ax7203-gfternary-mul.yml @@ -39,16 +39,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -nodsp -arch xc7 -top corona_compute_gfternary_mul_ax7203; setundef -zero -params; write_json build/gfternary_mul/gfternary_mul_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/gfternary_mul/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/gfternary_mul/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/gfternary_mul/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/gfternary_mul/chipdb/xc7a200tfbg484-2.bba /work/build/gfternary_mul/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/gfternary_mul/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (heap + sa seed search) run: | CLEAN=""; diff --git a/.github/workflows/ax7203-identity-echo.yml b/.github/workflows/ax7203-identity-echo.yml index 77cf769516..4bc3026d57 100644 --- a/.github/workflows/ax7203-identity-echo.yml +++ b/.github/workflows/ax7203-identity-echo.yml @@ -25,16 +25,11 @@ jobs: synth_xilinx -flatten -abc9 -nocarry -arch xc7 -top identity_echo_ax7203; setundef -zero -params; write_json build/identity_echo/identity_echo_ax7203.json" 2>&1 | tee /tmp/yosys.log grep -E "Estimated|ERROR" /tmp/yosys.log - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/identity_echo/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/identity_echo/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/identity_echo/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/identity_echo/chipdb/xc7a200tfbg484-2.bba /work/build/identity_echo/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/identity_echo/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (seed search) run: | CLEAN=0; for s in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do diff --git a/.github/workflows/ax7203-led-onehot.yml b/.github/workflows/ax7203-led-onehot.yml index 2877edbc10..c9d1f82d9b 100644 --- a/.github/workflows/ax7203-led-onehot.yml +++ b/.github/workflows/ax7203-led-onehot.yml @@ -43,28 +43,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_onehot/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_onehot/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_onehot/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_onehot/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_onehot/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_onehot/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_onehot/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route run: | diff --git a/.github/workflows/ax7203-rx-echo-hb.yml b/.github/workflows/ax7203-rx-echo-hb.yml index 173f6a093e..4e1961d6e3 100644 --- a/.github/workflows/ax7203-rx-echo-hb.yml +++ b/.github/workflows/ax7203-rx-echo-hb.yml @@ -41,28 +41,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_rx_echo/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_rx_echo/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_rx_echo/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_rx_echo/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_rx_echo/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_rx_echo/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_rx_echo/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route (seed search for a clean $PACKER_VCC_NET route) run: | diff --git a/.github/workflows/ax7203-trinet-baud.yml b/.github/workflows/ax7203-trinet-baud.yml index 626677a419..e495fe1043 100644 --- a/.github/workflows/ax7203-trinet-baud.yml +++ b/.github/workflows/ax7203-trinet-baud.yml @@ -62,17 +62,11 @@ jobs: echo "::error::DSP48 cells inferred"; exit 1 fi - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }}-${{ matrix.name }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/${{ matrix.name }}/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bba /work/build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (heap + sa seed search) run: | diff --git a/.github/workflows/ax7203-trinet-dna-probe.yml b/.github/workflows/ax7203-trinet-dna-probe.yml index 21d905d7ca..4ce7e3d6f5 100644 --- a/.github/workflows/ax7203-trinet-dna-probe.yml +++ b/.github/workflows/ax7203-trinet-dna-probe.yml @@ -49,16 +49,11 @@ jobs: exit 1 fi echo "zero-multiplier discipline: no DSP48 cells inferred" - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/trinet_dna_probe/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/trinet_dna_probe/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/trinet_dna_probe/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/trinet_dna_probe/chipdb/xc7a200tfbg484-2.bba /work/build/trinet_dna_probe/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/trinet_dna_probe/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (heap + sa seed search — the recipe large datapaths need) run: | CLEAN=""; diff --git a/.github/workflows/ax7203-trinet-fleet.yml b/.github/workflows/ax7203-trinet-fleet.yml index 86b6dcf658..37a1ef19ea 100644 --- a/.github/workflows/ax7203-trinet-fleet.yml +++ b/.github/workflows/ax7203-trinet-fleet.yml @@ -99,17 +99,11 @@ jobs: echo "::error::DSP48 cells inferred"; exit 1 fi - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }}-${{ matrix.name }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/${{ matrix.name }}/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bba /work/build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/${{ matrix.name }}/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (heap + sa seed search) run: | diff --git a/.github/workflows/ax7203-trinet-mac32.yml b/.github/workflows/ax7203-trinet-mac32.yml index 22c2334dc6..87fafffbd4 100644 --- a/.github/workflows/ax7203-trinet-mac32.yml +++ b/.github/workflows/ax7203-trinet-mac32.yml @@ -55,16 +55,11 @@ jobs: exit 1 fi echo "zero-multiplier discipline: no DSP48 cells inferred" - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/trinet_mac32/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/trinet_mac32/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/trinet_mac32/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/trinet_mac32/chipdb/xc7a200tfbg484-2.bba /work/build/trinet_mac32/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/trinet_mac32/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (heap + sa seed search — the recipe large datapaths need) run: | CLEAN=""; diff --git a/.github/workflows/ax7203-trinet-node-v2.yml b/.github/workflows/ax7203-trinet-node-v2.yml index a8259ba794..02be1bb039 100644 --- a/.github/workflows/ax7203-trinet-node-v2.yml +++ b/.github/workflows/ax7203-trinet-node-v2.yml @@ -62,16 +62,11 @@ jobs: exit 1 fi echo "zero-multiplier discipline: no DSP48 cells inferred" - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/trinet_node_v2/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - mkdir -p build/trinet_node_v2/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/trinet_node_v2/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/trinet_node_v2/chipdb/xc7a200tfbg484-2.bba /work/build/trinet_node_v2/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/trinet_node_v2/chipdb/xc7a200tfbg484-2.bin - name: nextpnr (heap + sa seed search — the recipe large datapaths need) run: | CLEAN=""; diff --git a/.github/workflows/ax7203-uart-loopback.yml b/.github/workflows/ax7203-uart-loopback.yml index 13c21a13f7..11a0df4c49 100644 --- a/.github/workflows/ax7203-uart-loopback.yml +++ b/.github/workflows/ax7203-uart-loopback.yml @@ -43,28 +43,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_loopback/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_loopback/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_loopback/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_loopback/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_loopback/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_loopback/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_loopback/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route (seed search for a clean $PACKER_VCC_NET route) run: | diff --git a/.github/workflows/ax7203-uart-tx-probe.yml b/.github/workflows/ax7203-uart-tx-probe.yml index 28bd817709..bc4671532f 100644 --- a/.github/workflows/ax7203-uart-tx-probe.yml +++ b/.github/workflows/ax7203-uart-tx-probe.yml @@ -42,28 +42,11 @@ jobs: " 2>&1 | tee /tmp/yosys.log grep -E "Estimated number of LCs|ERROR" /tmp/yosys.log - - name: Cache chipdb for xc7a200tfbg484-2 - id: chipdb-cache - uses: actions/cache@v4 + - id: chipdb-cache + uses: ./.github/actions/openxc7-chipdb with: - path: build/ax7203_uart_tx/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-openxc7-${{ github.run_id }} - restore-keys: | - chipdb-xc7a200tfbg484-2-regymm-openxc7- - - - name: Generate chipdb for xc7a200tfbg484-2 - if: steps.chipdb-cache.outputs.cache-hit != 'true' - run: | - mkdir -p build/ax7203_uart_tx/chipdb - docker run --rm \ - -v "$PWD:/work" -w /work \ - regymm/openxc7 \ - bash -c " - cd /nextpnr-xilinx && \ - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/ax7203_uart_tx/chipdb/xc7a200tfbg484-2.bba && \ - bbasm -l /work/build/ax7203_uart_tx/chipdb/xc7a200tfbg484-2.bba /work/build/ax7203_uart_tx/chipdb/xc7a200tfbg484-2.bin - " - ls -lh build/ax7203_uart_tx/chipdb/xc7a200tfbg484-2.bin + part: xc7a200tfbg484-2 + out: build/ax7203_uart_tx/chipdb/xc7a200tfbg484-2.bin - name: nextpnr place and route (seed search for a clean $PACKER_VCC_NET route) run: | diff --git a/.github/workflows/build-ax7203-bitstream-mul.yml b/.github/workflows/build-ax7203-bitstream-mul.yml index d4e1add57c..e97f91c1b0 100644 --- a/.github/workflows/build-ax7203-bitstream-mul.yml +++ b/.github/workflows/build-ax7203-bitstream-mul.yml @@ -14,19 +14,12 @@ jobs: - uses: actions/checkout@v4 with: submodules: true - - name: Generate chipdb cache - id: chipdb - uses: actions/cache@v4 + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: chipdb-xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-v2 - - name: Build chipdb (if not cached) - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - docker run --rm -v "$(pwd):/github" regymm/openxc7:latest bash -c ' - cd /nextpnr-xilinx/xilinx && - python3 python/bbaexport.py --xray /nextpnr-xilinx/xilinx/external/prjxray-db/artix7 --metadata /nextpnr-xilinx/xilinx/external/nextpnr-xilinx-meta/artix7 --device xc7a200tfbg484-2 --constids /nextpnr-xilinx/xilinx/constids.inc --bba /tmp/chipdb.bba && - bbasm --le /tmp/chipdb.bba /github/chipdb-xc7a200tfbg484-2.bin' + part: xc7a200tfbg484-2 + out: chipdb-xc7a200tfbg484-2.bin + image: regymm/openxc7:latest - name: Build bitstream run: | DESIGN="${{ github.event.inputs.design }}" diff --git a/.github/workflows/build-ax7203-bitstream.yml b/.github/workflows/build-ax7203-bitstream.yml index 0105e9495b..9173a09c8f 100644 --- a/.github/workflows/build-ax7203-bitstream.yml +++ b/.github/workflows/build-ax7203-bitstream.yml @@ -15,25 +15,12 @@ jobs: with: submodules: true - - name: Generate chipdb cache - id: chipdb - uses: actions/cache@v4 + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: chipdb-xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-v2 - - - name: Build chipdb (if not cached) - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - docker run --rm -v "$(pwd):/github" regymm/openxc7:latest bash -c ' - cd /nextpnr-xilinx/xilinx && - python3 python/bbaexport.py \ - --xray /nextpnr-xilinx/xilinx/external/prjxray-db/artix7 \ - --metadata /nextpnr-xilinx/xilinx/external/nextpnr-xilinx-meta/artix7 \ - --device xc7a200tfbg484-2 \ - --constids /nextpnr-xilinx/xilinx/constids.inc \ - --bba /tmp/chipdb.bba && - bbasm --le /tmp/chipdb.bba /github/chipdb-xc7a200tfbg484-2.bin' + part: xc7a200tfbg484-2 + out: chipdb-xc7a200tfbg484-2.bin + image: regymm/openxc7:latest - name: Full bitstream build run: | diff --git a/.github/workflows/build-ax7203-routing-test.yml b/.github/workflows/build-ax7203-routing-test.yml index 537b9adf1c..4ccd2c741f 100644 --- a/.github/workflows/build-ax7203-routing-test.yml +++ b/.github/workflows/build-ax7203-routing-test.yml @@ -21,19 +21,12 @@ jobs: steps: - uses: actions/checkout@v4 with: { submodules: true } - - name: Chipdb cache - id: chipdb - uses: actions/cache@v4 + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: chipdb-xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-v2 - - name: Build chipdb - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - docker run --rm -v "$(pwd):/github" regymm/openxc7:latest bash -c ' - cd /nextpnr-xilinx/xilinx && - python3 python/bbaexport.py --xray /nextpnr-xilinx/xilinx/external/prjxray-db/artix7 --metadata /nextpnr-xilinx/xilinx/external/nextpnr-xilinx-meta/artix7 --device xc7a200tfbg484-2 --constids /nextpnr-xilinx/xilinx/constids.inc --bba /tmp/chipdb.bba && - bbasm --le /tmp/chipdb.bba /github/chipdb-xc7a200tfbg484-2.bin' + part: xc7a200tfbg484-2 + out: chipdb-xc7a200tfbg484-2.bin + image: regymm/openxc7:latest - name: Build with custom options run: | DESIGN="${{ github.event.inputs.design }}" diff --git a/.github/workflows/build-matrix.yml b/.github/workflows/build-matrix.yml index 2d7e2e5098..7e84224f49 100644 --- a/.github/workflows/build-matrix.yml +++ b/.github/workflows/build-matrix.yml @@ -52,25 +52,12 @@ jobs: with: submodules: true - - name: Generate chipdb cache - id: chipdb - uses: actions/cache@v4 + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: chipdb-xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-v2 - - - name: Build chipdb (if not cached) - if: steps.chipdb.outputs.cache-hit != 'true' - run: | - docker run --rm -v "$(pwd):/github" regymm/openxc7:latest bash -c ' - cd /nextpnr-xilinx/xilinx && - python3 python/bbaexport.py \ - --xray /nextpnr-xilinx/xilinx/external/prjxray-db/artix7 \ - --metadata /nextpnr-xilinx/xilinx/external/nextpnr-xilinx-meta/artix7 \ - --device xc7a200tfbg484-2 \ - --constids /nextpnr-xilinx/xilinx/constids.inc \ - --bba /tmp/chipdb.bba && - bbasm --le /tmp/chipdb.bba /github/chipdb-xc7a200tfbg484-2.bin' + part: xc7a200tfbg484-2 + out: chipdb-xc7a200tfbg484-2.bin + image: regymm/openxc7:latest - name: Full bitstream build run: | diff --git a/.github/workflows/openxc7-build-timing.yml b/.github/workflows/openxc7-build-timing.yml index 34d695e2df..9e9be31335 100644 --- a/.github/workflows/openxc7-build-timing.yml +++ b/.github/workflows/openxc7-build-timing.yml @@ -55,22 +55,11 @@ jobs: done docker image inspect regymm/openxc7:latest >/dev/null - - name: Cache chipdb - id: cache - uses: actions/cache@v4 + - id: cache + uses: ./.github/actions/openxc7-chipdb with: - path: chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-v1 - - - name: Generate chipdb - if: steps.cache.outputs.cache-hit != 'true' - run: | - mkdir -p chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7 bash -c " - cd /nextpnr-xilinx && - python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/chipdb/xc7a200tfbg484-2.bba && - bbasm -l /work/chipdb/xc7a200tfbg484-2.bba /work/chipdb/xc7a200tfbg484-2.bin - " + part: xc7a200tfbg484-2 + out: chipdb/xc7a200tfbg484-2.bin - name: Upload chipdb uses: actions/upload-artifact@v4 diff --git a/.github/workflows/tnf-cost-sweep.yml b/.github/workflows/tnf-cost-sweep.yml index 278c96c859..e7578b3bd8 100644 --- a/.github/workflows/tnf-cost-sweep.yml +++ b/.github/workflows/tnf-cost-sweep.yml @@ -145,17 +145,12 @@ jobs: - name: Docker pull run: | for i in 1 2 3 4 5 6; do docker pull regymm/openxc7@sha256:eced1cdd4727549f2d983328e0cf170fb6f6f67d87f19b2bf24365163368c70c && break; sleep $((i*20)); done - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/tnfcost/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - name: Build chipdb - run: | - mkdir -p build/tnfcost/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7@sha256:eced1cdd4727549f2d983328e0cf170fb6f6f67d87f19b2bf24365163368c70c bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/tnfcost/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/tnfcost/chipdb/xc7a200tfbg484-2.bba /work/build/tnfcost/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/tnfcost/chipdb/xc7a200tfbg484-2.bin + image: regymm/openxc7@sha256:eced1cdd4727549f2d983328e0cf170fb6f6f67d87f19b2bf24365163368c70c - name: Place and route the Q1/Q2 arms run: | ARMS="${{ github.event.inputs.pnr_arms }}" diff --git a/.github/workflows/tnf-format-throughput.yml b/.github/workflows/tnf-format-throughput.yml index f208444acf..25388d03e5 100644 --- a/.github/workflows/tnf-format-throughput.yml +++ b/.github/workflows/tnf-format-throughput.yml @@ -90,17 +90,12 @@ jobs: - name: Docker pull run: | for i in 1 2 3 4 5 6; do docker pull regymm/openxc7@sha256:eced1cdd4727549f2d983328e0cf170fb6f6f67d87f19b2bf24365163368c70c && break; sleep $((i*20)); done - - uses: actions/cache@v4 - id: chipdb + - id: chipdb + uses: ./.github/actions/openxc7-chipdb with: - path: build/tnet/chipdb/xc7a200tfbg484-2.bin - key: chipdb-xc7a200tfbg484-2-regymm-${{ github.run_id }} - restore-keys: chipdb-xc7a200tfbg484-2-regymm- - - if: steps.chipdb.outputs.cache-hit != 'true' - name: Build chipdb - run: | - mkdir -p build/tnet/chipdb - docker run --rm -v "$PWD:/work" -w /work regymm/openxc7@sha256:eced1cdd4727549f2d983328e0cf170fb6f6f67d87f19b2bf24365163368c70c bash -c "cd /nextpnr-xilinx && python3 xilinx/python/bbaexport.py --device xc7a200tfbg484-2 --bba /work/build/tnet/chipdb/xc7a200tfbg484-2.bba && bbasm -l /work/build/tnet/chipdb/xc7a200tfbg484-2.bba /work/build/tnet/chipdb/xc7a200tfbg484-2.bin" + part: xc7a200tfbg484-2 + out: build/tnet/chipdb/xc7a200tfbg484-2.bin + image: regymm/openxc7@sha256:eced1cdd4727549f2d983328e0cf170fb6f6f67d87f19b2bf24365163368c70c - name: Place and route the arms run: | ARMS="${{ github.event.inputs.pnr_arms }}" From 779168a96a12a719d60db5011f13f72516bc730c Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Mon, 5 Oct 2026 10:37:24 +0700 Subject: [PATCH 2/2] ci(fpga): run one build when the shared chipdb action changes The openxc7-chipdb action is called by 46 workflows, and every one of them filters push on its own design files only, with no pull_request trigger. A change to .github/actions/openxc7-chipdb/ alone therefore ran nothing, on the PR or on main. Measured on this branch with a paths-coverage script: 46 of 46 triggers did not cover the action. - ax7203-led-onehot.yml (the smallest design, one seed) now runs on a PR that touches the action, and on a push to main that does, so main also warms the cache for a new key. - run-syntax-gate.yml watches .github/actions/**, which this PR creates; the gate reads composite actions once #894 lands. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ax7203-led-onehot.yml | 7 +++++++ .github/workflows/run-syntax-gate.yml | 2 ++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/ax7203-led-onehot.yml b/.github/workflows/ax7203-led-onehot.yml index c9d1f82d9b..155523679e 100644 --- a/.github/workflows/ax7203-led-onehot.yml +++ b/.github/workflows/ax7203-led-onehot.yml @@ -12,6 +12,13 @@ on: - 'fpga/vivado/led_onehot_ax7203.v' - 'specs/fpga/constraints/led_onehot_ax7203.xdc' - '.github/workflows/ax7203-led-onehot.yml' + - '.github/actions/openxc7-chipdb/**' + # The one build that runs when the shared chipdb action changes. None of the + # other workflows that call it watch .github/actions/, so without this an + # action-only change would reach main without a single run behind it. + pull_request: + paths: + - '.github/actions/openxc7-chipdb/**' jobs: bitstream: diff --git a/.github/workflows/run-syntax-gate.yml b/.github/workflows/run-syntax-gate.yml index 59b47d7369..6e40e08e27 100644 --- a/.github/workflows/run-syntax-gate.yml +++ b/.github/workflows/run-syntax-gate.yml @@ -10,11 +10,13 @@ on: branches: [main] paths: - '.github/workflows/**' + - '.github/actions/**' - 'tools/check_run_syntax.py' - 'tools/test_check_run_syntax.py' pull_request: paths: - '.github/workflows/**' + - '.github/actions/**' - 'tools/check_run_syntax.py' - 'tools/test_check_run_syntax.py' workflow_dispatch: