A lightweight EDA framework for circuit design and SPICE simulation workflows
Project description
Monata
Monata is a Python toolkit for circuit workflow automation. It provides a typed front end for organizing circuit projects, authoring SPICE-oriented netlists, running simulator tasks, and working with measurement and result data.
Monata is designed as a lightweight Python package, not as a simulator distribution. It integrates with simulator and model-toolchain programs that users install in their own environments.
Features
- Library, cell, and view organization for circuit projects.
- Native circuit/netlist records with ngspice-compatible rendering.
- Backend-neutral simulation tasks, result objects, sweeps, corners, Monte Carlo flows, and measurements.
- Built-in ngspice subprocess backend, plus a shared-library ngspice runner
for environments that provide
libngspice. - Plotting and HDF5 result import/export available from the default install.
- Optional technology-library packages, such as
monata-techlib, for reusable model metadata and redistributed model assets.
Installation
python -m pip install monata
Monata supports Python 3.11 and 3.12.
Quick Start
Create a Monata library and build a small circuit:
from monata import LibraryRegistry
from monata.netlist import Circuit
registry = LibraryRegistry()
library = registry.create_library(path="work/analog", name="analog")
cell = library.create_cell("rc_filter", description="RC low-pass filter")
circuit = Circuit("rc low-pass")
circuit.voltage("in", "vin", "0", "1")
circuit.resistor("load", "vin", "vout", "1k")
circuit.capacitor("hold", "vout", "0", "1n")
print(cell.name)
print(circuit.to_spice())
Run a simulation when a supported backend is installed:
from monata.sim.core import DCSpec, LocalExecutor, SimTask
task = SimTask(
circuit=circuit,
analysis_spec=DCSpec(source="Vin", start=0, stop=1, step=0.25),
output_names=["vout"],
)
result = LocalExecutor(max_workers=1).submit(task).result()
if result.failed:
raise RuntimeError(result.error_message)
print(result.waveforms["vout"])
The default backend is ngspice-subprocess, which runs a local ngspice
executable from PATH or CONDA_PREFIX/bin.
External Tools
The public monata package does not ship simulator binaries, shared simulator
libraries, XSPICE code models, OpenVAF, Xyce, foundry PDKs, PTM model cards, or
compiled OSDI binaries.
Monata can use:
- a user-installed
ngspiceexecutable throughngspice-subprocess; - a user-provided
libngspiceshared library throughngspice-shared; - separately installed technology-library packages such as
monata-techlib.
Users and downstream packagers remain responsible for installing external tools and complying with their upstream licenses.
Documentation
Long-form documentation lives outside this source package:
- Documentation repository: https://github.com/lizhangmai/monata-docs
- Getting started: https://github.com/lizhangmai/monata-docs/tree/main/docs/getting-started
- User guide: https://github.com/lizhangmai/monata-docs/tree/main/docs/user-guide
- API boundaries: https://github.com/lizhangmai/monata-docs/blob/main/docs/reference/api-boundaries.md
- Simulator and tool setup: https://github.com/lizhangmai/monata-docs/blob/main/docs/toolchain/external-tools.md
- Maintainer notes: https://github.com/lizhangmai/monata-docs/tree/main/docs/maintainers
Security
Monata project views can be Python source files. Loading schematic and testbench views executes that project code in the current Python process; view loading is not sandboxed. Open, load, generate, and simulate only trusted libraries and project workspaces.
License
Monata's Python framework is licensed under the MIT License. See
LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file monata-0.1.0.tar.gz.
File metadata
- Download URL: monata-0.1.0.tar.gz
- Upload date:
- Size: 397.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e7c26f5fc097e0445594ca0c9ed15dd96fcdc5da316ff89eed4c08b7454189f
|
|
| MD5 |
7239abaa34dcfe6488d186e8881f2775
|
|
| BLAKE2b-256 |
6c4fe8f3ad122bf5a429765d1810c6cda339080c2aaec16707393421fc07da14
|
Provenance
The following attestation bundles were made for monata-0.1.0.tar.gz:
Publisher:
release.yml on lizhangmai/monata
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
monata-0.1.0.tar.gz -
Subject digest:
9e7c26f5fc097e0445594ca0c9ed15dd96fcdc5da316ff89eed4c08b7454189f - Sigstore transparency entry: 1809095795
- Sigstore integration time:
-
Permalink:
lizhangmai/monata@3c6f0fe37da724f765de6f1ba1f67a5084ebe6fc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lizhangmai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3c6f0fe37da724f765de6f1ba1f67a5084ebe6fc -
Trigger Event:
push
-
Statement type:
File details
Details for the file monata-0.1.0-py3-none-any.whl.
File metadata
- Download URL: monata-0.1.0-py3-none-any.whl
- Upload date:
- Size: 301.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32a3a665fb43ac2067a75ab05f36ab6cd2307e765cc9c311a645d26162a5f864
|
|
| MD5 |
0296460d5a2a2453d8ce0c3b7f29fc16
|
|
| BLAKE2b-256 |
8ce5cc68bedc199fafb42c7a5e3bbf133e97caafa5bbd0847e563838007c6e1e
|
Provenance
The following attestation bundles were made for monata-0.1.0-py3-none-any.whl:
Publisher:
release.yml on lizhangmai/monata
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
monata-0.1.0-py3-none-any.whl -
Subject digest:
32a3a665fb43ac2067a75ab05f36ab6cd2307e765cc9c311a645d26162a5f864 - Sigstore transparency entry: 1809095814
- Sigstore integration time:
-
Permalink:
lizhangmai/monata@3c6f0fe37da724f765de6f1ba1f67a5084ebe6fc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lizhangmai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3c6f0fe37da724f765de6f1ba1f67a5084ebe6fc -
Trigger Event:
push
-
Statement type: