Skip to content

ci(fpga): place gf6/gf8/gf16-mul-clean and gf24-sub with HeAP, not SA - #864

Merged
gHashTag merged 1 commit into
mainfrom
ci/heap-mul-gf24-sub
Oct 4, 2026
Merged

gHashTag merged 1 commit into
mainfrom
ci/heap-mul-gf24-sub

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Second batch from the #862 placer audit, after #863. Four workflows move from --placer sa to --placer heap. Nothing else changes: same image tag, router1, --freq 50, seeds 1-8, first clean seed wins.

Measured in run 37215621928 (exp-sa-audit-ab2), which used the same sources, xdc and Yosys flags as each workflow, and seeds 1-16 for both placers:

workflow SA clean of 16 SA, this loop today HeAP clean of 16 HeAP s/seed Fmax SA → HeAP
ax7203-gf16-mul-clean 4 (6, 11, 12, 15) 98 s, seed 6 16 8-10 27.9-37.2 → 60.6-66.5 MHz
ax7203-gf8-mul-clean 4 (4, 10, 11, 12) 80 s, seed 4 16 5-7 42.3-51.4 → 102.2-116.0 MHz
ax7203-gf6-mul-clean 4 (8, 10, 11, 15) 194 s, seed 8 16 5-6 42.4-59.1 → 146.6-159.2 MHz
ax7203-gf24-sub 3 (6, 8, 13) 215 s, seed 6 16 6-9 15.6-16.2 → 26.3-28.1 MHz

"This loop today" is the sum of the per-seed times for seeds 1 to the first clean one, i.e. what the existing step spends before it breaks. Under HeAP it stops at seed 1.

Why SA failed, over the four designs: 49 of 64 seeds failed. 41 of those hit post-placement validity check failed for Bel 'SLICE_.../A5FF' (openXC7/nextpnr-xilinx#162; 40 say "(no cell)", one names a cell), 6 left $PACKER_VCC_NET unrouted, and 2 hit the router1.cc:331 assert valid_wires_for_net.count(w). HeAP: 0 of 64 failed.

Also fixed: the three MUL workflows named their step "placer heap + per-seed timeout" while passing --placer sa. The name is now true.

Left alone, for the owner: ax7203-gf16-conformance.yml (gf16_codec). Same picture: SA 2 of 16 clean (seeds 8 and 9), HeAP 16 of 16 at 2-4 s, Fmax 83.7-95.4 → 258.3-309.8 MHz. Its loop only goes green because seed 8, the last seed it tries, happens to place. It prints Fmax into the log, so switching it changes a number someone may be quoting; that is a separate decision.

Not measured

Refs #862

🤖 Generated with Claude Code

SA hits openXC7/nextpnr-xilinx#162 (post-placement validity check failed
for Bel 'SLICE_.../A5FF') on all four designs and placed 3-4 of seeds 1-16.
HeAP placed 16 of 16 on each, at 5-10 s per seed and higher Fmax.
Measured in run 37215621928 with the same sources, xdc and Yosys flags.

The seed-search step goes from 98/80/194/215 s under SA (first clean
seed 6/4/8/6) to the first seed under HeAP. The three MUL step names
already said 'placer heap' while passing --placer sa; now they are true.

Refs #862

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

X Brain Health Check

Score: 100.0/100
Status: 🟢 HEALTHY
Threshold: 80/100

X Brain is above merge threshold

@github-actions

github-actions Bot commented Oct 4, 2026

Copy link
Copy Markdown

🧪 Brain Stress Test Results

Score: not measured (no stress test prints a Score: line)
Status: 🟢 PASS
Threshold: 270/300

X Stress test passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant