Skip to content

c++ front end - #253

Open
nanocoh wants to merge 75 commits into
keplertech:mainfrom
nanocoh:main
Open

nanocoh wants to merge 75 commits into
keplertech:mainfrom
nanocoh:main

Conversation

@nanocoh

@nanocoh nanocoh commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

No description provided.

nanocoh added 19 commits August 10, 2026 19:53
Preserve C2RTL extraction and equivalence support while integrating main's opaque-cone handling, reset/export options, and in-process result API.
Preserve C2RTL and compact SEC extraction while integrating paired instance boundaries, shared NajaEDA Python verification, Windows wheels, and regression reporting.

Resolve CMake and extraction conflicts, keep XLS dependencies out of Python builds, and reject unsupported temporal C2RTL boundaries before synthesis.
@codecov

codecov Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

runExtractedModels returns Equivalent without a proof when both sides are the same model object. The internal relation tests merged from main passed one model twice, so the exact IMC test saw Equivalent where it expects Inconclusive, and three others passed without reaching an engine. Pass an equal copy so every engine is exercised. Also restore the indentation of the brace repaired after the merge.
q2SelectorFor inserts a new selector and then evicts least-recently-used status selectors while the cache is over its limit. When every other cached selector was a blocking one, the victim was the selector just inserted: it was disabled and still returned, so the caller's predecessor query was trivially UNSAT and PDR could report a false proof. Skip the new entry when choosing the status victim.
Upstream moved ConfigTinyRocketSecVerificationAccepted to dual_rail_steady and later expects every output proved, which relation learning delivers only in dual-rail mode where every register has an initial fact. The fork still ran the test with binary k-induction from an earlier build fix, so the merged expectation failed at 8/132. Use upstream's config; the test now proves 132/132.
Figure 7 literal removal is optional strengthening, but its queries ran with the full predecessor limits, a budget-limited answer set the global exhaustion flag and turned the whole run inconclusive, and every attempt counted against the multi-output probe's query budget. On sv2v_sky130hd_gcd the honest engine therefore proved 1 of 18 outputs, while the retired-selector bug had made those queries free.

Run generalization queries on the narrow probe limits, keep the literal when such a query is budget-limited instead of aborting the proof, and exempt them from the batch probe query count. Raise that count to 20000 now that it bounds only blocking and propagation work, and expose it through KEPLER_SEC_PDR_DUAL_RAIL_BATCH_PREDECESSOR_QUERY_LIMIT. The gcd batch now converges at frame 13 in 17 s and proves 18 of 18; the tinyrocket self-compare and the C2RTL examples are unchanged.

The strategy tests also get a per-test verification generation, as the CLI has for every run, because the per-DNL logic-cloud caches are keyed by addresses that a later test's universe can reuse.
A combinational C++ encoder against a three-stage pipelined RTL that deliberately differs wherever a result is unused. The cases cover the conditional output relations proving with the operand range, a counterexample without that range, a counterexample under unconditional equality, contradictory constraints being rejected unless the reachability check is off, and a planted tag bug being caught inside the legal domain.

This branch has not been deployed

No deployments
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.

1 participant