Metadata-Version: 2.4
Name: svling
Version: 0.1.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Rust
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
Requires-Dist: pyslang-dev
License-File: LICENSE
Summary: SystemVerilog compiler+runtime: pyslang frontend (sling) + Rust vvp engine (evvp)
Keywords: systemverilog,verilog,simulation,vvp,iverilog,eda
Author: Chaitanya Sharma
License: GPL-2.0-or-later
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/cheeksthegeek/svling
Project-URL: Issues, https://github.com/cheeksthegeek/svling/issues
Project-URL: Source, https://github.com/cheeksthegeek/svling

# svling

**S**ystem**V**erilog compiler + runtime in one package.

`svling` bundles two pieces:

- **`sling`** — a SystemVerilog → VVP compiler frontend built on
  [pyslang](https://github.com/MikePopoloski/slang) (full IEEE
  1800-2023 LRM coverage).
- **`evvp`** — a Rust reimplementation of Icarus Verilog's `vvp`
  runtime, exposed to Python via pyo3 and invoked in-process.

The two halves ship as a single wheel containing the Python compiler
sources and one `sling/_native.abi3.so` carrying the entire runtime.

## Install

```sh
pip install svling
# or
uv tool install svling
```

## Use

```sh
# Compile and run in one go:
svling design.sv tb.sv

# Compile only (write a .vvp file):
sling -o design.vvp design.sv

# Run a pre-compiled .vvp through the Rust runtime in-process:
python -c "from sling._native import run_cli; run_cli(['evvp', '-N', 'design.vvp'])"
```

Anything that starts with `+` on the `svling` command line is forwarded
to the runtime as a Verilog plusarg (e.g. `+verbose`, `+seed=42`). Use
`--` to forward arbitrary extra flags to the runtime.

## Layout

```
svling/
├── sling/          Python frontend (pyslang → VVP)
├── evvp/           Rust crate: VVP runtime; produces both a standalone
│                   `evvp` binary and a pyo3 cdylib for the wheel
├── tests/          Sample SystemVerilog used by the docs
└── pyproject.toml  maturin build, project metadata, console scripts
```

## License

GPL-2.0-or-later. evvp is a clean-room reimplementation of Icarus
Verilog's `vvp`, which is GPL-2.0; this package keeps the same license.

