-
Notifications
You must be signed in to change notification settings - Fork 1
Document AutoPCB route-refinement boundary #19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,68 @@ | ||
| # AutoPCB Routing Integration Boundary | ||
|
|
||
| Date: 2026-08-19 | ||
|
|
||
| Solverang should support AutoPCB as a continuous-refinement engine, not as a PCB route authority. | ||
|
|
||
| ## Intended role | ||
|
|
||
| AutoPCB owns: | ||
|
|
||
| - discrete topology; | ||
| - layer and via-stack legality; | ||
| - route transactions; | ||
| - exact DRC and certificates; | ||
| - final route acceptance. | ||
|
|
||
| Solverang owns local continuous optimization problems after AutoPCB has selected a discrete route structure. | ||
|
|
||
| Examples: | ||
|
|
||
| - bend coordinate relaxation; | ||
| - length and skew tuning; | ||
| - differential-pair symmetry residuals; | ||
| - smooth clearance-margin objectives; | ||
| - local placement-route co-optimization; | ||
| - meander pitch and amplitude solving; | ||
| - via-position micro-adjustment inside a legal window. | ||
|
|
||
| ## Boundary contract | ||
|
|
||
| The AutoPCB adapter should compile a verified route fragment into a Solverang problem: | ||
|
|
||
| ```text | ||
| RouteFragment + RefinementWindow + ResidualSpec | ||
| -> SolverangProblem | ||
| -> CandidateGeometryDelta | ||
| -> AutoPCB RouteTransaction | ||
| -> verified commit or rejection | ||
| ``` | ||
|
|
||
| Solverang output must never be written directly to a PCB route. It is a candidate delta only. | ||
|
|
||
| ## Required Solverang support | ||
|
|
||
| The useful API surface for AutoPCB is: | ||
|
|
||
| 1. deterministic solve configuration and seed recording; | ||
| 2. residual diagnostics suitable for route-event logs; | ||
| 3. sparse Jacobian support for many local variables; | ||
| 4. bounded variables or projection hooks for legal geometric windows; | ||
| 5. finite-difference verification for generated Jacobians; | ||
| 6. an adapter-friendly problem/result serialization format. | ||
|
|
||
| ## Non-goals | ||
|
|
||
| Solverang should not model: | ||
|
|
||
| - PCB rule precedence; | ||
| - copper primitive pair DRC; | ||
| - via-stack fabrication semantics; | ||
| - global net ordering; | ||
| - route acceptance. | ||
|
|
||
| Those remain AutoPCB route-kernel responsibilities. | ||
|
|
||
| ## First implementation slice | ||
|
|
||
| Add an `autopcb-refinement` example problem once AutoPCB exposes typed route-fragment windows. Until then, this document is the integration contract for keeping the two projects aligned. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This PR establishes a new integration contract and concrete follow-up work, but AGENTS.md reference: AGENTS.md:L3-L3 Useful? React with 👍 / 👎. |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this implementation step is followed, Solverang will gain an AutoPCB-specific problem coupled to typed PCB route fragments, contradicting the repository requirement that Solverang remain physics-neutral. Keep the example in AutoPCB's adapter repository, or replace it here with a domain-neutral bounded-refinement example.
AGENTS.md reference: AGENTS.md:L13-L13
Useful? React with 👍 / 👎.