Metadata-Version: 2.4
Name: revolution-eda
Version: 0.8.11
Summary: Custom IC Design Environment for Professionals
License: Mozilla Public License v2 modified by Commons Clause
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 :: 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.10.0)
Requires-Dist: anthropic (>=0.75.0,<0.76.0)
Requires-Dist: cryptography (>=46.0.3,<47.0.0)
Requires-Dist: gdstk (>=0.9.62,<0.10.0)
Requires-Dist: google-generativeai (>=0.8.5,<0.9.0)
Requires-Dist: lxml (>=6.0.0,<7.0.0)
Requires-Dist: markdown (>=3.9,<4.0)
Requires-Dist: numpy (>=2.3.1,<2.4.0)
Requires-Dist: orjson (>=3.11.4,<4.0.0)
Requires-Dist: polars (>=1.35.0,<1.36.0)
Requires-Dist: python-dotenv (>=1.2.0,<1.3.0)
Requires-Dist: quantiphy (>=2.20,<2.21)
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.8.11**.


## 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 Xyce simulator
   support, 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,
   and GDS import/export capabilities.
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) and
    Gemini (Google) AI backends; 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. **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)

- **Xyce Simulator Integration**: Full support for Xyce circuit simulator
- **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) and Gemini (Google) 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)

## License

Revolution EDA is **source-available** software, licensed under the
[Mozilla Public License 2.0](https://mozilla.org/MPL/2.0/) as modified by the
[Commons Clause](https://commonsclause.com/) condition.

You may use, modify, and distribute the source code freely **except** that you may not
sell a product or service whose value derives substantially from the functionality of
this software. This prohibition covers, without limitation:

- Paid hosting or cloud/internet-delivered services built around Revolution EDA
- Resale of the software itself or a rebranded derivative

The following activities are **explicitly permitted** and are **not** restricted:

- Consulting, training, integration, or support engagements where the Software is
  a tool used in delivering services, not the product being sold

> **Note:** Revolution EDA is not "open source" as defined by the OSI or FSF because of
> the Commons Clause restriction.

### Commercial Licensing

If your use case falls within the restrictions above and you require a commercial
license, please contact **Revolution Semiconductor** at
[info@reveda.eu](mailto:info@reveda.eu) to discuss terms.

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/).

