Skip to content

Keep duplicated ports on finite shared region edges - #196

Draft
AnasSarkiz wants to merge 2 commits into
mainfrom
codex/shared-edge-port-geometry
Draft

AnasSarkiz wants to merge 2 commits into
mainfrom
codex/shared-edge-port-geometry

Conversation

@AnasSarkiz

Copy link
Copy Markdown
Member

Duplicating a congested port between offset rectangles used a direction perpendicular to their centers. That direction can leave the shared edge, and an offset near its endpoint can leave the finite boundary entirely.

Compute the shared edge from the intersection of the region bounds and place duplicates along its available length. This preserves both region membership and distinct port positions without changing routing thresholds.

Before / after

Actual output from the regression test on main 7745c91 and this branch; the gray line marks the shared edge.

Before: duplicate leaves the boundary After: duplicate stays on the shared edge
Before After

Validation

  • All 127 tests pass; the new regression fails on main.
  • Regression covers horizontal and vertical boundaries, including an exact endpoint and a point near it.
  • Typecheck, format check and build pass.

Extracted as an independent fix from #193. This PR does not claim to resolve all SRJ18 Pipeline 9 failures; downstream DRC and same-machine benchmark validation remain necessary.

@vercel

vercel Bot commented Sep 17, 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 17, 2026 7: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