{"id":44630692,"url":"https://github.com/anulum/sc-neurocore","last_synced_at":"2026-04-02T11:24:37.940Z","repository":{"id":337619207,"uuid":"1154444570","full_name":"anulum/sc-neurocore","owner":"anulum","description":"Universal Stochastic Computing Framework for Neuromorphic Hardware — Rust SIMD engine, Python simulation, Verilog RTL, HDC/VSA, SCPN integration","archived":false,"fork":false,"pushed_at":"2026-03-29T01:43:42.000Z","size":14072,"stargazers_count":6,"open_issues_count":4,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T02:57:34.209Z","etag":null,"topics":["edge-ai","fpga","hyper-dimensional-computing","neuromorphic","neuromorphic-computing","petri-nets","pyo3","quantum","rust","simd","snn","spiking-neural-networks","stochastic-computing","verilog"],"latest_commit_sha":null,"homepage":"https://anulum.github.io/sc-neurocore/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anulum.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":"GOVERNANCE.md","roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":"NOTICE.md","maintainers":null,"copyright":"COPYRIGHT","agents":null,"dco":null,"cla":null},"funding":{"github":"anulum","custom":["https://www.anulum.li"]}},"created_at":"2026-02-10T11:52:34.000Z","updated_at":"2026-03-29T01:36:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anulum/sc-neurocore","commit_stats":null,"previous_names":["anulum/sc-neurocore"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/anulum/sc-neurocore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fsc-neurocore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fsc-neurocore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fsc-neurocore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fsc-neurocore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anulum","download_url":"https://codeload.github.com/anulum/sc-neurocore/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anulum%2Fsc-neurocore/sbom","scorecard":{"id":1244468,"data":{"date":"2026-03-06T19:55:56Z","repo":{"name":"github.com/anulum/sc-neurocore","commit":"7f4199c76a08394d4d4ec97449287481324e6658"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":4.5,"checks":[{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"name":"CI-Tests","score":-1,"reason":"no pull request found","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":10,"reason":"SAST tool detected: CodeQL","details":["Info: SAST configuration detected: CodeQL","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/benchmark.yml:30","Warn: jobLevel 'deployments' permission set to 'write': .github/workflows/benchmark.yml:31","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker.yml:25","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docs.yml:28","Info: found token with 'none' permissions: .github/workflows/benchmark.yml:1","Info: found token with 'none' permissions: .github/workflows/ci.yml:1","Warn: topLevel 'security-events' permission set to 'write': .github/workflows/codeql.yml:16","Info: found token with 'none' permissions: .github/workflows/docker.yml:1","Info: found token with 'none' permissions: .github/workflows/docs.yml:1","Info: found token with 'none' permissions: .github/workflows/pre-commit.yml:1","Info: found token with 'none' permissions: .github/workflows/publish.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:11","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:12","Info: found token with 'none' permissions: .github/workflows/v3-engine.yml:1","Info: found token with 'none' permissions: .github/workflows/v3-wheels.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: containerImage not pinned by hash: deploy/Dockerfile:8: pin your Docker image by updating python:3.12-slim to python:3.12-slim@sha256:ccc7089399c8bb65dd1fb3ed6d55efa538a3f5e7fca3f5988ac3b5b87e593bf0","Warn: containerImage not pinned by hash: deploy/Dockerfile:32: pin your Docker image by updating python:3.12-slim to python:3.12-slim@sha256:ccc7089399c8bb65dd1fb3ed6d55efa538a3f5e7fca3f5988ac3b5b87e593bf0","Warn: containerImage not pinned by hash: deploy/Dockerfile:48: pin your Docker image by updating python:3.12-slim to python:3.12-slim@sha256:ccc7089399c8bb65dd1fb3ed6d55efa538a3f5e7fca3f5988ac3b5b87e593bf0","Warn: downloadThenRun not pinned by hash: deploy/Dockerfile:16-17","Warn: pipCommand not pinned by hash: deploy/Dockerfile:20","Warn: pipCommand not pinned by hash: deploy/Dockerfile:42","Warn: pipCommand not pinned by hash: deploy/Dockerfile:45","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:125","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:42","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:54","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:73","Warn: pipCommand not pinned by hash: .github/workflows/docs.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/docs.yml:41","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:26","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/v3-engine.yml:86","Warn: pipCommand not pinned by hash: .github/workflows/v3-engine.yml:87","Warn: pipCommand not pinned by hash: .github/workflows/v3-wheels.yml:78","Warn: pipCommand not pinned by hash: .github/workflows/v3-wheels.yml:40","Info:  44 out of  44 GitHub-owned GitHubAction dependencies pinned","Info:  19 out of  19 third-party GitHubAction dependencies pinned","Info:   3 out of  19 pipCommand dependencies pinned","Info:   0 out of   3 containerImage dependencies pinned","Info:   0 out of   1 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v3.8.2-stable not signed: https://api.github.com/repos/anulum/sc-neurocore/releases/294052431","Warn: release artifact v3.8.1 not signed: https://api.github.com/repos/anulum/sc-neurocore/releases/293739784","Warn: release artifact v3.6.0 not signed: https://api.github.com/repos/anulum/sc-neurocore/releases/284800789","Warn: release artifact v3.8.2-stable does not have provenance: https://api.github.com/repos/anulum/sc-neurocore/releases/294052431","Warn: release artifact v3.8.1 does not have provenance: https://api.github.com/repos/anulum/sc-neurocore/releases/293739784","Warn: release artifact v3.6.0 does not have provenance: https://api.github.com/repos/anulum/sc-neurocore/releases/284800789"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"Contributors","score":3,"reason":"project has 1 contributing companies or organizations -- score normalized to 3","details":["Info: found contributions from: anulum institute"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}}]},"last_synced_at":"2026-03-06T21:58:57.557Z","repository_id":337619207,"created_at":"2026-03-06T21:58:57.557Z","updated_at":"2026-03-06T21:58:57.557Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["edge-ai","fpga","hyper-dimensional-computing","neuromorphic","neuromorphic-computing","petri-nets","pyo3","quantum","rust","simd","snn","spiking-neural-networks","stochastic-computing","verilog"],"created_at":"2026-02-14T16:26:48.608Z","updated_at":"2026-04-02T11:24:37.933Z","avatar_url":"https://github.com/anulum.png","language":"Python","funding_links":["https://github.com/sponsors/anulum","https://www.anulum.li"],"categories":[],"sub_categories":[],"readme":"© 1998–2026 Miroslav Šotek. All rights reserved.\nContact: www.anulum.li | protoscience@anulum.li\nORCID: https://orcid.org/0009-0009-3560-0851\nLicense: GNU AFFERO GENERAL PUBLIC LICENSE v3\nCommercial Licensing: Available\n\n# SC-NeuroCore\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/sc_neurocore_header.png\" width=\"1280\" alt=\"SC-NeuroCore — Stochastic Computing \u0026 Neuromorphic Engine\"\u003e\n\u003c/p\u003e\n\n[![CI](https://github.com/anulum/sc-neurocore/actions/workflows/ci.yml/badge.svg)](https://github.com/anulum/sc-neurocore/actions/workflows/ci.yml)\n[![CodeQL](https://github.com/anulum/sc-neurocore/actions/workflows/codeql.yml/badge.svg)](https://github.com/anulum/sc-neurocore/actions/workflows/codeql.yml)\n[![Version](https://img.shields.io/badge/version-3.14.0-blue)](https://github.com/anulum/sc-neurocore/releases)\n[![Coverage](https://img.shields.io/badge/core_coverage-100%25-brightgreen)](https://github.com/anulum/sc-neurocore)\n[![mypy](https://img.shields.io/badge/mypy-strict-blue)](https://mypy-lang.org/)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Typed](https://img.shields.io/badge/typed-py.typed-blue)](https://peps.python.org/pep-0561/)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://anulum.github.io/sc-neurocore/)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/downloads/)\n[![Rust](https://img.shields.io/badge/engine-Rust-orange)](https://www.rust-lang.org/)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12175/badge)](https://www.bestpractices.dev/projects/12175)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/anulum/sc-neurocore/badge)](https://scorecard.dev/viewer/?uri=github.com/anulum/sc-neurocore)\n[![REUSE](https://img.shields.io/badge/REUSE-compliant-green)](https://reuse.software/)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/anulum/sc-neurocore/blob/main/notebooks/quickstart_colab.ipynb)\n\n\u003e **Active Development** — SC-NeuroCore is under intensive development. The core engine, all 114 neuron models, and the full simulation pipeline (Population → Projection → Network → SpikeMonitor → Analysis) are fully functional, tested (6 900+ passing tests, zero functional failures), and production-deployable. We are currently completing comprehensive per-model documentation and end-to-end pipeline benchmarking across the entire model library. APIs may evolve as this work progresses.\n\n**Version:** 3.14.0\n**Status:** 120 Neuron Models (111 Bio + 9 AI) | 99.49% MNIST (ConvSNN) | 3 376 Python tests passing (3 552 collected) + 378 Rust tests | 100% Core Coverage | 109 Rust Neuron Models | 111-Model NetworkRunner | 29 Notebooks\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/spike_raster.png\" width=\"800\" alt=\"LIF spike raster — 5 neurons, sinusoidal input\"\u003e\n\u003c/p\u003e\n\nSC-NeuroCore is an open-source stochastic computing SNN framework\nwith FPGA synthesis. 116 neuron models (107 biophysical + 9 AI-optimized) spanning\n82 years of computational neuroscience (McCulloch-Pitts 1943 through\nArcaneNeuron 2026) run inside a deterministic stochastic computing engine\nwith bit-true Verilog RTL co-simulation, FPGA synthesis via an IR compiler\n(SystemVerilog + MLIR/CIRCT backends), an equation-to-Verilog compiler\nthat turns arbitrary ODE strings into synthesizable Q8.8 fixed-point RTL,\nformal verification (7 SymbiYosys\nmodules, 67 properties), a Rust SIMD engine **39–202× faster than Brian2**\n(27.7 billion synaptic events/s at 100K neurons, 109 Rust neuron models\nwith PyO3 bindings, 80-model NetworkRunner with Rayon-parallel populations),\nCuPy GPU acceleration, JAX JIT training,\nMPI distributed simulation (billion-neuron scale via mpi4py),\nan identity continuity substrate (persistent spiking networks with\ncheckpointing and L16 Director control), a 128-function spike train\nanalysis toolkit (23 modules), 12 visualization plots, 13 advanced\nplasticity rules (pair/triplet/voltage STDP, BCM, BPTT, TBPTT, EWC,\ne-prop, R-STDP, MAML, STP, structural plasticity), 7 biological circuit\nprimitives (gap junctions, tripartite synapse, Rall dendrite, cortical\ncolumn, lateral inhibition, WTA, gamma oscillation), 10 model zoo\nconfigurations with 3 pre-trained weight sets, 9 hardware chip emulators,\nquantum hybrid computing (Qiskit + PennyLane + SC-to-quantum compiler),\nsurrogate gradient training reaching 99.49% MNIST accuracy, a\n[NIR](https://neuroir.org/) bridge — FPGA backend for the\nneuromorphic intermediate representation standard (18/18 primitives,\nrecurrent edges, multi-port subgraphs; verified interop with SpikingJelly,\nsnnTorch, and Norse), a SpikeInterface adapter for experimental data import,\nANN-to-SNN conversion (trained PyTorch models to rate-coded SNNs in one call),\ntrainable per-synapse delays (DelayLinear with differentiable interpolation),\none-command FPGA synthesis (`sc-neurocore deploy model.nir --target ice40` auto-runs Yosys+nextpnr+icepack if installed; generates project files for Vivado targets),\nper-layer adaptive bitstream length for mixed-precision SC networks,\nevent-driven FPGA RTL (AER encoder, event neuron, spike router —\n15-39x fewer register toggles than clock-driven at 0.01-10% activity, measured),\nand a 6-codec neural data compression library (ISI, predictive, delta, streaming,\nAER) with a unified API and auto-recommendation engine — targeting BCI\nimplants (Neuralink-scale 1024+ channels), neural probes (Neuropixels),\nneuromorphic inter-chip routing, and real-time closed-loop telemetry.\n3 376 passing Python tests and 378 Rust tests hold 100% core coverage.\n13 CI workflows guard every push. conda-forge recipe ready.\n\n## Feature Comparison\n\n| Feature | SC-NeuroCore | snnTorch | Norse | Lava | Brian2 |\n|---------|:---:|:---:|:---:|:---:|:---:|\n| Stochastic computing (bitstream) | **Yes** | — | — | — | — |\n| Bit-true RTL co-simulation | **Yes** | — | — | — | — |\n| Verilog / FPGA synthesis | **Yes** | — | — | Loihi only | — |\n| IR compiler → SystemVerilog | **Yes** | — | — | — | — |\n| Rust engine (39–202× vs Brian2) | **Yes** | — | — | — | — |\n| Surrogate gradient training | **7 surrogates, 10 cells** | Yes | Yes | Yes | — |\n| PyTorch `nn.Module` SNN | **Yes** (+ SC weight export) | Yes | Yes | — | — |\n| GPU acceleration | PyTorch + CuPy | PyTorch | PyTorch | — | — |\n| Neuron model library | **116** | 11 | 6 | 3 | ~5 builtin |\n| Rust neuron models (PyO3) | **109** | — | — | — | — |\n| NetworkRunner (fused loop) | **80 models** | — | — | — | — |\n| Network simulation engine | **3 backends** | PyTorch | PyTorch | Lava | C++ codegen |\n| MPI distributed simulation | **Yes** | — | — | — | — |\n| Pre-trained model zoo | **10 configs, 3 weights** | — | — | — | — |\n| Spike train analysis | **128 functions** | — | — | — | — |\n| Visualization plots | **12** | — | — | — | — |\n| Advanced plasticity rules | **13** | — | — | — | — |\n| Biological circuits | **7** | — | — | — | — |\n| SC→quantum compiler | **Yes** | — | — | — | — |\n| Predictive coding (SC) | **Yes** | — | — | — | — |\n| Fault tolerance benchmark | **Yes** | — | — | — | — |\n| Phi* (IIT) estimation | **Yes** | — | — | — | — |\n| SpikeInterface adapter | **Yes** | — | — | — | — |\n| NIR primitives | **18/18** | — | 12 | 5 | — |\n| MNIST accuracy (SNN) | **99.49%** | ~95% | ~93% | — | — |\n| Plasticity (STDP, R-STDP) | Yes | — | Yes | Yes | Yes |\n| Quantum hybrid (Qiskit/PennyLane) | **Yes** | — | — | — | — |\n| MLIR emitter (CIRCT) | **Yes** | — | — | — | — |\n| Hyperdimensional computing | Yes | — | — | — | — |\n| Formal verification (SymbiYosys) | **7 modules, 67 props** | — | — | — | — |\n| JAX JIT training | **Yes** | — | — | — | — |\n| CuPy sparse GPU | **Yes** | — | — | — | — |\n| AI-optimized neurons | **9 (ArcaneNeuron + 8)** | — | — | — | — |\n| Identity substrate | **Yes** | — | — | — | — |\n| ANN-to-SNN conversion | **Yes** | — | — | — | — |\n| Trainable per-synapse delays | **Yes** | — | — | — | — |\n| One-command FPGA deploy CLI | **Yes** | — | — | — | — |\n| Per-layer adaptive bitstream | **Yes** | — | — | — | — |\n| Event-driven FPGA RTL (AER) | **Yes** | — | — | — | — |\n| Raw waveform compression (24x) | **Yes** | — | — | — | — |\n| Spike codec library (6 codecs) | **Yes** | — | — | — | — |\n| Visual SNN Design Studio | **Yes (web IDE)** | Basic GUI | Jupyter | — | — |\n| conda-forge recipe | **Ready** | Yes | — | — | Yes |\n| PyPI package | Yes | Yes | Yes | Yes | Yes |\n| License | AGPL-3.0 | MIT | LGPL-3.0 | BSD-3 | CeCILL-2.1 |\n\n- **125-function spike train analysis toolkit** — CV, Fano factor, cross-correlation, Victor-Purpura distance, SPIKE-sync, Granger causality, GPFA, SPADE pattern detection, and 115 more functions. Matches Elephant + PySpike combined. Pure NumPy.\n\n- **Neural data compression library** — Two layers: **WaveformCodec** compresses raw 10-bit electrode waveforms end-to-end (spike detection + template matching + LFP compression, 24x on 1024-channel Neuralink-scale data, fits Bluetooth uplink). **Spike raster codecs** (ISI+Huffman, Predictive with 4 learnable predictors, Delta, Streaming, AER) compress binary spike trains 50-750x. Unified API: `get_codec(name)`, `recommend_codec()`. Learnable world-model predictor (99.6% accuracy). Rust backend (780x speedup). Bit-true LFSR matches Verilog RTL.\n\nSC-NeuroCore's niche: **deterministic stochastic computing with FPGA co-design** — Python simulation matches synthesisable RTL bit-for-bit (deterministic LFSR seeds, Q8.8 fixed-point, cycle-exact co-simulation).\n\n### Performance: Rust Engine vs Brian2 (Brunel AI network)\n\nMeasured on i5-11600K @ 3.90 GHz, 300 ms simulation, 10% connection probability.\nStored artifact: [`benchmarks/results/rust_scaling_benchmark.json`](benchmarks/results/rust_scaling_benchmark.json)\n\n| Scale | SC Rust | Brian2 | Speedup | SC synaptic events/s |\n|------:|--------:|-------:|--------:|---------------------:|\n| 1K neurons | 0.029 s | 2.689 s | **93×** | 110 M/s |\n| 5K neurons | 0.285 s | 4.681 s | **16×** | 288 M/s |\n| 10K neurons | 0.172 s | 6.754 s | **39×** | 1.86 B/s |\n| 50K neurons | 0.582 s | 31.03 s | **53×** | 13.9 B/s |\n| 100K neurons | 1.153 s | 232.3 s | **202×** | 27.7 B/s |\n\nSIMD primitives: 190 Gbit/s popcount (AVX-512 dispatch, Criterion benchmark:\n[`benchmarks/results/criterion_bitstream_2026-03-26.json`](benchmarks/results/criterion_bitstream_2026-03-26.json))\n\n### Network Simulation Engine\n\nPopulation-Projection-Network architecture with 3 backends:\n\n| Backend | Scope | Performance |\n|---------|-------|-------------|\n| **Python** | Any of 116 neuron models | NumPy vectorized |\n| **Rust NetworkRunner** | 80 models in fused Rayon-parallel loop | 100K+ neurons, near-linear scaling |\n| **MPI** | Billion-neuron distributed simulation via mpi4py | Multi-node HPC clusters |\n\n6 topology generators (random, small-world, scale-free, ring, grid, all-to-all),\n12 visualization plots (raster, voltage, ISI, cross-correlogram, PSD, firing rate,\nphase portrait, population activity, instantaneous rate, spike train comparison,\nnetwork graph, weight matrix), and 13 advanced plasticity rules (pair/triplet/voltage\nSTDP, BCM, BPTT, TBPTT, EWC, e-prop, R-STDP, MAML, homeostatic, STP, structural).\n\n### Model Zoo\n\n10 pre-built network configurations (Brunel balanced, cortical column, CPG,\ndecision-making, working memory, visual cortex V1, auditory processing, MNIST\nclassifier, SHD speech classifier, DVS gesture classifier) with 3 pre-trained\nweight sets (MNIST 784-128-10, SHD 700-256-20, DVS 256-256-11).\n\n### 116 Neuron Models (1943--2026)\n\nEvery model has a uniform `step(current) -\u003e spike` API, a `reset()`, and a\ncited reference. One file per model in `src/sc_neurocore/neurons/models/`.\n\n| Category | Count | Examples |\n|----------|------:|---------|\n| Integrate-and-fire variants | 18 | AdEx, GLIF5, ExpIF, QIF, SFA, MAT, COBA-LIF, Parametric LIF, Fractional LIF |\n| Simple spiking (2D+) | 20 | FitzHugh-Nagumo, Morris-Lecar, Hindmarsh-Rose, Resonate-and-Fire, Chay |\n| Biophysical (conductance-based) | 20 | Hodgkin-Huxley, Connor-Stevens, Traub-Miles, Mainen-Sejnowski, Pospischil |\n| Stochastic / population / neural mass | 13 | Poisson, GLM, Jansen-Rit, Wong-Wang, Wilson-Cowan, Ermentrout-Kopell |\n| Rate / plasticity / other | 12 | McCulloch-Pitts (1943), Sigmoid Rate, Astrocyte, Amari, GatedLIF (2022) |\n| Hardware chip emulators | 9 | Loihi CUBA, Loihi 2, TrueNorth, BrainScaleS AdEx, SpiNNaker, Akida, DPI |\n| Multi-compartment | 7 | Pinsky-Rinzel, Hay L5 Pyramidal, Rall Cable, Booth-Rinzel, Dendrify |\n| Map-based (discrete-time) | 6 | Chialvo, Rulkov, Ibarz-Tanaka, Cazelles, Courbage-Nekorkin, Medvedev |\n| Core (stochastic computing) | 5 | StochasticLIF, FixedPointLIF, HomeostaticLIF, Dendritic, SC-Izhikevich |\n| Training cells (PyTorch) | 4 | LIF, ALIF, RecurrentLIF, EProp-ALIF |\n| **AI-optimized (novel)** | **9** | **ArcaneNeuron, MultiTimescale, AttentionGated, PredictiveCoding, SelfReferential, CompositionalBinding, DifferentiableSurrogate, ContinuousAttractor, MetaPlastic** |\n\n### ArcaneNeuron — Self-Referential Cognition\n\nThe flagship AI-optimized model. Five coupled subsystems in a single ODE:\nfast compartment (tau=5ms), working memory (tau=200ms), deep context\n(tau=10s), learned attention gate, and a forward self-model (predictor).\nThe deep compartment accumulates identity: it changes only on genuine\nnovelty (prediction errors), not routine input. Confidence modulates\nthreshold and meta-learning rate. No equivalent in any other toolkit.\n\n### Identity Substrate\n\nPersistent spiking network for identity continuity (`sc_neurocore.identity`).\n\n| Module | Class | Purpose |\n|--------|-------|---------|\n| `substrate.py` | `IdentitySubstrate` | 3-population network (HH cortical + WB inhibitory + HR memory) with STDP and small-world connectivity |\n| `encoder.py` | `TraceEncoder` | LSH-based text-to-spike-pattern encoding |\n| `decoder.py` | `StateDecoder` | PCA + attractor extraction + priming context generation |\n| `checkpoint.py` | `Checkpoint` | Lazarus protocol: save/restore/merge complete network state (.npz) |\n| `director.py` | `DirectorController` | L16 cybernetic closure: monitor, diagnose, correct network dynamics |\n\n## Quick Start\n\n```bash\npip install sc-neurocore\n```\n\n```python\nfrom sc_neurocore import StochasticLIFNeuron\n\nneuron = StochasticLIFNeuron(v_threshold=1.0, tau_mem=20.0, noise_std=0.0)\nspikes = sum(neuron.step(0.8) for _ in range(500))\nprint(f\"{spikes} spikes in 500 steps\")\n```\n\n```bash\n# Optional extras\npip install sc-neurocore[full]     # all research modules\npip install sc-neurocore[gpu]      # CuPy GPU acceleration\npip install sc-neurocore[nir]      # NIR interop (Norse, snnTorch, Lava)\npip install sc-neurocore[studio]   # Visual SNN Design Studio (web IDE)\n```\n\n### Rust Engine (39–202× faster)\n\nThe optional Rust engine provides SIMD-accelerated simulation, 109 neuron\nmodels via PyO3, and fused E-I network simulation. Pre-built wheels are\navailable for Linux, Windows, and macOS (Python 3.10–3.13):\n\n```bash\npip install sc-neurocore-engine\n```\n\nWhen installed, SC-NeuroCore automatically uses the Rust engine for:\n\n- **NetworkRunner:** 80-model fused Rayon-parallel simulation loop\n- **E-I network:** single Rust call for connectivity + Poisson + Euler + spike detection\n- **Batch simulate:** model dispatch loop in compiled Rust\n- **SIMD bitstream ops:** 190 Gbit/s popcount (AVX-512)\n\nThe pure Python package works without the engine — NumPy fallbacks are\nused for all operations. Install the engine only when you need the\nperformance advantage.\n\n`pip install sc-neurocore` publishes the Python suite under the public\n`sc-neurocore` package name. The optional Rust engine remains part of the\nrepository / release-asset / source-build flow rather than a separate PyPI\nruntime dependency. Source-only Frontier modules such as `analysis`, `viz`,\n`audio`, `dashboard`, and `swarm` still require a source checkout.\n\n### Development Setup\n\n```bash\ngit clone https://github.com/anulum/sc-neurocore.git\ncd sc-neurocore\npip install -e \".[dev]\"    # editable install with all dev tools\nmake preflight             # verify setup (lint + tests)\n```\n\nIf you are changing the Rust bridge locally, install `bridge/` in the same\nenvironment or run source-tree commands with `PYTHONPATH=src:bridge`.\n\n### Visual SNN Design Studio (Experimental)\n\n\u003e **Status:** Development preview. The Studio is functional but under active\n\u003e development. API and UI may change between releases.\n\nA web-based IDE for designing, training, compiling, and deploying spiking\nneural networks — from ODE equations to FPGA bitstream in a single browser tab.\n\n```bash\npip install sc-neurocore[studio]\nsc-neurocore studio              # opens browser at http://127.0.0.1:8001\n```\n\n| Feature | What it does |\n|---------|-------------|\n| **118 Model Browser** | Browse all neuron models by category, simulate with parameter sliders |\n| **18+ Analysis Views** | Trace, phase portrait, ISI, f-I curve, bifurcation, heatmap, STA, frequency response, characterisation dashboard |\n| **Compiler Inspector** | Build SC IR from equations, verify, emit SystemVerilog |\n| **Synthesis Dashboard** | One-click Yosys synthesis to ice40/ECP5/Gowin/Xilinx, multi-target comparison, resource bars |\n| **Training Monitor** | Live loss/accuracy curves via SSE, 6 surrogate gradients, per-layer spike rates |\n| **Network Canvas** | Drag-and-drop populations and projections (React Flow), NIR export/import |\n| **Full Pipeline** | Network → simulate → compile → synthesise in one click |\n| **Project Save/Load** | Persistent workspaces as JSON, server-side storage |\n\nNo other SNN framework provides a visual design-to-hardware pipeline.\nsnnTorch has Jupyter notebooks. Brian2 has a basic GUI. Neither goes from\nvisual network design to FPGA resource estimation.\n\n| Feature | SC-NeuroCore Studio | Brian2 GUI | snnTorch | Nengo GUI |\n|---------|:---:|:---:|:---:|:---:|\n| Visual network design | **Yes** | Basic | No | Yes |\n| ODE equation editor | **Yes** | No | No | No |\n| Live training curves | **Yes** | No | TensorBoard | No |\n| Verilog output viewer | **Yes** | No | No | No |\n| FPGA synthesis | **Yes** | No | No | No |\n| Co-simulation view | **Yes** | No | No | No |\n\nFull documentation: [Studio Guide](https://anulum.github.io/sc-neurocore/studio/)\n\n## Docker\n\nThe Docker image ships with the full Rust engine (39–202× faster than Brian2):\n\n```bash\n# Build\nmake docker-build\n# or: docker build -f deploy/Dockerfile -t sc-neurocore:latest .\n\n# Run interactive Python shell\nmake docker-run\n# or: docker run --rm -it sc-neurocore:latest\n\n# Smoke test via docker compose\ndocker compose -f deploy/docker-compose.yml up\n```\n\nPre-built images are published to GHCR on every release:\n\n```bash\ndocker pull ghcr.io/anulum/sc-neurocore:latest\ndocker run --rm -it ghcr.io/anulum/sc-neurocore:latest\n```\n\n## Architecture\n\n### Module Tiers\n\n`pip install sc-neurocore` ships **Core + Simulation + Domain bridges** only.\nResearch and Frontier modules are available from source (`pip install -e \".[dev]\"`).\n\n| Tier | Modules | Ships in wheel | Status |\n|------|---------|:--------------:|--------|\n| **Core** | neurons, synapses, layers, sources, utils, recorders, accel, compiler, hdl_gen, hardware, cli, exceptions | Yes | Production-ready. 100% coverage. |\n| **Simulation** | hdc, solvers, transformers, learning, graphs, ensembles, export, pipeline, profiling, models, math, spatial, verification, security | Yes | Stable. Import explicitly. |\n| **Domain bridges** | quantum (Qiskit/PennyLane), adapters/holonomic (JAX), scpn (Petri nets) | Yes | Requires `pip install sc-neurocore[quantum]` or `[jax]` |\n| **Research** | robotics, physics, bio, optics, chaos, sleep, interfaces | No | Tested. Available from source. |\n| **Frontier** | generative, world_model, analysis, audio, dashboard, viz, swarm | No | Experimental. Available from source. |\n| **Speculative** | `research/` (eschaton, exotic, meta, post_silicon, transcendent) | No | Theoretical. See `research/README.md`. |\n\n### Architecture Diagram\n\n```mermaid\ngraph TD\n    subgraph \"Python API (pip install sc-neurocore)\"\n        A[BitstreamEncoder] --\u003e B[SCDenseLayer / SCConv2DLayer]\n        B --\u003e C[116 Neuron Models\u003cbr/\u003eLIF · HH · AdEx · Izhikevich · ArcaneNeuron · ...]\n        C --\u003e NET[Network Engine\u003cbr/\u003ePopulation · Projection · 3 Backends]\n        C --\u003e ID[Identity Substrate\u003cbr/\u003ePersistent SNN · Checkpoint · Director]\n        C --\u003e D[STDP / R-STDP Synapses]\n        D --\u003e E[BitstreamSpikeRecorder]\n    end\n\n    subgraph \"Acceleration\"\n        B --\u003e F{Backend?}\n        F --\u003e|CPU| G[NumPy / Numba SIMD]\n        F --\u003e|GPU| H[CuPy CUDA]\n        F --\u003e|Rust| I[sc_neurocore_engine\u003cbr/\u003e39–202× vs Brian2 · 109 neuron models\u003cbr/\u003e80-model NetworkRunner]\n        F --\u003e|MPI| MPI[mpi4py distributed\u003cbr/\u003ebillion-neuron scale]\n    end\n\n    subgraph \"Hardware Target\"\n        I --\u003e J[IR Compiler]\n        J --\u003e K[SystemVerilog Emitter]\n        J --\u003e K2[MLIR/CIRCT Emitter]\n        K --\u003e L[Verilog RTL\u003cbr/\u003eAXI-Lite + LIF Core]\n        K2 --\u003e L\n        L --\u003e M[FPGA Bitstream\u003cbr/\u003eXilinx / Intel]\n        L --\u003e V[Formal Verification\u003cbr/\u003eSymbiYosys · 7 modules]\n    end\n\n    subgraph \"Domain Bridges (optional)\"\n        B --\u003e N[SCPN Petri Nets]\n        B --\u003e O[Quantum Hybrid\u003cbr/\u003eQiskit / PennyLane]\n        B --\u003e P[HDC/VSA Symbolic Memory]\n    end\n\n    style A fill:#2d6a4f,color:#fff\n    style I fill:#b5651d,color:#fff\n    style L fill:#1a237e,color:#fff\n    style M fill:#4a148c,color:#fff\n    style O fill:#6a1b9a,color:#fff\n    style V fill:#004d40,color:#fff\n```\n\n### Core API (28 symbols)\n\n```python\nfrom sc_neurocore import (\n    # Neurons\n    StochasticLIFNeuron, FixedPointLIFNeuron, FixedPointLFSR,\n    FixedPointBitstreamEncoder, HomeostaticLIFNeuron,\n    StochasticDendriticNeuron, SCIzhikevichNeuron,\n    # Synapses\n    BitstreamSynapse, BitstreamDotProduct,\n    StochasticSTDPSynapse, RewardModulatedSTDPSynapse,\n    # Layers\n    SCDenseLayer, SCConv2DLayer, SCLearningLayer,\n    VectorizedSCLayer, SCRecurrentLayer, MemristiveDenseLayer,\n    SCFusionLayer, StochasticAttention,\n    # Utilities\n    BitstreamEncoder, BitstreamAverager, RNG,\n    generate_bernoulli_bitstream, generate_sobol_bitstream,\n    bitstream_to_probability,\n    # Sources \u0026 Recorders\n    BitstreamCurrentSource, BitstreamSpikeRecorder,\n)\n```\n\n### Hardware (Verilog RTL)\n\n```\nhdl/\n  sc_bitstream_encoder.v      -- LFSR-based stochastic encoder (SEED_INIT param)\n  sc_bitstream_synapse.v      -- AND-gate SC multiplier\n  sc_mux_add.v                -- 2-input MUX (scaled addition)\n  sc_cordiv.v                 -- CORDIV stochastic divider (Li et al. 2014)\n  sc_dotproduct_to_current.v  -- Popcount -\u003e fixed-point current\n  sc_lif_neuron.v             -- Q8.8 leaky integrate-and-fire\n  sc_firing_rate_bank.v       -- Spike rate estimator\n  sc_dense_layer_core.v       -- Full dense layer pipeline (decorrelated seeds)\n  sc_dense_matrix_layer.v     -- N×M weight matrix layer\n  sc_axil_cfg.v               -- AXI-Lite register file\n  sc_axil_cfg_param.v         -- Parameterized AXI-Lite register file\n  sc_axis_interface.v         -- AXI-Stream bulk bitstream I/O\n  sc_dma_controller.v         -- DMA for weight upload and output readback\n  sc_cdc_primitives.v         -- Clock domain crossing (2-FF sync, Gray, async FIFO)\n  sc_dense_layer_top.v        -- Dense layer top wrapper\n  sc_neurocore_top.v          -- System top (DMA + AXI + layers)\n  sc_aer_encoder.v            -- AER spike encoder (event-driven output)\n  sc_event_neuron.v           -- Event-triggered LIF (power ∝ spike rate)\n  sc_aer_router.v             -- AER event distribution to target neurons\n  tb_sc_*.v (7 testbenches)   -- Self-checking simulation testbenches\n  formal/ (7 modules)         -- SymbiYosys formal verification properties\n```\n\n### GPU Acceleration\n\n```python\nfrom sc_neurocore.accel import xp, HAS_CUPY, to_device, to_host\nfrom sc_neurocore.accel.gpu_backend import gpu_vec_mac\n\n# VectorizedSCLayer auto-detects GPU\nlayer = VectorizedSCLayer(n_inputs=32, n_neurons=64, length=1024)\noutput = layer.forward(input_values)  # GPU if CuPy available, else CPU\n```\n\n## Hardware-Software Co-Simulation\n\nThe co-sim flow verifies bit-exact equivalence between the Python model and\nVerilog RTL:\n\n```bash\n# 1. Generate stimuli + expected results (Python golden model)\npython scripts/cosim_gen_and_check.py --generate\n\n# 2. Run Verilog simulation (requires Icarus Verilog)\niverilog -o tb_lif hdl/sc_lif_neuron.v hdl/tb_sc_lif_neuron.v\nvvp tb_lif\n\n# 3. Compare results\npython scripts/cosim_gen_and_check.py --check\n```\n\n### Reproducibility\n\nEvery GitHub Release includes:\n\n- **wheel + sdist** — Python distribution artifacts (`dist/sc_neurocore-*`)\n- **SBOM** — CycloneDX software bill of materials (`sbom.json`)\n- **Changelog extract** — release notes from `CHANGELOG.md`\n\nCo-simulation traces are generated deterministically from fixed LFSR seeds.\nTo reproduce a published benchmark:\n\n```bash\ngit checkout v3.13.3\npip install -e \".[dev]\"\npython benchmarks/benchmark_suite.py --markdown \u003e BENCHMARKS.md\n```\n\nFor Verilog co-sim trace reproduction, see `scripts/cosim_gen_and_check.py`\nand the seed constants in `hdl/sc_bitstream_encoder.v`.\n\n### Key Technical Details\n\n- **LFSR**: 16-bit maximal-length, polynomial x^16+x^14+x^13+x^11+1, period 65535\n- **Seed strategy**: Input encoders `0xACE1 + i*7`, weight encoders `0xBEEF + i*13`\n- **Fixed-point**: Q8.8 (DATA_WIDTH=16, FRACTION=8), signed two's complement\n- **Overflow**: Explicit bit-width masking via `_mask()` function\n\n## Examples\n\nRunnable scripts in `examples/`:\n\n| Script | Description |\n|--------|-------------|\n| `01_basic_sc_encoding.py` | Bernoulli \u0026 Sobol bitstream encoding/decoding |\n| `02_sc_neuron_layer.py` | SCDenseLayer construction, spike trains, and firing-rate summary |\n| `03_ir_compile_demo.py` | IR graph building, verification, SystemVerilog emission (v3 Rust engine) |\n| `04_vectorized_layer.py` | VectorizedSCLayer throughput benchmarking |\n| `05_scpn_stack.py` | Full 7-layer SCPN consciousness stack with inter-layer coupling |\n| `06_hdl_generation.py` | Verilog top-level generation from a network description |\n| `07_ensemble_consensus.py` | Multi-agent ensemble orchestration and voting |\n| `08_hdc_symbolic_query.py` | Hyper-Dimensional Computing symbolic memory (v3 Rust engine) |\n| `09_safety_critical_logic.py` | Fault-tolerant Boolean logic with stochastic redundancy (v3 Rust engine) |\n| `10_benchmark_report.py` | Head-to-head v2/v3 benchmark suite (v3 Rust engine) |\n| `11_sc_training_demo.py` | Surrogate-gradient training of an SC dense layer (v3 Rust engine) |\n| `12_load_pretrained_model.py` | Load pretrained ConvSpikingNet and classify MNIST digits |\n| `jax_training_demo.py` | JAX JIT surrogate-gradient SNN training on synthetic data |\n| `mnist_fpga/demo.py` | MNIST classifier: train → quantise Q8.8 → SC simulate → Verilog export |\n| `mnist_conv_train.py` | **ConvSpikingNet: 99.49% MNIST** (learnable beta/threshold, cosine LR) |\n| `mnist_surrogate/train.py` | Surrogate gradient SNN training (FastSigmoid/SuperSpike/ATan, ~95% MNIST) |\n| `nir_roundtrip_demo.py` | NIR roundtrip: CubaLIF + recurrent connections, build → import → run → export |\n| `norse_nir_roundtrip.py` | Norse → NIR → SC-NeuroCore roundtrip with real Norse weights |\n| `snntorch_nir_roundtrip.py` | snnTorch RSynaptic → NIR → SC-NeuroCore roundtrip (CubaLIF + recurrent) |\n| `spikingjelly_nir_roundtrip.py` | SpikingJelly → NIR → SC-NeuroCore roundtrip |\n| `ann_to_snn_demo.py` | Convert trained PyTorch ANN to rate-coded SNN |\n| `delay_training_demo.py` | Train spiking network with learnable per-synapse delays |\n\n```bash\nPYTHONPATH=src:bridge python examples/01_basic_sc_encoding.py\n```\n\nExamples marked **(v3 Rust engine)** require an available `sc_neurocore_engine`\nbridge install. For source-tree runs against local bridge code, use\n`PYTHONPATH=src:bridge` or install `bridge/` in the same environment.\n\n## CI/CD\n\n13 GitHub Actions workflows (`.github/workflows/`), all SHA-pinned:\n\n| Workflow | Purpose |\n|----------|---------|\n| **ci.yml** | Lint (ruff format + ruff check + bandit) + Test (Python 3.10-3.14, coverage = 100%) + Build |\n| **v3-engine.yml** | Rust engine `cargo test` + `cargo clippy` |\n| **v3-wheels.yml** | Cross-platform wheels (Linux, macOS, Windows × Python 3.10–3.14) |\n| **docker.yml** | Build \u0026 push Docker image to GHCR on release tags |\n| **docs.yml** | MkDocs → GitHub Pages |\n| **publish.yml** | Publish `sc-neurocore` to PyPI and `engine/` to crates.io on release tags |\n| **release.yml** | Python wheel + sdist + changelog extraction → GitHub Release |\n| **benchmark.yml** | Performance regression tracking |\n| **codeql.yml** | CodeQL security analysis (weekly + on push) |\n| **scorecard.yml** | OpenSSF Scorecard |\n| **pre-commit.yml** | Pre-commit hook validation |\n| **yosys-synth.yml** | Yosys HDL synthesis verification |\n| **stale.yml** | Auto-label and close stale issues |\n\n## Benchmarks\n\nRun the benchmark suite:\n\n```bash\npython benchmarks/benchmark_suite.py           # quick mode\npython benchmarks/benchmark_suite.py --full    # thorough (10x)\npython benchmarks/benchmark_suite.py --markdown # output BENCHMARKS.md\n```\n\nSample results (CPU, quick mode):\n\n| Operation | Throughput |\n|-----------|-----------|\n| LFSR step | 2.25 Mstep/s |\n| Bitstream encoder | 1.88 Mstep/s |\n| LIF neuron step | 1.15 Mstep/s |\n| vec_and (1024 words) | 45.67 Gbit/s |\n| gpu_vec_mac (64x32x16w) | 6.15 GOP/s |\n\n## Documentation\n\n**Live site**: [anulum.github.io/sc-neurocore](https://anulum.github.io/sc-neurocore/)\n\n- [Getting Started](docs/guides/getting-started.md) — Installation \u0026 quickstart\n- [**Tutorials**](https://anulum.github.io/sc-neurocore/tutorials/01_stochastic_computing_fundamentals/) — 51 hands-on guides (SC fundamentals → MNIST → FPGA → quantum → formal verification)\n- [API Reference](docs/api/API_REFERENCE.md) — Python package API\n- [Rust Engine API](https://anulum.github.io/sc-neurocore/rust-api/sc_neurocore_engine/) — Rust engine docs\n- [Hardware Guide](docs/hardware/HARDWARE_GUIDE.md) — FPGA deployment workflow\n- [Architecture](docs/architecture/architecture.md) — Package architecture\n- [Benchmarks](docs/benchmarks/BENCHMARKS.md) — Performance measurements\n- [CHANGELOG.md](CHANGELOG.md) — Version history\n\nBuild docs locally:\n```bash\npip install mkdocs mkdocs-material mkdocstrings[python]\nmkdocs serve\n```\n\n## Install Extras\n\n```bash\npip install sc-neurocore              # core engine only (neurons, layers, compiler, HDL gen)\npip install sc-neurocore[accel]       # + Numba JIT acceleration\npip install sc-neurocore[gpu]         # + CuPy CUDA acceleration\npip install sc-neurocore[jax]         # + JAX backend for holonomic adapters\npip install sc-neurocore[quantum]     # + Qiskit + PennyLane quantum bridges\npip install sc-neurocore[lava]        # + Intel Lava interop (Loihi target)\npip install sc-neurocore[research]    # + matplotlib, networkx, onnx, torch\npip install sc-neurocore[full]        # + numba, matplotlib, networkx, onnx, qiskit, pennylane\n```\n\nFor development (includes all modules + research/frontier code from source):\n\n```bash\npip install -e \".[dev]\"               # editable install with pytest, mypy, ruff, hypothesis\n```\n\nPinned dependency files for reproducible environments:\n\n```bash\npip install -r requirements.txt       # runtime only\npip install -r requirements-dev.txt   # runtime + dev tools\n```\n\n## Rust Engine (109 Neuron Models, 378 Tests)\n\nThe `sc_neurocore_engine` crate provides 109 Rust neuron models callable\nfrom Python via PyO3 bindings (including ArcaneNeuron), an 80-model\nNetworkRunner with Rayon-parallel population simulation (100K+ neurons),\nand SIMD-accelerated primitives with dispatch across five ISAs (AVX-512,\nAVX2, NEON, SVE, RISC-V V).\n\n378 Rust tests across 17 test binaries.\n\n| Category | Scope |\n|----------|-------|\n| Primitives | Bernoulli + Sobol bitstream, pack/unpack, popcount, SIMD (5 ISAs) |\n| Neurons | 109 models: LIF variants, HH-type, maps, hardware emulators, population, ArcaneNeuron |\n| NetworkRunner | 80-model fused simulation loop with CSR projections and Rayon parallelism |\n| Synapses | Static, STDP, Reward-STDP |\n| Layers | Dense, Conv2D, Recurrent, Learning, Fusion, Memristive, Attention |\n| Networks | Brunel, GNN, Spike recorder, Connectome, Fault injection |\n| Compiler | IR builder/parser/verifier, SystemVerilog + MLIR emitters, IR bridge |\n| Domain | HDC, Kuramoto, SSGF geometry |\n| Training | 6 surrogate gradient functions + property tests |\n\n## Community\n\n- [GitHub Discussions](https://github.com/anulum/sc-neurocore/discussions) — questions, ideas, show \u0026 tell\n- [Issue Tracker](https://github.com/anulum/sc-neurocore/issues) — bug reports and feature requests\n- [Contributing Guide](CONTRIBUTING.md) — how to set up, test, and submit PRs\n\n## Citation\n\nIf you use SC-NeuroCore in your research, please cite:\n\n```bibtex\n@software{sotek2026scneurocore,\n  author    = {Šotek, Miroslav},\n  title     = {SC-NeuroCore: A Deterministic Stochastic Computing Framework for Neuromorphic Hardware Design},\n  version   = {3.13.3},\n  year      = {2026},\n  doi       = {10.5281/zenodo.18906614},\n  url       = {https://github.com/anulum/sc-neurocore},\n  license   = {AGPL-3.0-or-later}\n}\n```\n\nSee also [`CITATION.cff`](CITATION.cff) for the machine-readable citation metadata.\n\n## AI Disclosure\n\nThis project uses LLMs for advanced control mechanisms and GitHub\nhandling. All output is reviewed, tested, and verified by the project\nauthor.\n\n## License\n\nSC-NeuroCore is dual-licensed:\n\n- **Open Source**: [GNU Affero General Public License v3.0](LICENSE) (AGPLv3)\n- **Commercial**: Proprietary license available for integration into closed-source products\n\nFor commercial licensing enquiries, contact [protoscience@anulum.li](mailto:protoscience@anulum.li).\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.anulum.li\"\u003e\n    \u003cimg src=\"docs/assets/anulum_logo_company.jpg\" width=\"180\" alt=\"ANULUM\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://www.anulum.li\"\u003e\n    \u003cimg src=\"docs/assets/fortis_studio_logo.jpg\" width=\"180\" alt=\"Fortis Studio\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n  \u003cem\u003eDeveloped by \u003ca href=\"https://www.anulum.li\"\u003eANULUM\u003c/a\u003e / Fortis Studio\u003c/em\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanulum%2Fsc-neurocore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanulum%2Fsc-neurocore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanulum%2Fsc-neurocore/lists"}