Skip to main content

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 ngspice executable through ngspice-subprocess;
  • a user-provided libngspice shared library through ngspice-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:

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

monata-0.1.0.tar.gz (397.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

monata-0.1.0-py3-none-any.whl (301.3 kB view details)

Uploaded Python 3

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

Hashes for monata-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9e7c26f5fc097e0445594ca0c9ed15dd96fcdc5da316ff89eed4c08b7454189f
MD5 7239abaa34dcfe6488d186e8881f2775
BLAKE2b-256 6c4fe8f3ad122bf5a429765d1810c6cda339080c2aaec16707393421fc07da14

See more details on using hashes here.

Provenance

The following attestation bundles were made for monata-0.1.0.tar.gz:

Publisher: release.yml on lizhangmai/monata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for monata-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32a3a665fb43ac2067a75ab05f36ab6cd2307e765cc9c311a645d26162a5f864
MD5 0296460d5a2a2453d8ce0c3b7f29fc16
BLAKE2b-256 8ce5cc68bedc199fafb42c7a5e3bbf133e97caafa5bbd0847e563838007c6e1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for monata-0.1.0-py3-none-any.whl:

Publisher: release.yml on lizhangmai/monata

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page