https://github.com/nooridan/symxplorer
A symbolic math toolbox in Python to explore the design space of analog circuits. Find possible filters for any given nodal equation set and allowed impedance connections. Size, symbolically or with SPICE, for a given AC response using Bayesian optimization or Evolutionary algorithms.
https://github.com/nooridan/symxplorer
amplifier analog-design biquad-filter differential-amplifier electronic-design-automation evolutionary-algorithms spice symbolic-math sympy two-port-analysis
Last synced: about 2 months ago
JSON representation
A symbolic math toolbox in Python to explore the design space of analog circuits. Find possible filters for any given nodal equation set and allowed impedance connections. Size, symbolically or with SPICE, for a given AC response using Bayesian optimization or Evolutionary algorithms.
- Host: GitHub
- URL: https://github.com/nooridan/symxplorer
- Owner: NooriDan
- License: gpl-3.0
- Created: 2024-11-29T14:52:11.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-04-01T02:55:41.000Z (7 months ago)
- Last Synced: 2025-04-01T03:33:17.149Z (7 months ago)
- Topics: amplifier, analog-design, biquad-filter, differential-amplifier, electronic-design-automation, evolutionary-algorithms, spice, symbolic-math, sympy, two-port-analysis
- Language: Python
- Homepage:
- Size: 457 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SymXplorer
Welcome to the **SymXplorer** project! This is an opensource symbolic toolbox for analyzing analog circuits based on [SymPy](https://www.sympy.org/en/index.html) in python. Everything from transistor level circuits to active analog filters with multiple feedback. We're actively developing new features. A python-based toolbox means endless opportunities for future integeration with scientifict, machine learning, and optimization toolboxes such as [PyTorch](https://pytorch.org/), [Ax](https://ax.dev/), and [Nevergrad](https://facebookresearch.github.io/nevergrad/).
## Features
- Customize nodal equation and impedance combination for new circuits under test (derive the symbolic nodal equations using [lcapy](https://lcapy.readthedocs.io/en/latest/))
- Analyze the possible filters, oscillators, and more!
- Model non-idealities of circuit components (e.g., FET transistors through their T matrix)
- Explore possiblem higher-order (2+) transfer functions for filter design.
- Size (through [Ax](https://ax.dev/) for Bayesian Optimization tool and [Nevergrad](https://github.com/facebookresearch/nevergrad) for Evolutionary algorithms) and visualize a filter's response quickly for design.
- Generate automatic LaTeX report of your runs
- Currently have pre-defined demo-circuits for Common-gate (CG) and Common-source (CS) differential input/output ([here](src/symcircuit/demo/differential.py)), multipl-feedback filter designs in current and voltage mode ([here](src/symcircuit/demo/multiple_feedback.py)), sallen-key topology ([here](src/symcircuit/demo/sallen_key.py)), and dual-amplifier ([here](src/symcircuit/demo/dual_amplifier.py)).## Installation
After cloning the repository, open a terminal in the project directory and run the following command:```bash
pip install -e .
```# How to get started
First Git clone the repo, and follow the instructions below you'll find information and links to the key notebooks.- The main codeblocks are under [src](src/symxplorer/)
- Quickly get started by running "run-symbolix" in a CLI to run the symbolic experiment defined in [common_gate_setup](src/symcircuit/demo/differential.py) and [main](src/symcircuit/symbolic_solver/main.py)
- Check out summary report of previous the latest runs in [Examples](examples)
- Find Previous papers under [Papers](docs/Papers)
- Refer to the jupyternotebooks on how to use the SymXplorer API for [topology exploration](examples/sym-exploration) and [automated sizing](examples/sizing-filter-CMFM).
- A demonstration video will be available soon## License
This project is licensed under the GNU General Public License v3 (GPLv3) - see the [LICENSE](LICENSE) file for details.