Repository navigation
Conversation
Construction steps that place a new input sometimes failed as infeasible within 0.1 s for every window, then restarted with a new seed (three of five seeds of one full-adder netlist, and earlier the carry tile's carry entry). The step diagnosis (EXACT_DIAGNOSE_INFEASIBLE) showed the culprit: freeing an earlier input's kept switch made the step solvable. The new input's candidate sites covered the whole window, including the overlap slice where a switch placed in an earlier step is kept as a fixed cell. dsl.rs gave a fixed switch to the first input with a site there, so the kept switch became the new input's: the earlier input lost its only site and the frozen gates it drove contradicted their given signals. New inputs no longer get sites where a switch is already placed, and a fixed switch belongs to the input whose only site it is when several inputs could claim it (an error if that is still ambiguous). The same seed now places that step in 9 s. The diagnosis hook stays: with EXACT_DIAGNOSE_INFEASIBLE, an infeasible step is re-solved with given signals, each observation, each single-site input, and frozen air dropped in turn, and the placed inputs' surroundings are logged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rollrat
added this pull request to stack #64
October 5, 2026 08:26
rollrat
removed this pull request from stack #64
October 5, 2026 08:30
Member
Author
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.
Bottom of a stack: this fix, then the e-graph netlist search, then OR nets for wide NORs.
Why
A construction step that placed a new input sometimes failed as infeasible within 0.1 s, for every window, and construction then restarted with a new seed. This happened in three of five seeds of one full-adder netlist and, earlier, at the carry tile's carry entry. It wasted whole construction attempts and hid which netlists can actually be placed.
What
dsl.rsgave a fixed switch to the first input with a site there. The kept switch became the new input's, so the earlier input lost its only site, and the frozen gates it drove contradicted their given signals.EXACT_DIAGNOSE_INFEASIBLE, an infeasible step is re-solved with given signals, each observation, each single-site input, and frozen air dropped in turn, and the placed inputs' surroundings are logged. That is how the cause was found: only freeing the kept switch made the step solvable.The same seed now places that step in 9 s.
Test plan
cargo test --release --lib exact::: all pass.CIRCUIT=egraph-full-adder EGRAPH_DEPTH=3now places the step.🤖 Generated with Claude Code