Metadata-Version: 2.4
Name: revolution-eda
Version: 0.9.0
Summary: Custom IC Design Environment for Professionals
License: Mozilla Public License v2
License-File: LICENSE.txt
Keywords: EDA,IC Design,Semiconductor,Layout,Schematic
Author: Revolution Semiconductor
Author-email: 48187772+eskiyerli@users.noreply.github.com
Requires-Python: >=3.12,<3.15
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
Requires-Dist: PySide6 (>=6.11.1,<6.12.0)
Requires-Dist: cryptography (>=46.0.3,<47.0.0)
Requires-Dist: gdstk (>=1.0.0,<1.1.0)
Requires-Dist: httpx (>=0.28.1,<0.29.0)
Requires-Dist: lxml (>=6.1.0,<7.0.0)
Requires-Dist: markdown (>=3.10.2,<4.0.0)
Requires-Dist: numpy (>=2.4.4,<2.5.0)
Requires-Dist: orjson (>=3.11.9,<4.0.0)
Requires-Dist: polars (>=1.40.1,<1.41.0)
Requires-Dist: pyqtgraph (>=0.14.0,<0.15.0)
Requires-Dist: python-dotenv (>=1.2.2,<1.3.0)
Requires-Dist: quantiphy (>=2.21,<2.22)
Project-URL: Bug Tracker, https://github.com/eskiyerli/revolution-eda/issues
Project-URL: Documentation, https://github.com/eskiyerli/revolution-eda/tree/master/docs
Project-URL: Homepage, https://github.com/eskiyerli/revolution-eda
Project-URL: Repository, https://github.com/eskiyerli/revolution-eda
Description-Content-Type: text/markdown

# Revolution EDA Schematic/Symbol/Layout Editors and Simulation and Analysis Environment

## Introduction

Revolution EDA is a new generation of schematic and symbol editor targeting custom
integrated circuit design with integrated simulation and plotting capabilities.
Current version is **0.9.0**.


## Core Features

1. **Advanced Symbol Creation**: Create symbols with both common symbol attributes and
   instance parameters. Instance parameters can be Python functions for dynamic parameter
   calculation.
2. **Automatic Symbol Generation**: Generate symbols automatically from schematics and
   Verilog-A modules with support for circles, lines, rectangles, and arches.
3. **Verilog-A Integration**: Clear separation between model and instance parameters for
   Verilog-A symbols.
4. **JSON-Based File Format**: Human-readable JSON format allows easy inspection and editing
   with text editors.
5. **Configuration-Driven Netlisting**: Config view support similar to commercial tools for
   choosing simulation views.
6. **Hierarchical Netlisting**: Full hierarchical netlisting capability with support for
   Xyce, Spectre, and VACASK simulators (the support for the last are work-in-progress), 
   including bus and instance array netlisting.
7. **Python-Powered Labels**: Labels support Python functions enabling professional PDK
   development.
8. **Layout Editor**: Full-featured hierarchical layout editor with support for rectangles,
   polygons, paths, pins, labels, vias (single and array), and python-based parametric
   layout cells. Includes layer management (selectability and visibility management), rulers,
   GDS/OAS import/export, and initial Schematic Driven Layout (SDL) support.
9. **Comprehensive Library Management**: Familiar library browser for creating, renaming,
   copying, and deleting libraries, cells, and views.
10. **Library Registry**: Built-in registry UI (`Tools → Libraries`) for downloading
    Revolution EDA-compatible design libraries directly from the GitHub library registry.
11. **Plugin Registry**: GUI-based plugin installer (`Tools → Plugins → Setup Plugins…`)
    that downloads and installs plugins from the Revolution EDA plugin registry.
12. **PDK Registry**: GUI for registering and switching PDKs without editing configuration
    files manually.
13. **AI Terminal**: Natural-language design modification through Claude (Anthropic),
    Gemini (Google), Mistral AI backends and experimental support for AWS Bedrock; API keys are stored in encrypted form.
14. **Integrated Python Console**: Full Python REPL in the main window for automation and
    scripting against Revolution EDA's internal APIs.
15. **Stipple Pattern Editor**: Built-in editor for creating custom layer fill stipple
    patterns.
16. **Persistent Configuration**: Save and restore configuration parameters.
17. **Constrained Move**: Move items with orthogonal and diagonal constraints across all
    editors using `Shift+M` shortcuts.
18. **Plugin Licensing**: Ed255-signature-based license validation for commercial plugins with
    machine-fingerprint activation and checkout workflow.
19. **Comprehensive Logging**: Error, warning, and info message logging to `reveda.log`.

## Plugin Architecture

Revolution EDA features a modular plugin architecture that enables extensible functionality.
Plugins can add their own menus and actions to editor windows through a `config.json`
declaration — no changes to the core codebase are required.

There are already several plugins available, including *revedasim*, *revedaplot*, and
*aiTerminal*. Proprietary plugins can be distributed as pre-compiled binaries alongside
source-available plugins.

## Simulation and Plotting

### Revolution EDA Simulation and Analysis Environment (revedasim)

- **Multi-Simulator Netlisting**: Full support for Xyce, Spectre, and VACASK circuit simulators
- **Parameter Sweeps**: Multi-dimensional parameter sweep capabilities
- **Analysis Types**: Support for DC, AC, transient, noise, and harmonic balance analyses
- **Output Management**: Flexible output signal selection and processing
- **Process Management**: Efficient simulation job management

### Revolution EDA Plotter (revedaplot)

- **Very Fast**: Can handle very large datasets.
- **Imports both Raw and Ascii file output**: Can uniformly handle raw and ascii file
  formats generated by Xyce and other circuit simulators.
- **Interactive Waveform Viewer**: Advanced plotting with zoom, pan, and measurement tools
- **Multi-Plot Support**: Combined and separate plot views
- **Parameter Sweep Visualization**: Automatic plotting of parametric simulation results
- **Export Capabilities**: High-quality plot export functionality

### AI Terminal (aiTerminal)

- **Natural-Language Design Editing**: Modify schematics, symbols, and layouts using
  conversational requests sent to an AI model.
- **Multiple AI Backends**: Claude (Anthropic), Gemini (Google), and Mistral AI supported;
  OpenAI planned.
- **Secure API Key Storage**: Keys encrypted with Fernet and stored under `~/.reveda/`.
- **Automatic Backup & Undo**: A backup is created before every AI modification; one-click
  restore via the `undo` command or **Undo Changes** button.
- **Read & Inspect**: Run `read` to display the current design JSON directly in the
  terminal.

## Installation

### Prerequisites

- Python 3.12, 3.13, or 3.14
- [Poetry](https://python-poetry.org/docs/#installation) if installing from source

### From PyPI

```bash
pipx install revolution-eda
```
The current total of downloads in PyPi repository is:

[![PyPI Downloads](https://static.pepy.tech/personalized-badge/revolution-eda?period=total&units=INTERNATIONAL_SYSTEM&left_color=GREY&right_color=ORANGE&left_text=downloads)](https://pepy.tech/projects/revolution-eda)

After installation, start the program with:

```bash
reveda
```

### From Source

```bash
# Clone the repository
git clone https://github.com/eskiyerli/revolution-eda.git
cd revolution-eda

# Install dependencies
poetry install

# Run the application
poetry run reveda
```

### Binary Releases

Standalone binaries built with [Nuitka](https://nuitka.net) are available on the
[GitHub Releases page](https://github.com/eskiyerli/revolution-eda/releases) and do not
require a separate Python installation.

- **Windows**: `reveda.exe`
- **Linux**: `reveda.bin` (mark executable with `chmod +x reveda.bin` before running)

### PDK Installation

To use the preliminary IHP PDK, clone the `ihp_pdk` repository:

```bash
git clone https://github.com/eskiyerli/ihp_pdk.git
```

Set the `REVEDA_PDK_PATH` variable in the `.env` file to the cloned directory. If both
repositories are cloned side-by-side, the `.env` entry would be:

```
REVEDA_PDK_PATH=../ihp_pdk
```

PDKs can also be registered and switched through the **PDK Registry** dialog
(`Tools → PDKs → Setup PDKs…`) without editing `.env` directly.

### Example Libraries

Clone the `exampleLibraries` repository for a set of ideal elements and IHP sg13g2_pr
library cells (including pcells for `rsil`, `cap_cmim`, and `sg13_lv_nmos`):

```bash
git clone https://github.com/eskiyerli/exampleLibraries.git
```

Use the **Library Registry** (`Tools → Libraries`) to download additional Revolution
EDA-compatible libraries directly from within the application.

## Documentation

Full documentation is available in the `docs/` directory and covers:

- [Installation](docs/installation.md)
- [Main Window](docs/revedaMainWindow.md)
- [Schematic Editor Tutorial](docs/schematicTutorial.md)
- [Symbol Editor Tutorial](docs/symbolTutorial.md)
- [Layout Editor Tutorial](docs/layoutTutorial.md)
- [Config Editor](docs/configEditor.md)
- [AI Terminal](docs/AI_TERMINAL.md)
- [Plugins](docs/plugins.md)
- [Labels](docs/labels.md)
- [Binary Plugins](docs/binaryPlugins.md)

## License

Revolution EDA is licensed under the [Mozilla Public License 2.0](https://mozilla.org/MPL/2.0/).

This is a free and open-source software license that allows you to:

- **Use** the software for any purpose
- **Modify** the source code
- **Distribute** the software and your modifications
- **Sell** products and services that incorporate Revolution EDA
- **Create commercial derivatives** and rebranded versions

The MPL 2.0 is a weak copyleft license that requires:
- Making source code modifications available under the same license
- Preserving license notices in distributed copies
- Not using the Revolution Semiconductor trademarks without permission

### Plugin and PDK Licensing

While the main Revolution EDA application uses MPL 2.0, plugins, PDKs (Process Design Kits), and 
libraries may have their own separate licensing terms. Please check the individual license 
files for each component.

See [LICENSE.txt](LICENSE.txt) for the full license text.

## Attribution

- Some icons by [Yusuke Kamiyamane](http://p.yusukekamiyamane.com/). Licensed under
  a [Creative Commons Attribution 3.0 License](http://creativecommons.org/licenses/by/3.0/).

