Skip to content
Merged

sync #258

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
227 commits
Select commit Hold shift + click to select a range
fae48b8
Merge pull request #161 from keplertech/main
nanocoh Jul 15, 2026
59cff31
reproduce with unit test
nanocoh Jul 15, 2026
df443e8
remove size nobs and fix X init
nanocoh Jul 15, 2026
1c91a01
fix unit test
nanocoh Jul 15, 2026
5f69217
strict F[0]
nanocoh Jul 15, 2026
a654311
status update and unit test fixing
nanocoh Jul 15, 2026
c1d07ae
unit test fixing
nanocoh Jul 15, 2026
9b39748
opt from PDR article + reset cache
nanocoh Jul 15, 2026
7185a43
opt from PDR article + reset cache
nanocoh Jul 15, 2026
088ed8c
flags in readme + updating workflows
nanocoh Jul 15, 2026
d81d98e
update flags
nanocoh Jul 16, 2026
96b2804
fix(sec): classify dual-rail X mismatches as inconclusive
nanocoh Jul 16, 2026
fa762f0
fix(sec): reuse exact F[0] solvers across PDR batches
nanocoh Jul 16, 2026
edcfc1e
remove timeout from tr test
nanocoh Jul 16, 2026
6c2af23
Merge pull request #166 from keplertech/update
nanocoh Jul 17, 2026
c9058a9
wip(sec): add initialization-aware dual-rail PDR age discovery
nanocoh Jul 17, 2026
f6fc20e
Merge origin/main into remove-internal-relations-between-designs
nanocoh Jul 17, 2026
7d7a03c
Make SEC PDR age discovery opt-in
nanocoh Jul 17, 2026
8c72d18
unit test fix
nanocoh Jul 18, 2026
62271d7
fix najaeda version
nanocoh Jul 18, 2026
8d1c5e3
speed up pdr dual rail
nanocoh Jul 18, 2026
9aebc4f
speed up dual-rail PDR with exact query caches
nanocoh Jul 19, 2026
6237d57
speed up exact dual-rail PDR query preparation
nanocoh Jul 19, 2026
ea20fc7
fix unit test
nanocoh Jul 19, 2026
c5f5b9f
Align dual-rail SEC output proof semantics
nanocoh Jul 20, 2026
d92e5e9
perf(sec): unblock exact dual-rail PDR residual proofs
nanocoh Jul 20, 2026
7a7619b
perf(sec): share exact F[0] solver across PDR queries
nanocoh Jul 20, 2026
c327e2a
perf(sec): reuse exact PDR solver state
nanocoh Jul 21, 2026
cb47217
fix(sec): preserve exact PDR predecessor solves
nanocoh Jul 21, 2026
34ba3dc
Restore exact PDR reuse and use singleton dual-rail batches
nanocoh Jul 21, 2026
f711a12
Use adaptive batching for dual-rail PDR
nanocoh Jul 21, 2026
786bd4d
fix(sec): preserve exact PDR across adaptive batches
nanocoh Jul 22, 2026
c76cdfe
fix(sec): separate dual-rail PDR mismatch and definedness proofs
nanocoh Jul 22, 2026
b8f7627
test(sec): align CLI expectations with definedness proofs
nanocoh Jul 22, 2026
5b96366
fix(sec): integrate dual-rail definedness into PDR
nanocoh Jul 22, 2026
4665539
fix(sec): use steady-state dual-rail equivalence only
nanocoh Jul 23, 2026
0c9cb77
perf(sec): reuse exact PDR frames across output batches
nanocoh Jul 23, 2026
7ee39dd
fix(sec): certify PDR invariants before cross-batch reuse
nanocoh Jul 23, 2026
67cec5b
perf(sec): reduce PDR predecessor query overhead
nanocoh Jul 23, 2026
63d9743
Speed up PDR generalization with narrow SAT probes
nanocoh Jul 23, 2026
69a7cd5
perf(sec): reuse PDR invariant certification solvers
nanocoh Jul 23, 2026
9b77f1e
fix(sec): bound PDR batch memory ownership
nanocoh Jul 24, 2026
5806fb4
fix(sec): bound dual-rail PDR singleton SAT work
nanocoh Jul 25, 2026
9541015
perf(sec): bound cumulative PDR invariant certification
nanocoh Jul 25, 2026
92f7134
first round eval updates and fixes
nanocoh Jul 26, 2026
afa1c89
docs: document LEC and SEC verification options
nanocoh Jul 26, 2026
a6f70fe
Merge pull request #168 from keplertech/remove-internal-relations-bet…
nanocoh Jul 26, 2026
907d13c
docs: refresh SEC and sv2v configuration examples
nanocoh Jul 26, 2026
cfb3b63
Update README.md
nanocoh Jul 26, 2026
84c6c22
Merge pull request #169 from keplertech/remove-internal-relations-bet…
nanocoh Jul 26, 2026
f646b96
naja fix for mutliple designs in lib files
nanocoh Jul 27, 2026
f359f6c
ci: bump najaeda to 0.7.18
nanocoh Jul 28, 2026
694e077
test: regenerate Naja IF fixtures for 0.7.18
nanocoh Jul 28, 2026
08fa023
naja fix for multiple design representation in lib files
nanocoh Jul 28, 2026
43f49bb
Add configurable LEC boundary mismatch check
nanocoh Jul 28, 2026
4141d97
Enable LEC boundary check by default
nanocoh Jul 28, 2026
30955cb
Add configurable LEC boundary mismatch check
nanocoh Jul 29, 2026
13778f4
Use Liberty sequential models in SEC
nanocoh Jul 30, 2026
b9c1122
Merge remote-tracking branch 'origin/main' into new-feature
nanocoh Jul 30, 2026
a7b668f
Preserve Liberty clear/preset value in structural parsing in naja
nanocoh Jul 30, 2026
d5a5a07
Generate Naja IF fixtures from local checkout in CI
nanocoh Jul 30, 2026
47748e9
Fix Naja Python build isolation in CI
nanocoh Jul 30, 2026
b310256
Align Bazel with forked Naja
nanocoh Jul 30, 2026
d3bf6ba
Cover sequential model extraction edge cases
nanocoh Jul 30, 2026
3e2cf75
Preserve Liberty nextstate_type in structural parsing
nanocoh Jul 30, 2026
e14989a
Build DB0 sequential models at construction in naja
nanocoh Jul 31, 2026
27cbb4f
Use Liberty sequential models in SEC
nanocoh Jul 31, 2026
9b98229
fix for blackbox parsing
nanocoh Jul 31, 2026
f34822f
fix for blackbox parsing
nanocoh Jul 31, 2026
07da964
Merge pull request #182 from keplertech/main
nanocoh Aug 1, 2026
5813cbe
latest naja
nanocoh Aug 1, 2026
5ba9015
fix in naja for #181
nanocoh Aug 1, 2026
2ec5d2a
Add explicit Verilog top module selection
nanocoh Aug 2, 2026
d58b41d
Cover Verilog top option validation
nanocoh Aug 2, 2026
d1ff11a
Merge pull request #185 from keplertech/main
nanocoh Aug 2, 2026
5e077eb
Fix SEC frame-zero handling for combinational designs
nanocoh Aug 3, 2026
ec579a3
Reject mixed config and command-line options
nanocoh Aug 3, 2026
46bc3f6
Fix SEC frame-zero handling for combinational designs
nanocoh Aug 3, 2026
9dd032c
Add explicit verilog top module selection
nanocoh Aug 3, 2026
3af3c86
Build Naja natively with Bazel
nanocoh Aug 4, 2026
c7ba34c
Fix Linux Bazel build
nanocoh Aug 4, 2026
281f909
Fix Bazel 9 and Linux Python builds
nanocoh Aug 4, 2026
8732a88
Fix Linux Bazel test linking
nanocoh Aug 4, 2026
c3dfb08
Unify Bazel fmt dependency
nanocoh Aug 4, 2026
86cec7e
Build Slang natively with Bazel
nanocoh Aug 4, 2026
f22e10a
Fix empty Slang header globs
nanocoh Aug 4, 2026
21abcf8
Full bazel build
nanocoh Aug 5, 2026
c610e3c
Support shared divmod primitives in SEC
nanocoh Aug 6, 2026
ad11350
Fix divmod CI integration and coverage
nanocoh Aug 7, 2026
e12e9ef
Merge main and resolve Naja dependency conflict
nanocoh Aug 7, 2026
5eced47
Support for divmod
nanocoh Aug 8, 2026
c92689d
Configure Naja Python primitive loading
nanocoh Aug 8, 2026
a2496bb
Merge pull request #194 from keplertech/main
nanocoh Aug 8, 2026
3d4379c
Add Xilinx Python primitive support
nanocoh Aug 9, 2026
80c46cb
Fix Naja module install destination
nanocoh Aug 9, 2026
27b00f1
Fix Bazel Naja runtime exports
nanocoh Aug 10, 2026
6f70395
Cover Naja Python path setup
nanocoh Aug 10, 2026
060a115
Organize examples and document Python primitives
nanocoh Aug 11, 2026
f166317
Configure Naja Python primitive loading
nanocoh Aug 11, 2026
5a17f30
Document TinyRocket example commands
nanocoh Aug 11, 2026
0752f50
Add examples section to python-primitives.md
nanocoh Aug 11, 2026
212b877
Update README.md
nanocoh Aug 11, 2026
243b4b7
Update README.md
nanocoh Aug 11, 2026
609bd07
Update docs
nanocoh Aug 11, 2026
62d03c9
Document Xilinx examples
nanocoh Aug 12, 2026
6f08410
Merge branch 'new-feature' of https://github.com/keplertech/kepler-fo…
nanocoh Aug 12, 2026
b21bff0
Examples docs
nanocoh Aug 12, 2026
e58e3f2
Readme update (#200)
nanocoh Aug 12, 2026
453cc25
allow : in liberty identifiers in naja (#202)
nanocoh Aug 14, 2026
d86614c
Report opaque terminals (#201)
nanocoh Aug 21, 2026
a3c9c78
update naja
nanocoh Aug 21, 2026
f519971
Merge pull request #206 from keplertech/updateNaja
nanocoh Aug 21, 2026
7295650
Remove SEC clock-gate latch heuristic
nanocoh Aug 21, 2026
21ee745
Handle clock-gate truth-table arity as opaque in SEC
nanocoh Aug 21, 2026
a1a56e9
Remove SEC clock-gate latch heuristic
nanocoh Aug 22, 2026
65b4bdd
Fix SEC regression coverage handling
nanocoh Aug 22, 2026
ade649a
init optional MCP server
xtofalex Aug 25, 2026
7499733
Merge pull request #210 from xtofalex/mcp
nanocoh Aug 25, 2026
536902c
Fix SEC regression coverage handling + imc output batching
nanocoh Aug 25, 2026
3084172
Fix SV2V primitive collisions and constant SEC inputs
nanocoh Aug 26, 2026
2a47ae3
Materialize constant sequential inputs in SEC
nanocoh Aug 27, 2026
9d5443d
update naja
nanocoh Aug 27, 2026
df23122
Update clock-gate regression for Naja state-cell handling
nanocoh Aug 27, 2026
169cfc1
Add SEC reset bootstrap config
nanocoh Aug 28, 2026
ddeb005
Improve reset bootstrap coverage
nanocoh Aug 30, 2026
d6ccfd0
Cover SEC reset validation paths
nanocoh Aug 30, 2026
491c622
Add SEC reset bootstrap config
nanocoh Aug 30, 2026
27cf790
Fix SV2V primitive collisions and constant SEC inputs
nanocoh Aug 30, 2026
6316d8b
Add native Python package for Kepler Formal
nanocoh Sep 1, 2026
4b527d3
Fix table-select truth table input ordering
nanocoh Sep 1, 2026
28908b8
Bundle isolated NajaEDA runtime in Python package
nanocoh Sep 1, 2026
5948397
Bundle isolated NajaEDA runtime in Python package
nanocoh Sep 1, 2026
9f5d525
Update Naja state-cell handling
nanocoh Sep 1, 2026
8b597e3
Fix table-select truth table input ordering
nanocoh Sep 1, 2026
9f6662d
Fix Python package CI checks
nanocoh Sep 1, 2026
e178762
Fix manylinux Bison version for Python wheels
nanocoh Sep 1, 2026
f665ebc
Build Cap'n Proto with PIC for Python wheels
nanocoh Sep 1, 2026
49b5556
Fix dual-rail PDR scheduling for hard output batches
nanocoh Sep 2, 2026
3a0e0ab
Merge pull request #224 from keplertech/fix8
nanocoh Sep 2, 2026
843aae8
Merge pull request #225 from keplertech/main
nanocoh Sep 2, 2026
ef43e58
Merge pull request #226 from keplertech/main
nanocoh Sep 2, 2026
a799de3
Add structured driver coverage tests
nanocoh Sep 2, 2026
fcb3d23
Update Naja state-cell handling
nanocoh Sep 4, 2026
ec128fa
fix: update Naja for Liberty state cells
nanocoh Sep 4, 2026
071446c
fix: update Naja for automatic variable selects
nanocoh Sep 4, 2026
4992da5
fix: update Naja for Liberty state cells and automatic variable selects
nanocoh Sep 5, 2026
524ffba
feat: export prepared SEC problems as BTOR2
nanocoh Sep 7, 2026
86b912c
fix: prefer vendored GoogleTest headers in test builds
nanocoh Sep 7, 2026
a1a6f2a
test: clear BoolExpr cache after BTOR2 exporter cases
nanocoh Sep 7, 2026
f28626b
test: cover BTOR2 export validation and strategy options
nanocoh Sep 7, 2026
f1feae2
Update Naja to latest main and sync Bazel pin
nanocoh Sep 7, 2026
3b69efd
Fix GoogleTest header precedence in CMake tests
nanocoh Sep 8, 2026
aa5cf7a
Merge pull request #232 from keplertech/fix8
nanocoh Sep 8, 2026
11d8ac4
preparation for py release
nanocoh Sep 8, 2026
c3d8d08
Fix Python CLI arguments and nested NajaEDA dependency discovery
nanocoh Sep 8, 2026
ccc767a
Add PyPI publishing and match NajaEDA wheel coverage
nanocoh Sep 8, 2026
717f921
Report X/Z constants and source locations in SEC skips
nanocoh Sep 9, 2026
0718e54
Add tests for SEC unknown-constant diagnostic coverage
nanocoh Sep 9, 2026
62da988
Report X/Z constants and source locations in SEC skips
nanocoh Sep 10, 2026
d3f71c2
Merge main into fix9 and preserve BTOR2 driver integration
nanocoh Sep 10, 2026
4b6b1bf
feat: export prepared SEC problems as BTOR2
nanocoh Sep 10, 2026
1ad14a3
Share NajaEDA runtime and verify live Python designs
nanocoh Sep 10, 2026
16aa74b
Merge main into fix7 and preserve shared-runtime driver builds
nanocoh Sep 11, 2026
a449c45
Fix Windows shared Naja SDK paths and cover cache invalidation
nanocoh Sep 11, 2026
666b621
Add initial NixOS CLI package and installed smoke checks
nanocoh Sep 11, 2026
cc49419
Match Nix package targets to Python wheel platforms
nanocoh Sep 11, 2026
c5ca350
Fix Glucose proof output compatibility on Windows
nanocoh Sep 11, 2026
1bfbbf4
Disable unused C++ module scanning in Darwin Nix builds
nanocoh Sep 11, 2026
5e342b7
Disable implicit TBB linkage for Windows Python builds
nanocoh Sep 11, 2026
9650767
Add manual publishing to the keplertech Nix cache
nanocoh Sep 11, 2026
0e0abf2
Add initial NixOS CLI package and installed smoke checks
nanocoh Sep 11, 2026
ec170c8
Fix reduced truth-table input dependencies in logic clouds
nanocoh Sep 12, 2026
503443a
Fix reduced truth-table input dependencies in logic clouds
nanocoh Sep 12, 2026
c5db7bf
Simplify Nix binary installation instructions
nanocoh Sep 12, 2026
5f45c9d
Document minimal Nix installation under Distribution
nanocoh Sep 12, 2026
2dca9d7
Restore Cachix setup in installation instructions
nanocoh Sep 12, 2026
62c83d6
Test prebuilt Nix profile installation from Cachix
nanocoh Sep 12, 2026
13a8c51
Link to official Nix installation instructions
nanocoh Sep 12, 2026
571ae59
nix installation instructions
nanocoh Sep 12, 2026
985adcd
Merge remote-tracking branch 'origin/main' into fix7
nanocoh Sep 13, 2026
f2fa0bd
Remove Python API and MCP sections from README
nanocoh Sep 13, 2026
23c8df1
Remove Python API and MCP sections from README
nanocoh Sep 13, 2026
f70c2e3
Merge pull request #239 from keplertech/updateReadme
nanocoh Sep 13, 2026
e0e5571
Separate thin native drivers from the shared verification API
nanocoh Sep 14, 2026
506d9c0
Merge branch 'keplertech:main' into main
nanocoh Sep 14, 2026
a657782
Relicense first-party code as Apache-2.0
nanocoh Sep 14, 2026
9b99d6b
Adding version information and associated CLI flag
xtofalex Sep 14, 2026
6425f0d
Keep Python verification on borrowed NajaEDA designs
nanocoh Sep 14, 2026
82c9de0
Merge branch 'main' into versioning
xtofalex Sep 14, 2026
1716a71
Adding version information and associated CLI flag
nanocoh Sep 15, 2026
d871c7c
Relicense first-party code as Apache-2.0
nanocoh Sep 15, 2026
82473cc
Release borrowed verification loggers after each call
nanocoh Sep 15, 2026
9d092c1
Merge upstream main and preserve borrowed-design Python API
nanocoh Sep 15, 2026
eee880d
Fix Kissat bitfield layout in Windows wheels
nanocoh Sep 15, 2026
1289f70
Bined python to najaeda
nanocoh Sep 16, 2026
df9c9b5
Add source-built Python regression with TinyRocket live designs
nanocoh Sep 16, 2026
226e8bb
Update README.md
nanocoh Sep 16, 2026
036c19f
Add source-built Python regression with TinyRocket live designs
nanocoh Sep 16, 2026
e3f6b6e
Add opt-in published NajaEDA Python release flow
nanocoh Sep 16, 2026
cbdda43
Gate published NajaEDA wheel tests on release requests
nanocoh Sep 16, 2026
72e711a
Merge branch 'keplertech:main' into main
nanocoh Sep 16, 2026
4aea9d6
Merge pull request #247 from nanocoh/main
nanocoh Sep 16, 2026
8cc1031
Avoid unavailable Naja object APIs in published Windows wheels
nanocoh Sep 16, 2026
d2c3254
Update Readme
nanocoh Sep 16, 2026
0ce1f2e
Avoid unavailable Naja object APIs in published Windows wheels
nanocoh Sep 16, 2026
0898999
Separate default wheel regression from the publication gate
nanocoh Sep 16, 2026
1c826a9
Separate default wheel regression from the publication gate
nanocoh Sep 17, 2026
b3acbe6
Add explicit paired instance boundaries
nanocoh Sep 19, 2026
dfdef98
Expand paired boundary validation coverage
nanocoh Sep 19, 2026
9fee8b7
Use logical extraction boundaries without netlist mutation
nanocoh Sep 19, 2026
f88cab4
Fix truth-table test helper declaration after boundary extension
nanocoh Sep 19, 2026
7ea53e1
Limit instance boundaries to leaves and use original DNL connectivity
nanocoh Sep 19, 2026
ce21c97
Summarize SEC regression runtime, verdicts, and output coverage
nanocoh Sep 19, 2026
4a4ad38
Add explicit paired instance boundaries
nanocoh Sep 20, 2026
c3c4a9a
Add optional certified internal relation learning for SEC
nanocoh Sep 20, 2026
a544142
Reuse certified internal relations throughout exact IMC
nanocoh Sep 20, 2026
a0c34b6
Disable two SEC matrix jobs that stall pull requests
nanocoh Sep 20, 2026
c7b8fe6
Add optional certified internal relation learning for SEC
nanocoh Sep 20, 2026
726805a
Certify internal relations by literal substitution instead of assumpt…
claude Sep 20, 2026
65747d0
Run the SEC regression summary inside each regress-sec run
nanocoh Sep 21, 2026
636cea8
Partition, refine by simulation, and keep decided pairs in relation l…
nanocoh Sep 21, 2026
1b13c15
Create relation-learning solver variables on first use
nanocoh Sep 21, 2026
00dceb9
Skip relation learning when the candidate logic is too large
nanocoh Sep 21, 2026
c2e6a07
Certify internal relations by literal substitution instead of assumpions
nanocoh Sep 21, 2026
67f2640
List only the current attempt's jobs in the SEC regression summary
nanocoh Sep 22, 2026
9026210
List each attempt separately in the SEC regression summary
nanocoh Sep 22, 2026
f025fa2
List only the current attempt's jobs in the SEC regression summary
nanocoh Sep 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ common --enable_platform_specific_config

build --cxxopt=-std=c++20
build --host_cxxopt=-std=c++20
build --workspace_status_command=tools/workspace_status.sh

# Never fall back to autodetecting /usr/bin/gcc on Linux — the hermetic
# toolchain (hermetic-llvm) must win resolution. macOS still uses the
# host toolchain, so the guard is Linux-scoped.
common:linux --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
build:linux --dynamic_mode=off

# Force C11 for host tools to work around rules_foreign_cc pkg-config
# bootstrap failure: bundled glib uses 'bool' as a struct field name,
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/c-cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,17 @@ jobs:
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Generate Naja IF test inputs with the local Naja checkout
working-directory: ${{github.workspace}}/examples/tinyrocket
run: |
python3 -m pip install --upgrade "scikit-build-core>=0.11.3,<0.12"
CMAKE_ARGS="-DPREGENERATED_PARSER_SOURCES=OFF" \
python3 -m pip install --no-build-isolation "${{github.workspace}}/thirdparty/naja"
python3 to_naja_if.py
python3 edit.py

- name: Test
working-directory: ${{github.workspace}}/build
env:
PYTHONMALLOC: malloc
run: ctest -VV -E ".*[p|P]ython.*" -C ${{ env.BUILD_TYPE }}

13 changes: 13 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,19 @@ jobs:
CC: clang
CXX: clang++

- name: Generate Naja IF test inputs with the local Naja checkout
working-directory: ${{github.workspace}}/examples/tinyrocket
env:
GIT_CONFIG_COUNT: "1"
GIT_CONFIG_KEY_0: core.abbrev
GIT_CONFIG_VALUE_0: "7"
run: |
python3 -m pip install --upgrade "scikit-build-core>=0.11.3,<0.12"
CMAKE_ARGS="-DPREGENERATED_PARSER_SOURCES=OFF" \
python3 -m pip install --no-build-isolation "${{github.workspace}}/thirdparty/naja"
python3 to_naja_if.py
python3 edit.py

- name: Test
working-directory: ${{github.workspace}}/build
env:
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/cva6imc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ jobs:
export HPDCACHE_DIR="$PWD/core/cache_subsystem/hpdcache"
export TARGET_CFG="cv64a6_imafdc_sv39"
export LD_LIBRARY_PATH="${{github.workspace}}/stage/lib:${LD_LIBRARY_PATH}"
set +e
"${{github.workspace}}/stage/bin/kepler-formal" -systemverilog \
--compact \
-v sec \
Expand All @@ -74,4 +75,12 @@ jobs:
--sv_design1_flist "$PWD/core/Flist.cva6" \
--sv_design1_top cva6 \
--sv_design2_flist "$PWD/core/Flist.cva6" \
--sv_design2_top cva6
--sv_design2_top cva6 2>&1 | tee "${RUNNER_TEMP}/cva6-imc.log"
status=${PIPESTATUS[0]}
set -e
# Positive self-SEC accepts a proved or explicitly partial verdict.
if [[ "${status}" -eq 1 ]] &&
grep -q "SEC partially proved equivalence" "${RUNNER_TEMP}/cva6-imc.log"; then
exit 0
fi
exit "${status}"
11 changes: 10 additions & 1 deletion .github/workflows/cva6ki.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ jobs:
export HPDCACHE_DIR="$PWD/core/cache_subsystem/hpdcache"
export TARGET_CFG="cv64a6_imafdc_sv39"
export LD_LIBRARY_PATH="${{github.workspace}}/stage/lib:${LD_LIBRARY_PATH}"
set +e
"${{github.workspace}}/stage/bin/kepler-formal" -systemverilog \
--compact \
-v sec \
Expand All @@ -74,4 +75,12 @@ jobs:
--sv_design1_flist "$PWD/core/Flist.cva6" \
--sv_design1_top cva6 \
--sv_design2_flist "$PWD/core/Flist.cva6" \
--sv_design2_top cva6
--sv_design2_top cva6 2>&1 | tee "${RUNNER_TEMP}/cva6-ki.log"
status=${PIPESTATUS[0]}
set -e
# Positive self-SEC accepts a proved or explicitly partial verdict.
if [[ "${status}" -eq 1 ]] &&
grep -q "SEC partially proved equivalence" "${RUNNER_TEMP}/cva6-ki.log"; then
exit 0
fi
exit "${status}"
11 changes: 10 additions & 1 deletion .github/workflows/cva6pdr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ jobs:
export HPDCACHE_DIR="$PWD/core/cache_subsystem/hpdcache"
export TARGET_CFG="cv64a6_imafdc_sv39"
export LD_LIBRARY_PATH="${{github.workspace}}/stage/lib:${LD_LIBRARY_PATH}"
set +e
"${{github.workspace}}/stage/bin/kepler-formal" -systemverilog \
--compact \
-v sec \
Expand All @@ -74,4 +75,12 @@ jobs:
--sv_design1_flist "$PWD/core/Flist.cva6" \
--sv_design1_top cva6 \
--sv_design2_flist "$PWD/core/Flist.cva6" \
--sv_design2_top cva6
--sv_design2_top cva6 2>&1 | tee "${RUNNER_TEMP}/cva6-pdr.log"
status=${PIPESTATUS[0]}
set -e
# Positive self-SEC accepts a proved or explicitly partial verdict.
if [[ "${status}" -eq 1 ]] &&
grep -q "SEC partially proved equivalence" "${RUNNER_TEMP}/cva6-pdr.log"; then
exit 0
fi
exit "${status}"
10 changes: 10 additions & 0 deletions .github/workflows/macOS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ jobs:
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}

- name: Generate Naja IF test inputs with the local Naja checkout
working-directory: ${{github.workspace}}/examples/tinyrocket
run: |
python3 -m venv "${RUNNER_TEMP}/najaeda-venv"
source "${RUNNER_TEMP}/najaeda-venv/bin/activate"
CMAKE_ARGS="-DPREGENERATED_PARSER_SOURCES=OFF" \
python3 -m pip install "${{github.workspace}}/thirdparty/naja"
python3 to_naja_if.py
python3 edit.py

- name: Test
working-directory: ${{github.workspace}}/build
env:
Expand Down
24 changes: 24 additions & 0 deletions .github/workflows/mcp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2026 keplertech.io
# SPDX-License-Identifier: Apache-2.0

name: mcp

on:
push:
pull_request:

jobs:
test:
strategy:
matrix:
python-version: ["3.10", "3.14"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install optional MCP add-on
run: python -m pip install ./mcp
- name: Test MCP add-on
run: python -m unittest discover -s mcp/tests -v
75 changes: 75 additions & 0 deletions .github/workflows/nix-prebuilt.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Copyright 2026 keplertech.io
# SPDX-License-Identifier: Apache-2.0

name: nix-prebuilt

on:
workflow_dispatch:
inputs:
ref:
description: Published branch or tag to install (must already be cached)
type: string
required: true
default: main
revision:
description: Optional published commit SHA (defaults to the current ref)
type: string
required: false
default: ''
workflow_call:
inputs:
ref:
type: string
required: true
revision:
type: string
required: false
default: ''

permissions:
contents: read

jobs:
install:
name: install ${{ matrix.system }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
system: x86_64-linux
- os: macos-latest
system: aarch64-darwin
runs-on: ${{ matrix.os }}
steps:
# These are fresh runners, not the jobs that built/published the package.
# Only the smoke-test scripts are needed from the checkout.
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
with:
persist-credentials: false
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
install_url: https://releases.nixos.org/nix/nix-2.35.1/install
enable_kvm: false
extra_nix_config: |
experimental-features = nix-command flakes
max-jobs = 0
builders =
allow-import-from-derivation = false
- uses: cachix/cachix-action@38b082610b782e7e93e209c35fd730d399dee866 # v17
with:
name: keplertech
skipPush: true
- name: Install and test the public prebuilt CLI (no builds)
shell: bash
env:
INSTALL_REF: ${{ inputs.ref }}
PUBLISHED_SHA: ${{ inputs.revision }}
run: |
flake="git+https://github.com/keplertech/kepler-formal?ref=$INSTALL_REF"
if [[ -n "$PUBLISHED_SHA" ]]; then
# Pin the publication's exact revision even if its branch moves.
flake="$flake&rev=$PUBLISHED_SHA"
fi
bash nix/check-prebuilt.sh "$flake"
74 changes: 74 additions & 0 deletions .github/workflows/nix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Copyright 2026 keplertech.io
# SPDX-License-Identifier: Apache-2.0

name: nix

on:
pull_request:
push:
branches: [main, nixOS]
tags: ['v*']
workflow_dispatch:

permissions:
contents: read

jobs:
build-and-check:
name: ${{ matrix.system }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
system: x86_64-linux
- os: macos-latest
system: aarch64-darwin
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0
with:
submodules: recursive
persist-credentials: false
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
install_url: https://releases.nixos.org/nix/nix-2.35.1/install
- uses: cachix/cachix-action@38b082610b782e7e93e209c35fd730d399dee866 # v17
with:
name: keplertech
skipPush: true
- name: Check installed package
run: nix flake check --system ${{ matrix.system }} --print-build-logs --no-update-lock-file
- name: Build CLI package
run: nix build .#packages.${{ matrix.system }}.default --print-build-logs --no-update-lock-file
- name: Publish CLI package
if: github.repository == 'keplertech/kepler-formal' && github.event_name == 'workflow_dispatch'
env:
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
NIX_SYSTEM: ${{ matrix.system }}
run: |
: "${CACHIX_AUTH_TOKEN:?Set the CACHIX_AUTH_TOKEN repository secret}"
package_path=$(nix path-info ./result)
cachix push keplertech "$package_path"
cachix pin keplertech "kepler-formal-$NIX_SYSTEM" "$package_path" --keep-revisions 20
- name: Verify public cache download
if: github.repository == 'keplertech/kepler-formal' && github.event_name == 'workflow_dispatch'
run: |
package_path=$(nix path-info ./result)
nix path-info --store https://keplertech.cachix.org "$package_path" \
--option narinfo-cache-negative-ttl 0
verify_root=$(mktemp -d "$RUNNER_TEMP/cachix-verify.XXXXXX")
nix-store --store "$verify_root" --realise "$package_path" \
--max-jobs 0 --option builders '' \
--option substituters 'https://keplertech.cachix.org https://cache.nixos.org' \
--option extra-substituters '' --option narinfo-cache-negative-ttl 0

test-prebuilt-install:
# PR/push runs do not publish. After manual publication, verify real profile
# installation on fresh runners that cannot reuse the preceding build.
needs: build-and-check
if: github.repository == 'keplertech/kepler-formal' && github.event_name == 'workflow_dispatch'
uses: ./.github/workflows/nix-prebuilt.yml
with:
ref: ${{ github.ref_name }}
revision: ${{ github.sha }}
Loading
Loading