Live Agent working · engine-01 Placer/router engine positioning
EDA-01 - Placement and Routing Survey

State of the Art vs Our Pipeline

This survey compares our scripted KiCad/TOML/Rust/PyTorch flow against commercial PCB tools, open-source PCB routing, and IC physical-design research. The useful lesson is not that we should clone any one tool. It is that mature flows split placement and routing into clearer stages, keep constraints active everywhere, and benchmark post-route outcomes instead of trusting a single objective score.

7
References
3
PCB Classes
2
IC Flows
1
Learning Track
0
Net Hardcodes
Survey Pages
Altium

Altium ActiveRoute and Interactive Routing

Open

Altium is not trying to make a black-box autorouter the designer blindly trusts. Its strongest routing story is auto-interactive: the user selects nets, layers, and intent, while the router handles local geometry, obstacle avoidance, differential pair rules, and post-route glossing.

PCB interactive + guided automatic routing
Cadence

Cadence Allegro X

Open

Allegro X is a high-end enterprise PCB platform. Public details are less algorithmic than open tools, but the architecture is clear: constraints, collaboration, advanced routing, real-time checks, package/PCB awareness, and now AI-assisted automation are treated as one system.

Enterprise constraint-driven PCB/package co-design
Siemens EDA

Siemens Xpedition

Open

Xpedition is positioned as an enterprise PCB environment where routing is not isolated. It is tied to constraints, design reuse, MCAD/ECAD collaboration, verification, supply-chain data, and increasingly AI-assisted workflow support.

Enterprise PCB layout, routing, verification, and digital thread
Open-source PCB ecosystem

KiCad Push-and-Shove and Freerouting

Open

This is the closest open-source PCB reference point. KiCad does not rely on a built-in black-box autorouter; its production strength is interactive push-and-shove. Freerouting fills the automatic-routing role through Specctra DSN/SES exchange.

Interactive routing plus external DSN/SES autorouting
OpenROAD

OpenROAD RePlAce, FastRoute, and TritonRoute

Open

OpenROAD is not a PCB tool, but its architecture is highly relevant. It separates placement, global routing, and detailed routing, with routability/timing feedback loops and a detailed router descended from TritonRoute.

Open-source IC placement, global routing, and detailed routing
NVIDIA / academic open-source EDA

DREAMPlace

Open

DREAMPlace is one of the clearest SOTA signals for our placer because our placer is already PyTorch/Nesterov-like. The lesson is not just GPU use; it is a clean separation between differentiable global placement kernels, detailed placement, routability, and timing extensions.

GPU-accelerated analytical placement
Google Research / TILOS / academic AI4EDA

Learning-Based Macro Placement

Open

Learning-based placement is relevant to us only after we have a robust conventional flow. Google Circuit Training frames placement as a learned sequential decision problem. TILOS and follow-on work emphasize reproducibility, stronger baselines, and full-flow evaluation.

Reinforcement-learning and learning-assisted floorplanning
Closed Or Partially Closed This Round

Global Capacity Reservation

Before detailed A*, the router builds coarse guide reservations, charges congestion history, and seeds guide candidates. Single-run benchmarks have varied between 0 / 7 and 0 / 12 unique opened nets; per-run variance is dominated by placer non-determinism (PyTorch CUDA without explicit seed), so individual scores should not be read as exact router quality.

Guide-First Route Intent

Branch guides are no longer only fallback hints. Long or hard branches try guide-first routing, and the guide centerline becomes a soft multi-layer sketch corridor for detailed A*.

Recursive ECO Shove

Detailed ECO can remove a target route, reroute it, recursively reroute blockers, and rollback the whole transaction if the result is worse.

Endpoint Radial Access (load-bearing)

Endpoint access is now required for correctness, not just an enhancement: with ROUTER_ENDPOINT_ACCESS=0 the current binary emits 199 shorts. The radial-access nodes are not a full pin-access oracle yet — they only add planar (LayerEdge) connectivity, not via edges, and they only check obstacles per-layer at the candidate point.

Strict Candidate Validation

Rescue and patch candidates are pre-checked for trace-via, trace-pad, trace-trace, via-track, via-via, and via-pad conflicts before commit. Disabling it (KVM_RESCUE_GEOMETRY_VALIDATION=0) makes scores worse, confirming the validator is helping rather than rejecting good candidates.

Pair Coupling Bias (no measured effect)

Differential-pair N-side routing applies a soft reward for following the P-side path. Confirmed empirically that DIFF_PAIR_COUPLING_STRENGTH 0.15 vs 0.35 produces byte-identical router output on this board, and the bias is too small to flip A* path selection given current congestion costs. Treat this as infrastructure landed, not a closed gap. The real fix is true coupled co-search (see Next Gaps).

Gap Summary

Constraint System

Our Current Shape

TOML constraints, Python board config, Rust router flags, KiCad DRC, and cleanup heuristics all carry part of the truth.

SOTA Pattern

Commercial PCB flows use one constraint database that placement, routing, tuning, checking, and reporting all consult.

Next Move

Promote constraints into a typed design graph with rule provenance on every placement, routing, and DRC decision.

Placement

Our Current Shape

Our placer is already in the analytical/Nesterov family, but routability feedback is still coarse and legalization is mostly greedy.

SOTA Pattern

OpenROAD/DREAMPlace-style flows separate global placement, detailed placement, legalization, routability, and timing feedback.

Next Move

Add global/detailed/legalize phases with congestion inflation, pin-access cost, board-edge mechanics, and benchmarked seeds.

Routing

Our Current Shape

Our router has 3D A*, BGA fanout, congestion negotiation, and emerging ECO patching, but detailed routing is still late and local.

SOTA Pattern

SOTA routers use route guides, pin-access oracles, recursive shove, transactional edits, and rule-aware glossing as core stages.

Next Move

Insert global routing before detailed routing, then make the detailed router guide-aware, shove-capable, and transactional.

Verification Feedback

Our Current Shape

We check with KiCad DRC and our own overlap/connectivity tools after generation, then feed some failure state into reruns.

SOTA Pattern

Enterprise PCB flows bring SI, PI, thermal, DFM, mechanical, and rule checks earlier so they influence layout decisions.

Next Move

Turn verification outputs into weighted maps and structured failure records that can drive placement and routing, not just report pass/fail.

Benchmarking

Our Current Shape

We have repeatable scripts and fast loops, but benchmark datasets, fixed seeds, competitor harnesses, and per-commit quality dashboards are incomplete.

SOTA Pattern

OpenROAD, DREAMPlace, and TILOS-style work make quality claims against shared suites and full-flow post-route metrics.

Next Move

Track area, HPWL, wirelength, vias, shorts, opens, DRC, runtime, seed, and knobs for every benchmarked board.

Next Gaps Most Likely To Fix Current Opens

Full Pin-Access Oracle

Highest priority. Per-pad legal escape graph computed before routing: for each pad, enumerate access points (legal exit directions, layers, via sites that do not intersect adjacent pads). A* uses access points as graph endpoints, not the pad center. Fixes the J5 front-panel header failures (HDD_LED_N, PWR_LED_P, RST_BTN_L) where traces approach through GND-pad territory and get rejected, and the I2C tree failures where multi-drop branch points have no escape model.

True Bundle and Diff-Pair Routing

The current pair coupling bias is decorative on this board (proven no-op). Replace with coupled 2-net A* where the search state is (P_node, N_node) and edges enforce pair gap + skew, OR plan the pair as a bundle: reserve a width = 2×trace + gap corridor on each chosen layer, then commit P and N together. Fixes the "other side took the only channel" failures (CSI_D1N, HDMID2P).

Filtered Power Island Routing

AVDD-style failures (AVDD12_FILT, AVDD33_FILT, PCKIN_FILT, REXT_PIN) are short 2-pin nets connecting a discrete passive to an IC pin near the BGA. Treat them as a dedicated phase before BGA escape: identify by topology, route with a local Steiner solver that knows plane/cutout geometry, reserve their corridor and via sites first.

Multi-drop Steiner Topology

Replace rectilinear MST with FLUTE/Hanan-grid Steiner tree builder, congestion-aware. Multi-drop buses (I2C_SCL, I2C_SDA reaching 3+ destinations) currently fail because branch-point selection ignores the congestion landscape. Smaller scope than the oracle but well-studied.

Transactional Main-Route Commit

Move strict pre-commit validation + recursive shove into the normal sequential routing commit path, not just rescue/repair. Routes that would fail validation should retry with shove rather than commit-then-sweep-then-fail. Lower priority once the access oracle exists, since fewer sweeps will fire.

Top Recommendations
  1. Do Promote constraints into one typed design database shared by schematic generation, placement, routing, cleanup, DRC, and site reporting.
  2. Do Promote the new global capacity reservation into a full global router: route guides, layer demand, congestion maps, capacity ownership, guide violations, and routability feedback to placement.
  3. Do Continue maturing the detailed router: full pin-access oracle, production-grade recursive shove, transactional main-route commit, and guide-aware A* are now partially started.
  4. Do Make differential pairs and bundles first-class multi-net routing objects instead of independent routes with a reference bias.
  5. Do Expand route-intent/sketch corridors from branch guides into a full global-routing guide database derived from constraints, not net names.
  6. Do Add benchmarking discipline: stable datasets, fixed seeds, competitor harnesses, and post-route metrics per commit.
  7. Do Instrument everything: live logs, structured failure records, per-net blocker histories, and visual heatmaps on the dev site.
What We Already Have

The foundation is credible: source-generated schematics, a typed design graph, an analytical placer, Rust routing, live logs, renders, and scripted validation. That is stronger reproducibility than many GUI-first flows.

What Is Being Closed

Global capacity reservation, sketch-style guide intent, endpoint radial access, recursive ECO shove, and strict candidate validation are in the core flow. The remaining failures concentrate in four mechanisms — front-panel header pin access, coupled diff-pair channels, filter islands near the BGA, and I2C bus topology — each of which has a specific architectural fix on the Next Gaps list.

Latest Worklog

Eleven floor failures, four architectural gaps

After a parameter sweep showed that the recent score regression was placer non-determinism rather than router quality, we read the per-net failure logs and found that the same eleven nets fail across every router configuration. They cluster into four mechanisms — front-panel header pin access, coupled diff-pair channels, filter islands near the BGA, and I2C bus topology — each mapping to a specific Next Gap on this page.

Read the war story