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
A staged physical-design flow: analytical global placement, routability/timing feedback, global routing guides, then detailed routing with strict design-rule handling.
Global placement is based on RePlAce: analytic nonlinear placement using electrostatic density modeling and Nesterov optimization.
Routability-driven placement runs routing-demand estimation such as RUDY, inflates cells in congested tiles, and iterates until congestion metrics improve or stop improving.
Timing-driven placement can reweight nets with bad slack through OpenSTA/repair-design integration.
Global routing plans coarse route guides and congestion before exact detailed wires are committed.
Detailed routing is based on TritonRoute, which uses an in-memory database and end-to-end detailed-routing scheme aware of connectivity and design-rule constraints.
Our placer already borrows the analytical/Nesterov family, but our routability loop is weaker and less calibrated.
Our router no longer jumps straight from placement to detailed paths: it now seeds global route-guide reservations and Pathfinder history before detailed A*. OpenROAD still has a more explicit global-routing database with guide ownership and violation reporting.
Our detailed route search has local sweeps/patches plus early pin-access and validation work. TritonRoute-style detailed routing treats guide compliance, pin access, and DRC legality as core objectives across the whole detailed router.
Our timing/electrical model is limited to net weights and diff-pair metadata. OpenROAD integrates timing and routability into placement decisions.
Global capacity reservation exists and improved the compact board benchmark to 0 shorts / 8 actionable opens, but it is still not a full guide database with capacities, ownership, and guide-violation repair.
No calibrated RUDY/global-routing congestion heatmap that changes component sizes/weights during placement.
Pad-access filtering exists for patch routing and endpoint radial access is now enabled by default, but not yet a full dense-package pin-access oracle for every main-route endpoint and via site.
Strict pre-commit geometry validation exists for rescue/patch candidates, but main sequential route commit still relies too much on retries, sweeps, and later rollback.
Promote global capacity reservation into a full global-routing stage: per-net route guides, layer demand, congestion maps, capacities, ownership, and guide-violation repair before detailed A*.
Feed congestion back into placement as inflation, not just net-weight boosts.
Build a pin-access oracle for every pad and branch: legal access points, via candidates, escape channels, and blocker explanations before A* starts.
Make detailed routing transactional: routes should prefer guide boxes, pre-validate every committed branch, shove blockers when necessary, and report guide violations separately from DRC.