diff --git a/.github/actions/openxc7-chipdb/action.yml b/.github/actions/openxc7-chipdb/action.yml new file mode 100644 index 000000000..2a06441b4 --- /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 1d38679a0..89183ba1a 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 5c4e97de1..1bdeb390c 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 c256ea23a..bcc6577bb 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 085b3c0ea..948cb7f47 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 b4d239c53..bc09c2fb4 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 fa0b8e75d..7b3a8d6a6 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 8cb8dfd2f..421a1c14d 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 96791df5e..fdfd10b83 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 f2cbe10b5..883a55dd0 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 fc6ceb949..1c715568b 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 54037e87b..47c54ae70 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 78222e334..2ae41d1b1 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 8dab954f9..51926338e 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 4897261b1..17031faf6 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 9e1c3e903..c338161ad 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 57f7733f3..6f6b34d18 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 8f83a6ca5..061d6621e 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 6ed7cb1ff..220d2c6ae 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 58c845437..1b016c2c5 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 b828e4a7f..bec340bda 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 010c039f6..9d7dc3305 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 631c4ce52..faadca4db 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 dbf617cfe..08badd4ee 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 d1d3c77a3..c655d6df1 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 286e7e90c..a9c24afcb 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 1ae1e7ab2..1b7179e5a 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 a7a084808..eb2e7bd95 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 87fd2e4c0..3f7d67616 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 8030fd6b9..b82720631 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 2c8550a5f..f141cfb55 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 9c8445b9a..8902b1846 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 0bf57e088..9d123cc68 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 f51923e21..8bfc0e988 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 50c37fec9..48330a043 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 8b3d3f02c..776a459ac 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 b076fc05f..7fd817493 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 77cf76951..4bc3026d5 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 2877edbc1..155523679 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: @@ -43,28 +50,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 173f6a093..4e1961d6e 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 626677a41..e495fe104 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 21d905d7c..4ce7e3d6f 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 86b6dcf65..37a1ef19e 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 22c2334dc..87fafffbd 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 a8259ba79..02be1bb03 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 13c21a13f..11a0df4c4 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 28bd81770..bc4671532 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 d4e1add57..e97f91c1b 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 0105e9495..9173a09c8 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 537b9adf1..4ccd2c741 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 2d7e2e509..7e84224f4 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 34d695e2d..9e9be3133 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/run-syntax-gate.yml b/.github/workflows/run-syntax-gate.yml index 59b47d736..6e40e08e2 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: diff --git a/.github/workflows/tnf-cost-sweep.yml b/.github/workflows/tnf-cost-sweep.yml index 278c96c85..e7578b3bd 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 f208444ac..25388d03e 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 }}"