Monata Roadmap TODO¶
Monata’s target is to become the project/workflow framework for the circuit toolchain while covering practical SPICE execution, import, measurement, model-management, and experiment workflows.
This roadmap is organized by delivery horizon:
Completed foundation records capabilities that should be preserved.
Near-term roadmap contains implementation-sized work that can be planned, tested, and delivered without changing simulator scope.
Mid-term roadmap contains product-scale capabilities that need one or two foundation steps first.
Long-term roadmap contains ecosystem or product bets that need explicit design, licensing, or deployment decisions before implementation.
Deferred simulator expansion is intentionally separate. Do not infer new simulator backends from general roadmap items.
Current Baseline¶
Monata already has:
Project -> Library -> Cell -> schematic/netlist/testbench viewworkflow.Native Python circuit authoring for compact R/C/L/V/I/M/X/subcircuit flows.
Broad netlist IR coverage for common SPICE primitives, dot commands, directives, source waveforms, raw control lines, and imported raw fallback.
Monata-owned parser/import path with source-located structured errors, continuation handling,
.controlgrouping, common dot commands, expression coverage, full-deck import, subcircuit/model asset import, andcir2py-style conversion from imported IR.Shared structured mutation resolver for global params, element values, element params, source values, subcircuit instance params, ambiguity errors, and explicit raw-directive fallback.
SimTask/SimResultas the simulator boundary.Stable
ngspice-subprocessexecution for DC, transient, AC, operating point, noise, sensitivity, pole-zero, distortion, transfer-function, and Fourier flows.Typed
AnalysisResult/Waveformaccess, legacySimResult.waveforms[name]numpy-compatible arrays, ASCII/binary rawfile parsing, complex AC vectors, branch currents, and plotting-neutral derived transforms.Measurement results,
Spec/SpecTable, Python metric evaluation, analysis summaries, and local Experiment persistence.Sweep, corner, Monte Carlo, optimizer, and native ngspice projection through the shared mutation layer.
Monte Carlo process/global variation, mismatch pairs, seed/sample metadata, LocalExecutor native-mode capability, deterministic task-expanded fallback, and numpy-only result column helpers.
Project-scale model tooling: content-hash cache, OpenVAF/ADMS compiler wrappers, model registry entries, OSDI discovery, family/level/version resolution, project-local model manifests, relative relocation, and model/corner projection into simulation tasks.
User-facing delivery helpers: tested examples, JSON result export/import, optional plotting helpers, documentation notes, and backend capability discovery.
Guardrails¶
Preserve the Library/Cell/View workflow as the top-level user model.
Keep
SimTask/SimResultas the backend boundary.Ordinary simulator failures should return structured failed
SimResultobjects with reason metadata where practical.Keep plain Python numbers accepted everywhere existing Monata code accepts them.
Keep
SimResult.waveformscompatible while typed result adoption grows.Prefer structured IR mutation. Use raw/text fallback only when the target has explicit provenance and cannot be represented structurally.
Do not add runtime dependencies to core Monata without a clear user-facing need and tests. Plotting, heavy export, docs, database, cloud, GUI, and backend-specific packages should remain optional.
Do not bundle third-party PDKs, device models, or license-sensitive example decks in the package.
Keep
ngspice-subprocessas the stable reference backend until a later explicit simulator-expansion plan proves another backend.
Verification Baseline¶
For Monata source work, use the editable environment:
pixi run --manifest-path test/pixi.toml -e monata-dev test-monata-src-targeted
pixi run --manifest-path test/pixi.toml -e monata-dev test-monata-src
pixi run --manifest-path test/pixi.toml -e monata-dev ruff check src/monata/src/monata src/monata/tests
pixi run --manifest-path test/pixi.toml -e monata-dev pyright <changed source and tests>
git -C src/monata diff --check
Use packaged integration only when validating built artifacts or package installation behavior.
Completed Foundation¶
P2 - Typed Values, Waveforms, And Result Ergonomics (done)¶
Monata-owned unit/value helpers.
Typed waveform metadata and plotting-neutral transforms.
Result lookup and legacy waveform compatibility.
P3 - Rawfile Coverage And Native Analysis Expansion (done)¶
ASCII/binary rawfile parsing for real and complex vectors.
AC complex vector handling and branch-current support.
Native sensitivity, pole-zero, distortion, transfer-function, and Fourier analysis specs.
P4 - Measures, Specs, And Analysis Workflow Closure (done)¶
Simulator
.measureparsing.Spec/SpecTableintegration.Python metrics, common analysis summaries, and Experiment persistence.
P5 - Parser, Import, And Round-Trip Deck Support (done)¶
Monata-owned parser/import path.
Full-deck import to canonical Cell netlist view.
Subcircuit/model asset import.
Representative round-trip and
cir2pycoverage.
P6 - Structured Mutation, Corners, Monte Carlo, And Optimizer Integration (done)¶
Shared structured mutation resolver.
Sweep, corner, Monte Carlo, optimizer, and ngspice backend projection through one mutation model.
Explicit ambiguity, raw fallback, and backend failure behavior.
P7 - Model, PDK, And Project Library Closure (done)¶
Structured model diagnostics and project-local
models.tomlmanifest.Candidate-preserving registry indexes and strict ambiguity diagnostics.
Content-hash cache keys that include input identity/content and include provenance.
Project manifest load/save APIs with relative path relocation and validation.
Manifest-backed model/corner projection into
SimTask.osdi_paths,.include,.lib, and provenance metadata without mutating caller circuits.Reusable device metadata for family/module/model/parameter inspection without bundling PDK assets or adding UI dependencies.
P8 - User-Facing Delivery (done)¶
monata.examplesworkflows for native authoring, imported deck round-trip, synthetic model registry usage, and Experiment persistence.Lightweight JSON result export/import preserving numpy-compatible waveform access and typed result metadata.
Optional plotting helpers for
Waveformand Bode-styleAnalysisResultviews.Tests anchoring examples, export, plotting, and editable source workflows.
P9 Phase 1 - Backend Capability Contract (done)¶
BackendCapabilitiesand registry-level capability discovery.ngspice-subprocesscapability metadata for analyses, result modes, source/mutation support, model artifact support, and runner/parser contracts.Structured unsupported-task
SimResulthelpers.Tests proving default built-ins remain exactly
ngspice-subprocessand dummy backend fixtures stay test-local.
Near-Term Roadmap¶
Near-term work should be implementation-sized and should not require new simulator backends, GUI product decisions, third-party PDK licensing decisions, or external production infrastructure.
P10 - Package Smoke, Docs, And Release Hygiene¶
Goal: Close the remaining delivery gap between editable source validation and installed-package confidence.
In Scope
Installed-package import/API smoke tests.
Installed-package native ngspice smoke.
Parser round-trip smoke against the packaged environment.
Model registry smoke with synthetic fixtures.
Closed-loop project workflow smoke against the packaged environment.
Documentation build or doc-link validation for examples that are meant to be user-facing.
Release notes that call out unsupported dialects/backends and optional dependencies.
Acceptance Gates
Editable source suite remains green.
Packaged smoke suite runs without relying on editable
src/monata.Docs/release notes reference tested APIs only.
No new core runtime dependency is introduced.
P11 - Experiment Storage Backend Boundary¶
Goal: Make Experiment persistence pluggable before adding database or cloud storage.
In Scope
Define a small storage backend protocol for saving/loading Experiment metadata, measures, summaries, corners, optimizer metadata, and result artifacts.
Keep the existing filesystem storage as the default backend.
Add stable schema/version metadata for saved experiments.
Add migration/compatibility checks for old local saves.
Add a SQLite backend only after the filesystem boundary is stable.
Keep large waveform storage explicit and inspectable.
Acceptance Gates
Existing Experiment save/load tests pass through the filesystem backend.
A synthetic compatibility fixture can be loaded after schema version checks.
SQLite, if added, is optional and tested separately.
No cloud credentials or external services are required.
P12 - Distributed Executor Foundation¶
Goal: Let Monata submit batches outside one local process without changing simulation APIs.
In Scope
Clarify executor contracts for task serialization, working directories, environment discovery, artifact collection, logs, and structured failures.
Add a local multiprocessing or job-directory executor as the first distributed-shaped backend.
Add retry/timeout/concurrency controls.
Preserve
LocalExecutorbehavior.Keep simulator selection explicit; do not add new simulator backends.
Acceptance Gates
Sweep/corner/Monte Carlo tasks can run through the new executor path.
Failed tasks produce structured
SimResultfailures with logs/provenance.Artifacts and metadata round-trip without relying on process-local state.
Existing
LocalExecutortests remain green.
Mid-Term Roadmap¶
Mid-term work is product-scale but still local/offline. It should build on P10 through P12 rather than bypass them.
P13 - PDK Metadata To Symbol/Schematic Generation¶
Goal: Generate usable symbol and schematic artifacts from Monata-owned device/model metadata.
Prerequisites
P7 model/device metadata is stable enough to describe families, modules, model names, pin order, parameters, and documentation hints.
A synthetic PDK fixture exists for tests.
In Scope
Device metadata fields for pin order, pin direction, default parameters, symbol shape hints, and schematic instance rules.
Symbol view generation from synthetic PDK/device metadata.
Schematic instance generation or update helpers for registered devices.
Validation for missing pins, ambiguous model/subcircuit mappings, and incompatible metadata.
No bundled third-party PDK.
Acceptance Gates
Synthetic metadata can generate deterministic symbol views.
Generated schematic instances can render to valid ngspice netlists.
Missing or ambiguous metadata produces clear diagnostics.
Existing hand-authored views remain compatible.
P14 - Local Project Browser / Editor Integration Boundary¶
Goal: Prepare Monata for GUI/editor integration without committing to a specific UI stack too early.
Prerequisites
Project, storage, and generated view APIs are stable.
Common workflows can be driven through non-interactive Python APIs.
In Scope
A UI-neutral project service API for listing libraries, cells, views, manifests, models, experiments, and runnable testbenches.
Commands for opening/generating views, running simulations, and reading result summaries.
Structured event/progress/log objects that a GUI, CLI, or editor plugin can consume.
Optional CLI or text-mode browser as a validation surface.
Out Of Scope
Choosing VS Code vs web vs desktop UI as part of this batch.
Building a full graphical schematic editor.
Acceptance Gates
A non-UI test can drive project browsing, simulation, and result inspection through the service API.
No GUI dependency is required in core Monata.
The API is stable enough for a later UI-specific package.
P15 - SPICE Dialect Coverage Matrix And Fixture Corpus¶
Goal: Replace vague “exhaustive dialect compatibility” with measurable coverage and diagnostics.
In Scope
Dialect coverage matrix for ngspice, PSpice, HSpice, Spectre, and Xyce syntax families.
Golden fixture corpus for supported elements, dot commands, expressions, control blocks, model/subcircuit patterns, and known unsupported constructs.
Import diagnostics that explain unsupported syntax without corrupting the imported project.
Compatibility reports generated from tests.
Out Of Scope
Claiming exhaustive compatibility.
Adding new simulator execution backends.
Acceptance Gates
Coverage reports distinguish supported, partially supported, and unsupported constructs.
Unsupported dialect features fail with source-located diagnostics.
Existing parser/import workflows remain green.
Long-Term Roadmap¶
Long-term work needs explicit product, licensing, deployment, or ecosystem decisions before implementation. Treat each item as a separate design project.
L1 - GUI / Editor Product¶
Needed Before Implementation
Choose the first product surface: VS Code plugin, web UI, desktop app, or CLI browser.
Define the target workflow: project browsing, schematic viewing, symbol editing, simulation launch, result plotting, model management, or all of these.
Decide packaging and optional dependency boundaries.
Reuse P14 service APIs instead of binding GUI code to internal model classes.
L2 - Third-Party PDK Acquisition¶
Needed Before Implementation
License and redistribution policy.
Source allowlist and version pinning.
Hash verification, cache layout, provenance metadata, and offline behavior.
User consent and diagnostic flows for restricted or manually supplied PDKs.
Likely First Step
Prefer “user-provided PDK registration, validation, and indexing” before any automatic download/acquisition workflow.
L3 - Cloud Or Database-Backed Experiment Storage¶
Needed Before Implementation
Stable local storage backend boundary from P11.
Schema migration policy.
Large waveform/object storage strategy.
Query/index requirements.
Credential, tenancy, and offline-mode decisions for cloud storage.
Likely First Step
Add SQLite after filesystem storage is versioned. Add object/cloud storage only after local query semantics are proven.
L4 - Production Distributed Simulation¶
Needed Before Implementation
Executor foundation from P12.
Cluster/cloud environment model.
Artifact transport, result collection, logs, retries, cancellation, and observability.
Security boundaries for running user decks remotely.
Likely First Step
Add Slurm/job-array support after local job-directory execution is stable.
L5 - Full Schematic-Symbol / PDK UI¶
Needed Before Implementation
Generated symbol/schematic artifacts from P13.
GUI/editor boundary from P14.
PDK registration and validation policy from L2.
Editing semantics for generated vs user-authored artifacts.
Deferred Simulator Expansion¶
These are not part of the near-term roadmap unless a future task explicitly asks for new simulator support.
Xyce Backend¶
Add a Xyce renderer for a supported common IR subset.
Add a subprocess runner and result parser for a narrow initial analysis set.
Integrate model/library artifacts only through the P7 contract.
Add package/environment detection and clear missing-tool diagnostics.
Keep ngspice tests as the reference compatibility gate.
VACASK Backend¶
Add VACASK only after the backend contract and model artifact contract are proven by Xyce or another constrained second backend.
Clarify OSDI/plugin handling and result parsing before widening analysis coverage.
Avoid coupling VACASK-specific behavior into common Monata APIs.