Contributing

September 8, 2026 ยท View on GitHub

Thanks for helping with SpiceBind.

Setup

You need a C++17 compiler, ngspice (library and headers), a VPI-capable Verilog simulator, and Python 3.10+. The test suite and CI cover Icarus Verilog (default) and Verilator 5.

pip install -e ".[dev]"

Standalone VPI build (no Python package):

cmake -S . -B build
cmake --build build

Rebuild the VPI after C++ changes.

Tests

nox -s test                 # Icarus Verilog (default)
SIM=verilator nox -s test

CI runs that session on Python 3.10 and 3.13 with Icarus and Verilator. Verilator needs a recent 5.x build with --timing and --vpi; CI compiles it from git.

Pull requests

  • Open an issue first for larger changes.
  • Keep the diff focused, and add or update tests when behavior changes.
  • Do not bump the package version or publish to PyPI unless a maintainer asks.