Skip to content

Honor native net restrictions on routing ports - #177

Draft
seveibar wants to merge 2 commits into
codex/pathing-negotiationfrom
codex/port-net-clearance
Draft

Honor native net restrictions on routing ports#177
seveibar wants to merge 2 commits into
codex/pathing-negotiationfrom
codex/port-net-clearance

Conversation

@seveibar

@seveibar seveibar commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

A routing port can be legal only for one net when its copper clearance intersects an immutable conductor. Region reservations and endpoint occupancy cannot express this when the surrounding regions remain available to other nets.

Add optional native portNetId constraints: -1 is unrestricted, -2 is blocked, and a nonnegative value is the sole allowed net. The normal reservation and static-reachability checks consume these constraints; route endpoints must also satisfy them. Section and duplicate-port problem copies preserve the constraint. Inputs without it retain their existing routing behavior.

Validation: all 136 tests / 8,008 assertions and TypeScript pass. A new generic regression fails before the change and proves same-net/free access, foreign/blocked rejection, and endpoint rejection even with the static precheck disabled. An autorouter integration experiment uses actual fixed copper geometry to avoid three impossible prescribed ports on an existing preloaded board; that board still has separate physical errors and is not claimed clean.

Stacked on #176. This changes no search budgets, routing costs, geometric clearances, or DRC rules.

@vercel

vercel Bot commented Sep 8, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
tiny-hypergraph Ready Ready Preview Sep 8, 2026 5:11pm UTC

Request Review

@tscircuitbot

Copy link
Copy Markdown

Benchmark This PR

Run benchmarks by commenting on this PR:

/benchmark [benchmark.sh args...]
/benchmark --dataset <hg07|srj18> --limit <n> --solver <core|poly> --families <default|default+deep|all> --concurrency <n|auto>

Everything after /benchmark is forwarded directly to ./benchmark.sh.
Every command runs current main and the PR head sequentially on the same Blacksmith machine, then reports their results side by side.

Examples:

  • /benchmark -> all committed completed SRJ18 Pipeline7 cases, core solver
  • /benchmark --limit 4 -> first four committed Pipeline7 cases
  • /benchmark --dataset srj18 --concurrency auto -> srj18 samples with runner CPU-count concurrency
  • /benchmark --sample sample003 -> one committed SRJ18 Pipeline7 case
  • /benchmark --dataset hg07 --limit 20 --solver poly -> first 20 hg07 samples with the poly solver
  • /benchmark --dataset hg07 --limit 40 --families default+deep -> first 40 hg07 samples with deeper candidate families

Any PR whose title contains [BENCHMARK TEST] will automatically run the benchmark workflow on PR updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants