soldermask

the input, drawn: one channel on the 32 × 32 grid

ISOnet

a network that learns the router's verdict

ISOnet answers one question about a placement in about a millisecond: will freerouting close every net on it? It was the lab's first learned model, and what happened to it is why everything after it looks the way it does — a number we believed, an audit that took the number apart, and the part of it left standing.

what it sees

A placement is not shown to the network as a picture of a board. It is rasterised onto a 32 × 32 grid — a 40 mm board is seen at 1.25 mm a cell — as eight channels: an analytic congestion estimate, pad coverage, pin coverage, part bodies, through-hole pads, wide nets, local net degree, and keepout. Twenty-odd scalars ride alongside the maps: board size and aspect, part, net and pin counts, occupancy, half-perimeter wirelength, degree statistics, the congestion estimate's own peaks. A small convolutional stack pools the maps, joins them to the standardised scalars through one hidden layer, and returns a probability. A second head upsamples the last features back to the grid and predicts two pictures instead of one number: where copper will end up, and which pins the router will fail to reach.

what it scored

0.744on 256 boards it had never seen — a different split, a different judge, and the number we would quote first — 981 placements, bootstrap over boards [0.690, 0.795]
0.953AUC, held out by board family, pooled over every kind of placement — on the labels it was fitted to
0.937the same model, re-judged against the corrected labels — among anneals, 0.923; the retrain is not done
0.935among annealed placements only, on the labels it was fitted to
0.89on PCBench, an external set nobody here chose — [0.83, 0.93]; 0.85 among their anneals
± 0.02calibration on its own labels; against the corrected ones the error is 0.07, and on the unseen boards it is 0.38 — it calls them 0.27 where 0.65 of them route
0.78 / 0.64the heat head naming a pin the router will not reach, at pin cells, against the analytic baseline

Four of these are the same weights measured four ways, and they are quoted together on purpose. A quarter of the corpus's labels were corrected on 4 September, when the edge-band defect was found, and this model has not been retrained on them — so 0.953 is what it scored against the labels it was fitted to, and 0.937 is the same weights judged against the labels as they now stand. The external 0.89 has its own asterisk: freerouting vendors a copy of PCBench inside its own fixtures, and until 5 September 866 byte-identical copies of held-out boards sat in the training directory, so about a twelfth of that test set had been seen. They are out, and the test is held by content now rather than by path.

The heat head also scores 0.99 over all cells. That is not a result: “is there a pin here” alone scores 0.98 on that measure, which is why the number we quote is the one restricted to cells that already hold a pin.

what the audit found

On 4 September we ran the shipped model against the corpus on disk — 9,825 usable routes as it then stood, 2,423 of them held out or external, over 609 families — with one question: is this useful, or is it a number? The AUC reproduced. Then it came apart.

A model that sees no placement at all — only which board this is, scored by that family's clean rate — reaches 0.925 of ISOnet's 0.953. It can do that because 81% of held-out families are always-clean or never-clean across every placement they have, random scatters included. Among the anneals of a single board the ordering is near chance: within-board AUC 0.60, confidence interval [−0.03, +0.22].

Deployed the way it was meant to be used — rank six candidate placements, route the best three, 36 real families — the model produces a clean board within three routes 69.4% of the time. Ranking at random gets 68.8%; a perfect oracle gets 69.4%. Router runs per board: 1.67 against random's 1.70. The ordering saves about three tenths of a second.

Then we perturbed placements it had scored clean. Moving a hub part to the far corner of the board, where it creates no courtyard overlap, moves the predicted probability by a median of −0.007; a 2 mm nudge moves it by nothing. A move that creates an overlap drops it by −0.95. On the placer's own distribution ISOnet is a courtyard-overlap detector with a board-density prior — and a logistic regression on eight scalars recovers 0.83 of the 0.95.

The AUC was real, reproducible, and honestly split. The skill was between boards rather than between placements, and between boards is not where a placer needs help.

the number does not travel

A reviewer of the Mendicant paper asked for the network as a baseline on the slime mould's held-out set, and the question turned out to be sharper than it looked. Those 2,000 boards were held out of the mould's tuning, not out of the network's training, and 1,518 of the 1,774 judged ones are in its corpus. Scoring the shipped weights on the 256 that are not — 981 placements, 345 of them failing under both routers — gives the honest external reading, and it is 0.744.

Two things follow. The first is that 0.954 was measured on the network's own split, under the corpus's own judge, on the corpus's placements; on boards it has never seen, under KiCad's own DRC, it scores what the audit said it would. The second is the comparison: on the same boards, the mould's count of pins with no way out — an instrument that was never fitted to anything — reads 0.770, and the difference of +0.026 for the instrument has an interval of [−0.031, +0.082]. A learned model and a ruler land in the same place. Under freerouting's label alone, the one the network was trained on, it edges ahead, 0.737 to 0.719; under the second router's it is behind, 0.702 to 0.747. Within a board both are flat: 0.542 and 0.453.

They are not the same reading — Spearman +0.50 — and they add: a leave-one-out logistic on the net count alone reaches 0.775 with the network, 0.801 with the two mould readings, 0.821 with all three. And the calibration does not carry at all. The network gives these placements a mean probability of routing of 0.27, where 0.65 of them route under either router and 0.46 under freerouting, because it was calibrated to freerouting under the corpus's stricter bar.

what it is kept for

It is retired from ranking placements. It stays as a calibrated gauge of how crowded a board is — a use its bimodal reliability suits, since 73% of its held-out predictions sit in the 0–0.1 or 0.9–1.0 band — and as the heat head, which is the only part of it that says something local. Naming the pin a router will strand is a different job from scoring a whole placement, and it is the job the picture head measurably does.

the oracle it learned

A label in this corpus means one specific thing: freerouting closes every net at the board's own clearance rule, inside 40 passes and 180 seconds, parts on one side, with no ground pour. That is a freerouting-finishes probability, not a routability probability, and the gap between them is wide. The clean rate collapses with part count — 16% at 30 to 50 parts, 8% above 50 — on boards a person routes routinely. Freerouting's clean routes use a median 1.5 vias per net where a human does 0.3 to 0.5 on two layers. Thirty-seven per cent of dirty routes are rule violations rather than placements that could not be routed, and the router is about 2% nondeterministic run to run. Every model here inherits that oracle, so every page here says what it is.

furthering

The one experiment this page promised has been run and came back null. Mendicant's displaced count went in as another scalar beside the maps and through a four-fold crossval against an identical run with the column zeroed: the linear model moved +0.001, the network −0.005 and negative in every fold. It was reverted the same morning. A feature that predicts the router's vias is not thereby a feature that predicts its verdict.

What is left is labels that carry placement signal, since these ones mostly do not: the ground pour switched on, and where a route failed rather than whether it failed. A retrain on the corrected labels, which is owed. And a release of the corpus with its split hash, so the claim can be checked by someone who did not make it.

the other threads

Quorraa placer that listens to the judge

The audit's recommendation, built: not a new optimiser but a new cost and a stricter judge for the annealer we already had.

Mendicanta board, read as a molecule

Where ISOnet failed — a feature that varies within one board, independently of wirelength — an RNA fold succeeds.

All three, and how we work.