Tasks/Systems & Hardware

EDA Flip-Flop Banking and Placement Optimization

Optimize multi-bit flip-flop grouping and legal placement across power, area, timing, and displacement costs

Systems & HardwareEDAphysical design
Background

Physical design automation for digital chips carries an unsettled trade-off: merging single-bit registers into multibit flip-flops saves clock power but displaces cells, straining timing and legal placement. The starting point is a template that parses a placement case and writes every flip-flop back unchanged, snapping cells onto legal row sites. Replacing it calls for a method that chooses which registers to merge, where to place them, and how to remap pins. Results must stay legal and functionally equivalent under cost weights unseen during development.

instruction.mdthis is what the agent is given

You inherit a deliberately weak template for an industrial-style EDA placement problem: multibit flip-flop (MBFF) banking and placement. Given a placement testcase, your method must emit a flip-flop placement + pin-mapping that minimizes a weighted cost (power, area, timing, displacement) while keeping the design legal and functionally equivalent. The shipped template only parses a case and writes a valid-but-unoptimized output — going weak→strong is the task. Your submission is re-run on sealed hidden testcases for scoring; mean_final_score is lower-is-better.

Hard Constraints

  • Submit an algorithm (solve), not precomputed answers — the grader re-runs your code on hidden cases. Do not key on visible or hidden filenames.
  • Keep the exact signature: solve(input_path: str, output_path: str) -> None. It reads one testcase from input_path and must write a valid output file to output_path.
  • You may move, bank, or debank flip-flops; you must not move or modify combinational gates.
  • Every output flip-flop instance must be inside the die, on a legal placement-row site, and non-overlapping.
  • D, Q, and CLK connectivity must stay functionally equivalent. Banking is only legal when all clock pins in the banked group connect to the same clock net.
  • The output must list only resultant flip-flop instances and original→result pin mappings.

What You Have

  • Visible testcases: /app/data/ (sampleCase, testcase1_0812.txt, testcase2_0812.txt). Hidden cases stay sealed in the grader and are scored under a different cost-weight regime — the Alpha/Beta/Gamma/Lambda weights and DisplacementDelay differ from the visible ones, so the power/area/timing/displacement trade-off is not the same one.
  • The editable baseline /app/methods/main/this directory is what gets graded. It is a minimal template: it parses a case and writes a valid unoptimized output (with a small legalization snap), so the solve(...) contract and output format are handled for you. It carries no real optimization. Improve it in place or replace the algorithm entirely.
  • Your self-check surface (free, unlimited): python /app/selfcheck.py runs your current methods/main/solver.py on the visible cases through the same legality + scoring gate the grader uses (sanityplacement_checkerpreliminary-evaluator, bundled in /app/tools/). It reports per case whether the placement is LEGAL and its score. An illegal placement scores nothing — validate here before relying on a change. The checker pipeline is slow on the large cases (full run ~3.4 min), so iterate against a single case (python /app/selfcheck.py sampleCase is seconds; python /app/selfcheck.py testcase1_0812.txt is ~80 s) and run the full set only before committing to a change.

What You Submit

Edit /app/methods/main/solver.py to expose this exact signature:

def solve(input_path: str, output_path: str) -> None:
    ...

You may add helper Python or C++ files next to solver.py (the runtime provides g++/make/Boost/OpenMP and python3/numpy). The output file format is:

CellInst <InstCount>
Inst <instName> <libCellName> <locationX> <locationY>
<originalCellPinFullName> map <resultCellPinFullName>
...

There is no submit step and no per-attempt feedback — work and self-check for as long as your run window allows, then leave your best solver.py in place. It is graded once at the end on the hidden testcases.

How It Is Judged

After your run, the grader copies your methods/main/ into a clean Linux x86_64 sandbox, runs your solve(...) on each hidden case, then runs the official checker/evaluator pipeline on each output:

  1. sanity
  2. placement_checker
  3. preliminary-evaluator

The raw metric is mean_final_score across the hidden cases, lower is better. A submission that is illegal on any hidden case earns no credit (it cannot bank a good mean from only its legal cases).

Rollouts

439 minWall clock
$93.93Spend
151.1MTokens
63Versions, 38 kept

On the visible set

760M 800M 840M 880M 920M 0 20 40 60 80 Agent step Testcase1_0812 score from the bu ↓ v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v18 v19 v20 v21 v22 v24 v25 v26 v27 v28 v30 v31 v32 v35 v36 v37 v38 v39 v40 v41 v42 v43 v45 v46 v47 v48 v50 v51 v52 v53 v54 v56 v57 v58 v59 v60 v61 v62
keptrolled backsubmitted
  1. v0The agent started from the untouched one-to-one baseline.925,943,0006 min · $1.06
  2. v1The agent solved the bank sizes exactly and grouped bits along a space-filling curve.774,744,00014 min · $2.38
  3. v2The agent tried limiting the site search to nearby rows, and global trade-offs were lost.825,488,721.523 min · $3.44
  4. v3The agent sped the legalizer up without moving a single cell.774,744,374.1426 min · $3.76
  5. v4The agent tried banking no wider than two bits, and the added area outweighed timing.786,687,468.2628 min · $4.20
  6. v5The agent grew banks from the farthest seeds outward and tightened every group.773,622,210.2433 min · $4.98
  7. v6The agent learned to split a 4-bit bank when no legal site sits close enough.742,454,509.7137 min · $5.80
  8. v7The agent tried valuing displacement higher, and the deferred pairs congested placement.745,833,600.6839 min · $6.16
  9. v8The agent split fewer banks and let the static savings win.741,975,927.8641 min · $6.60
  10. v9The agent split fewer still, and timing rose past the crossover.742,990,29544 min · $7.04
  11. v10The agent settled the split threshold and checked it against the held-out case.741,920,067.4347 min · $7.49
  12. v11The agent probed a midpoint threshold and froze the sweep.741,935,935.2249 min · $7.86
  13. v12The agent made bin density exact so a crowded hidden case cannot surprise it.741,920,067.4356 min · $9.26
  14. v13The agent rebuilt the evaluator's timing graph and re-ordered pins inside each bank.741,791,954.3669 min · $13.55
  15. v14The agent counted Q-pin delay when choosing which library cell to use.741,404,586.7574 min · $14.61
  16. v15The agent chose cell variant and pin order together without moving anything.741,320,613.978 min · $15.66
  17. v16The agent exchanged whole logical bits between the slots already placed.740,979,745.6785 min · $17.60
  18. v17The agent made those swaps affordable in a clock domain of twenty thousand bits.960,939.25 (subset)92 min · $19.10
  19. v18The agent learned to debank a pair back into singles when the timing pays.740,942,032.95102 min · $21.23
  20. v19The agent tried debanking more eagerly, and the extra cells were not repaid.740,848,445.55110 min · $21.98
  21. v20The agent tried judging splits on the original critical paths, and they were stale.740,914,813.03123 min · $23.12
  22. v21The agent tried deciding splits from a fully banked layout, and packing order was lost.740,918,539.14130 min · $24.00
  23. v22The agent probed one midpoint valuation and closed the scalar tuning.740,950,684.49133 min · $24.36
  24. v23The agent widened the swap neighbourhood for the very large clock domains.816,756.08 (subset)135 min · $24.84
  25. v24The agent added another convergence pass only where every clock domain stays small.740,933,833.89138 min · $25.31
  26. v25The agent tried trading sites between identical banks, and critical paths broke.741,086,872.45144 min · $26.08
  27. v26The agent tried pairing splits by exact displacement, and packing got worse.740,954,410.04147 min · $26.96
  28. v27The agent made every timing pass commit only on a proven global improvement.740,933,833.89153 min · $27.87
  29. v28The agent put the whole clock-remapping stage behind the same rollback guard.740,933,833.89158 min · $28.77
  30. v29The agent tried a second guarded remapping round and only paid runtime.152 s (runtime)162 min · $29.50
  31. v30The agent tried placing the edge-constrained banks first, and locality collapsed.758,412,277.76166 min · $30.23
  32. v31The agent ran a cautious and an aggressive split policy and kept the better result.740,840,066.75179 min · $32.32
  33. v32The agent adopted the bracketed endpoint and kept the cautious branch beside it.740,770,871.82188 min · $33.78
  34. v33The agent taught the optimizer to leave pre-existing multibit groups alone.594.877 (subset)192 min · $35.57
  35. v34The agent treated the density cap as a priced constraint instead of a wall.844.578 (subset)193 min · $36.06
  36. v35The agent let the aggressive branch buy a bin violation with a shorter move.740,770,871.82202 min · $38.08
  37. v36The agent put a verified identity solution underneath every optimized branch.740,770,871.82207 min · $39.56
  38. v37The agent visited first the banks carrying the most violated path mass.740,770,438.32213 min · $41.02
  39. v38The agent tried moving the most critical bits first, and the two cases disagreed.740,715,952.58220 min · $42.50
  40. v39The agent ran both clock orderings and let the exact objective settle it.740,715,952.58227 min · $44.44
  41. v40The agent weighted displacement by how critical each bit truly is.740,666,465.08237 min · $46.81
  42. v41The agent let that criticality weighting reach twice as far.740,655,940.75246 min · $49.01
  43. v42The agent pushed the cap higher and the dense and sparse cases split again.740,603,153.76255 min · $51.35
  44. v43The agent kept all four clock mappings and let the objective pick per case.740,603,153.76261 min · $52.93
  45. v44The agent tried a wider neighbourhood for huge domains and paid runtime for nothing.808,383.57 (subset)268 min · $54.53
  46. v45The agent weighted the D endpoints and the Q sources separately.740,455,413.98282 min · $57.85
  47. v46The agent pruned the clock strategy that had never won a case.740,455,413.98282 min · $58.30
  48. v47The agent let the pin-specific weighting reach further and both cases gained.740,453,448.55294 min · $61.32
  49. v48The agent closed the pin-weight sweep where the gains flattened out.740,453,036.88306 min · $64.29
  50. v49The agent tried pulling critical pins toward their drivers and sinks, and nothing moved.320 s (runtime)326 min · $69.54
  51. v50The agent tried dropping a timing pass to save time, and the score slipped.740,455,401.79332 min · $71.32
  52. v51The agent adopted the retuned endpoint while keeping the cautious branch.740,446,121.18351 min · $76.43
  53. v52The agent weighted clock assignment by how many endpoints are actually violated.740,099,740.11361 min · $77.72
  54. v53The agent pruned the strategies the count weighting had made redundant.740,099,740.11367 min · $78.18
  55. v54The agent tried doubling the count cap and found the extra range never used.740,099,740.11377 min · $79.05
  56. v55The agent tried extra candidate windows for big domains, and they were already covered.798,504.02 (subset)395 min · $82.74
  57. v56The agent tried protecting runner-up paths too, and it over-protected them.740,121,740.96404 min · $84.24
  58. v57The agent allowed a fourth timing pass wherever it still commits.740,099,266.17406 min · $85.34
  59. v58The agent allowed a fifth pass and took the last small gain.740,099,165.71407 min · $85.84
  60. v59The agent tried ordering the within-bank descent by endpoint count, and magnitude won.740,099,350.83416 min · $87.99
  61. v60The agent tried converging before the clock stage, and it reached the same point.740,099,165.71423 min · $89.79
  62. v61The agent tried a lower count cap and lost weighting range that mattered.740,124,689.31429 min · $91.16
  63. v62The agent tried discounting the pins that are not active, and balance was lost.740,121,087.26438 min · $93.36

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (GPT-5.6-sol)33,488,184.160.6344
1,221 minWall clock across 3 runs
$92.77Spend
144.1MTokens
18Versions, 11 kept

On the visible set

255M 270M 285M 300M 315M 0 4 8 12 16 Agent step Visible placement score ↓ v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v12 v15 v16 v17
keptrolled backsubmitted
  1. v0The agent inherited an identity placement with no banking309,206,249.444 min · $6.00
  2. v1The agent rewrote the solver around an exact replica of the scorer257,683,60584 min · $13.96
  3. v2The agent added an incremental timing model and a cost-driven banker250,121,40898 min · $15.81
  4. v3The agent added multi-pass refinement and self-calibrated the timing factor248,381,980117 min · $17.47
  5. v4The agent re-clustered leftover single-bit cells and guarded against dropped bits248,223,817132 min · $18.46
  6. v5The agent priced bin utilisation incrementally inside the banker's cost248,223,817153 min · $20.09
  7. v6The agent added timing-repair positions and a budgeted four-run portfolio248,242,233.6218 min · $22.02
  8. v7The agent penalised Qpin delay linearly when choosing library cells248,367,527228 min · $22.46
  9. v8The agent reverted the qdelay heuristic but kept the alternative-cell fallback248,242,233.6238 min · $22.71
  10. v9The agent split groups by aspect-aware partition and least pin displacement248,454,502279 min · $24.15
  11. v10The agent offered extra candidate positions per placement optionno number logged$25.98
  12. v11The agent tried critical-first, y-order and unsorted group processingx 797560, others worse$27.82
  13. v12The agent hardened the solver with identity-first writing and off-grid snapping248,240,900.3339 min · $29.65
  14. v13The agent re-offered each group's current placement to make refinement monotoneno number logged$30.36
  15. v14The agent let one group come out as a mix of cell sizesno number logged$31.07
  16. v15The agent generalised clock-pin detection and extended the wall-clock deadline248,240,900.3363 min · $31.78
  17. v16The agent added a last-ditch raw identity writer for parse failures248,240,900.3400 min · $34.42
  18. v17The agent rebuilt the global-polish pipeline after the filesystem rollback246,783,9051,221 min · $92.77

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (Opus 5)33,935,861.390.5987
41 minWall clock
$7.27Spend
47.3MTokens
4Versions, 3 kept

On the visible set

255M 270M 285M 300M 315M 0 1 2 2 3 Agent step Testcase1_0812 score from the bu ↓ v0 v1 v2 v3
keptrolled backsubmitted
  1. v0The agent inherited the unbanked baseline placement309,206,255
  2. v1The agent wrote a native C++ clustering and legalisation engine263,141,241.6
  3. v2The agent added exact multi-library evaluation and branch-and-bound site search253,650,738.3
  4. v3The agent expanded the candidate pool and added same-row swap refinement253,660,058.3

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (Gemini 3.7 Flash)59,120,193.720.3154
720 minWall clock
$32.16Spend
86.8MTokens
25Versions, 20 kept

On the visible set

250M 255M 260M 265M 270M 0 5 10 15 20 Agent step Testcase1_0812 score from the bu ↓ v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23
keptrolled backsubmitted
  1. v0The agent inherited the identity-placement templateinherited, never run$1.33
  2. v1The agent built a clock-domain clustering solver with grid and bin legalisationno number logged$2.67
  3. v2The agent freed all members during placement and ordered by density256,233,698.3$4.91
  4. v3The agent restricted placement to own members and corrected the TNS model272,218,701.3$7.67
  5. v4The agent placed banks from a free-site pool with acceptance tests253,682,301.6$8.43
  6. v5The agent restored rejected banks to their original positions253,406,765$9.20
  7. v6The agent added an exact incremental TNS tracker for acceptance decisions250,487,251.6$9.97
  8. v7The agent added two-pass clustering that retries leftover single-bit cells250,282,025$10.80
  9. v8The agent added a refinement pass trying ring-3 positions for hot banks250,252,951$11.32
  10. v9The agent picked the most compact subset from the six nearest candidates250,334,392$11.83
  11. v10The agent added extra placement anchors and a second refinement iteration250,240,730.3$13.08
  12. v11The agent merged neighbouring small banks into four-bit banks249,942,256$14.05
  13. v12The agent filtered merges and shrank the merge rings to cut runtime250,018,927$15.00
  14. v13The agent added a third clustering pass and multi-cell retyping249,982,082.6$15.40
  15. v13 (note)The agent recorded that the v13 snapshot was missing and supersededsnapshot missing$15.79
  16. v14The agent optimised slot assignment inside banks of three or more bits249,926,166$16.18
  17. v15The agent extended slot optimisation to two-bit banks249,901,807$16.59
  18. v16The agent switched to cone-based timing that overestimated TNS264,668,278.3$19.59
  19. v17The agent replaced the timing model with full arrival propagation250,118,922.6$22.59
  20. v18The agent refined hot single-bit cells with exact-evaluated nearby moves249,908,072.3$25.59
  21. v19The agent added bin-overflow relief to the refinement triggers249,908,072.3$26.69
  22. v20The agent hardened multi-bit inputs, clock guards and time budgets249,908,072.3$28.67
  23. v21The agent selected clustering subsets by gain instead of compactness249,769,555$29.51
  24. v22The agent widened the exact-evaluation top-k and the refinement ring249,981,279$30.35
  25. v23The agent switched clustering to a serpentine scanline order249,946,192$31.26

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (Kimi K3)36,029,643.830.5752
101 minWall clock
$13.61Spend
24.0MTokens
11Versions, 9 kept

On the visible set

247.5M 249.0M 250.5M 252.0M 253.5M 255.0M 0 2 5 8 10 Agent step Testcase1_0812 score from the bu ↓ v2 v3 v4 v5 v6 v7 v8 v8b v9
keptrolled backsubmitted
  1. v0The agent inherited the identity placement with site snappingsnapshot, est ~9.26e8
  2. v1The agent added cost-aware four- and two-bit banking with a site legaliserBank only where benefit per unit displacement, priced by the weights read from the input file, pays for the move.no number logged
  3. v2The agent switched to hierarchical nearest-neighbour clustering with a wider radius254,551,371.6
  4. v3The agent capped legaliser search by Manhattan distance and split unplaceable banksCap how far a bank may be walked to reach a legal site, and split it rather than let the legalizer cross the die.250,010,701.6
  5. v4The agent made the placement search budget proportional to banking benefit249,965,926.6
  6. v5The agent added same-row timing refinement and merged two-bit pairsGive each bank a search budget proportional to its own banking benefit, then refine timing within the row.249,908,795.8
  7. v6The agent paired leftover single-bit cells at twice the radius249,439,416.8
  8. v7The agent widened the cluster radius to eight times median nearest-neighbour248,641,595.8
  9. v8The agent widened the cluster radius to twelve times median nearest-neighbour248,135,262.5
  10. v8bThe agent seeded placement from pin-aware targets instead of cell centres248,518,197.8
  11. v9The agent mapped extra scan and reset pins and dropped dead refinement248,135,262.5

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (Grok 4.6)35,910,699.510.5765
127 minWall clock
$2.64Spend
15.1MTokens
2Versions, 1 kept

On the visible set

277.5M 285.0M 292.5M 300.0M 307.5M 0 0 0 1 1 Agent step Testcase1_0812 score from the bu ↓ v0 v1
keptrolled backsubmitted
  1. v0The agent inherited the legalise-and-snap template309,206,235.6$1.31
  2. v1The agent built a greedy banking optimiser with exact accept-or-rollback moves273,636,625126 min · $2.62

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (DeepSeek V4 Pro)59,286,214.370.3136
215 minWall clock
$21.52Spend
43.6MTokens
5Versions, 4 kept

On the visible set

285.0M 292.5M 300.0M 307.5M 0 40 80 120 Agent step Testcase1_0812 score from the bu ↓ v1 v2 v3 v4 v5
keptrolled backsubmitted
  1. v1The agent inherited the template baseline309,206,249.473 min · $5.98
  2. v2The agent banked same-clock vertical stacks by exact weighted model delta304,242,008.886 min · $7.88
  3. v3The agent added nearby pair and quad banking with gate-aware placement search283,277,286.7148 min · $13.62
  4. v4The agent upgraded timing to per-sink wire delay with arrival propagation283,231,941.6187 min · $18.69
  5. v5The agent kept diverse library cells for electrical and placement variety282,701,991.7215 min · $21.41

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (Qwen3.8 Max)59,520,814.740.3109
305 minWall clock
$33.21Spend
118.4MTokens
15Versions, 13 kept

On the visible set

255M 270M 285M 300M 315M 0 3 6 9 12 Agent step Testcase1_0812 score from the bu ↓ v0 v2..v4 v6 v7 v8 v9..v11 v11 v12..v13 v13 v14 (final)
keptrolled backsubmitted
  1. v0The agent inherited the unbanked baseline309,206,249.432 min · $4.21
  2. v1The agent rewrote the solver with Hilbert clustering and nearest-slot legalisationno number logged59 min · $8.46
  3. v2..v4The agent chose each bank's realisation by the displacement-versus-slack trade-off251,249,748.3$10.27
  4. v5The agent swept a kappa ladder and kept the best-scoring realisationno number logged$12.09
  5. v6The agent fixed reference counting so speculative placements stopped overlapping248,775,721.698 min · $13.90
  6. v7The agent made the slot search minimise the penalty the score pays249,201,801.6$15.05
  7. v8The agent replaced Hilbert runs with nearest-neighbour bank growth248,840,811.6115 min · $16.20
  8. v9The agent fixed two timing-graph bugs that under-reported the TNS costno number logged$18.45
  9. v9..v11The agent swept kappa crossed with bank-processing order under a wall-clock budget247,289,558.3$20.71
  10. v10The agent hoisted evaluator preparation out of the search loopno number logged$22.96
  11. v11The agent added an identity-output fallback and a non-uniform-grid guard247,289,558.3$25.22
  12. v12..v13The agent added a rip-up refinement pass that never beat the greedy247,328,765$27.47
  13. v13The agent removed dead code and re-verified identical scores247,289,558.3$29.73
  14. v14The agent reshaped the search grid and dropped the losing y-sweep ordertc2 886.6K, unlucky294 min · $31.98
  15. v14 (final)The agent made the insertion orders three deterministic sweeps247,250,270$32.59

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (GLM 5.3)42,677,384.650.5004
44 minWall clock
$7.09Spend
8.8MTokens
8Versions, 6 kept

On the visible set

300M 302M 304M 306M 308M 0 20 40 60 80 Agent step Testcase1_0812 score from the bu ↓ v1 v2 v3 v4 v5 v6 v7
keptrolled backsubmitted
  1. v0The agent inherited the site-snapping templateinherited, never run1 min · $0.23
  2. v1The agent banked conservative same-clock vertical stacks inside the freed footprint308,854,59511 min · $1.80
  3. v2The agent added horizontal same-row banking for side-by-side runs307,125,261.620 min · $2.79
  4. v3The agent added same-bit library resizing for unbanked flip-flops299,228,261.628 min · $3.89
  5. v4The agent credited signed Qpin-delay gains in the resizing score299,241,391.631 min · $4.37
  6. v5The agent hardened same-bit replacement for cells with multiple clock pins299,228,261.632 min · $4.81
  7. v6The agent generalised footprint banking to multi-bit source instances299,228,261.636 min · $5.66
  8. v7The agent added same-name fallback mapping for unusual library pins299,228,261.640 min · $6.28

On the hidden set

Original metricNormalised score
Starter87,162,537.500.00
Frontier-calibrated reference33,824,200.810.60
Upper29,919,173.801.00
This run (GPT-5.5)79,091,577.370.0908

Leaderboard

Where each run landed on the sealed held-out set, on the same normalised-score scale as the anchors above.

0 0.3 0.6 1.0 1 GPT-5.6-sol codex · max 0.634 2 Opus 5 claude code · max 0.599 3 Grok 4.6 grok · xhigh 0.577 4 Kimi K3 kimi cli · max 0.575 5 GLM 5.3 claude code · max 0.500 6 Gemini 3.7 Flash antigravity · high 0.315 7 DeepSeek V4 Pro claude code · max 0.314 8 Qwen3.8 Max qwen coder · xhigh 0.311 9 GPT-5.5 codex · xhigh 0.091