Seed complete routing approximations before congestion refinement - #175
Closed
AnasSarkiz wants to merge 4 commits into
Closed
Seed complete routing approximations before congestion refinement#175AnasSarkiz wants to merge 4 commits into
AnasSarkiz wants to merge 4 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Benchmark This PRRun benchmarks by commenting on this PR: Everything after Examples:
Any PR whose title contains |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Superseded by #179, which uses the existing routing and timeout-acceptance flow with a smaller change.
The pedometer case in tscircuit/tscircuit-autorouter#2385 reaches the iteration limit before selective reripping has retained a complete graph. Best-solution acceptance is already enabled, but there is no complete solution to restore.
Add
createInitialAssignmentstoDuplicateCongestedPortSolver. The prepass retains its independently routed paths, gives different nets distinct crossing points, and seeds ordinary region assignments before congestion refinement. Distance-aware routing can ignore soft port penalties for a compact initial approximation. Existing assignments keep their geometry and port ownership. In this opt-in mode, duplicated points remain on shared rectangular edges, including near their endpoints; allocation-only callers retain their existing placement behavior.The existing best-solution mechanism can then return a complete approximation when refinement reaches its cap. This does not assert zero congestion or DRC violations, and disconnected input still fails explicitly.
Integration and scope
Stacked on #167, which contains the merged #172 changes required by Pipeline9's current dependency pin. The diff contains only this library change and its tests/docs.
Consumers opt in with
new DuplicateCongestedPortSolver(graph, { createInitialAssignments: true, useSerializedPortPenalties: false }), then refine the output withSelectiveReripTinyHyperGraphSolver. The prepass has its own routing budget. The companion Pipeline9 dependency/caller update is tscircuit/tscircuit-autorouter#2406. It uses this prepass to construct a complete final approximation if the normal graph search exhausts its budget without a complete candidate, including the 230-connection case previously excluded from the prepass. Generated seeds should remain ordinary rerippable routes, rather than being treated as caller-owned preloaded copper. Downstream high-density routing is outside this PR.Validation
bun test: 133 passed, 1,118 assertions, including the committed routing-approximation SVG.bun run typecheck,bun run format:check,bun run build, andgit diff --checkpass.Snapshot