Skip to content

Reproduce same-net duplicate port overcount - #141

Draft
ShiboSoftwareDev wants to merge 2 commits into
agent/fix-greedy-final-route-hard-constraintsfrom
agent/repro-same-net-duplicate-port-overcount
Draft

Reproduce same-net duplicate port overcount#141
ShiboSoftwareDev wants to merge 2 commits into
agent/fix-greedy-final-route-hard-constraintsfrom
agent/repro-same-net-duplicate-port-overcount

Conversation

@ShiboSoftwareDev

@ShiboSoftwareDev ShiboSoftwareDev commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Problem

The core pathing solver reserves ports by electrical net, so branches of the same net may share a port. DuplicateCongestedPortSolver instead counts every route that uses a port. Two branches of one net are therefore treated like two competing nets and an unnecessary physical lane is created.

Reproduction

This test reuses the repository's existing sameNetSharedBottleneckFixture:

  • route-a and route-b both belong to net-0.
  • Both routes must cross the single shared-x bottleneck port.
  • The real duplicate-port solver is run without mocking its topology.

Same-net duplicate-port reproduction

How to read the snapshot:

  • The upper frame is the input: one gray port at the center boundary.
  • The lower frame is the prepass output: two gray ports at that boundary.
  • The colored dashed lines are the two route endpoint hints; both routes are labeled net: 0 on hover.

The second center port in the lower frame is the bug. The assertion expects one net use and no duplicate, so the reproduction fails with Expected: 1, Received: 2 on GitHub Actions.

Stack

Stacked on #140. The fix is #142.

@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
tiny-hypergraph Ready Ready Preview Aug 2, 2026 11:56am

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.
The result comment shows the matching dataset from the latest stored main-branch benchmark artifact beside the PR run; main is not rerun for each PR benchmark request.

Examples:

  • /benchmark -> hg07, all samples, core solver
  • /benchmark --dataset srj18 --limit 20 -> first 20 srj18 samples
  • /benchmark --dataset srj18 --concurrency auto -> srj18 samples with runner CPU-count concurrency
  • /benchmark --sample sample002 -> one hg07 sample
  • /benchmark --limit 20 --solver poly -> first 20 hg07 samples with the poly solver
  • /benchmark --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