Skip to main content

High-performance VLSI CAD algorithms with Numba-accelerated implementations

Project description

optiVLSI

optiVLSI is a Python package that implements a collection of classic graph and circuit algorithms, including:

  • Bellman‑Ford
  • Dijkstra
  • Prim
  • Kruskal
  • Lee (maze solver)
  • BDD (binary decision diagrams)
  • Simulation engines (compiled‑code and event‑driven)

The project has been refactored into a proper Python package with a modern pyproject.toml, type hints, comprehensive tests, documentation, and CI/CD pipelines.

Quick Start

# Install the package
pip install optivlsi

# Run a quick demo
python -m optivlsi.lee.algorithms.lee_algorithm

Documentation

Contributing

See the CONTRIBUTING.md file for guidelines.

Implemented Algorithms

Graph Algorithms

Algorithm Package Variants
Bellman-Ford Shortest Path optivlsi.bellman_ford Pythonic, NetworkX, Numba
Dijkstra Shortest Path optivlsi.dijkstra Pythonic, NetworkX, Numba
Kruskal Minimum Spanning Tree optivlsi.kruskal Pythonic (DSU), NetworkX, Numba
Prim Minimum Spanning Tree optivlsi.prim Pythonic, NetworkX, Numba

Routing

Algorithm Package Variants
Lee Maze Routing optivlsi.lee Pythonic BFS, NetworkX, Numba

Digital Circuit Simulation

Algorithm Package Variants
Compiled-Code Simulator optivlsi.simulation.compiled_code Gate classes, Numba
Event-Driven Simulator optivlsi.simulation.event_driven Event propagation, Numba

Binary Decision Diagrams

Algorithm Package Variants
ROBDD optivlsi.bdd Python, Numba

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=optivlsi --cov-report=term

# Run benchmarks
pytest tests/test_benchmarks.py --benchmark-only

Documentation

Full documentation is available in the docs/ directory:

Detailed research paper: OptiVLSI.pdf

Benchmarking

Each algorithm module includes an automate.py file for automan-based benchmarking across various problem sizes. The package also provides pytest-benchmark integration for performance regression detection.

Optimization Tools Used

  • Numba: All algorithms have Numba-accelerated variants with JIT compilation
  • Automan: Automated simulation and benchmarking infrastructure
  • NetworkX: Reference implementations using standard graph library

Project Structure

optivlsi/                   # Main package
├── bellman_ford/           # Bellman-Ford algorithm
├── dijkstra/               # Dijkstra's algorithm
├── kruskal/                # Kruskal's MST
├── prim/                   # Prim's MST
├── lee/                    # Lee maze routing
├── simulation/
│   ├── compiled_code/      # Compiled-code simulator
│   ├── compiled_code_numba/# Numba-accelerated variant
│   └── event_driven/       # Event-driven simulator
├── bdd/                    # ROBDD
└── utils/                  # Shared utilities
bellman-ford/               # Original standalone modules
dijkstra/                   # (preserved for reproducibility)
kruskal/                    #
prim/                       #
lee-algorithm/              #
compiled-code-simulator/    #
event-driven-sim/           #
ROBDD/                      #

Original Research

This open-source codebase started as a course project for AE6102 - Parallel Scientific Computing and Visualization at IIT Bombay. The original standalone research modules are preserved in their respective directories.

Collaborators

  • Rohan Rajesh Kalbag
  • Neeraj Prabhu

License

MIT

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

optivlsi-0.1.0.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

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

optivlsi-0.1.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file optivlsi-0.1.0.tar.gz.

File metadata

  • Download URL: optivlsi-0.1.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for optivlsi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bb60e61db4a513ccd6c0f6ffaffe6fffdb5a04773b8f586b789ff6c5151abbfd
MD5 2ccef24fa79675a44bc0019321c44c44
BLAKE2b-256 07d6f34cbc1b25e733d433850164d788704529e18a51e0d12e563042e4d78f8a

See more details on using hashes here.

File details

Details for the file optivlsi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: optivlsi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for optivlsi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c1e1a927942c008ce1ec1685ca6e7580d329fcd41bc41c9daa085622b365c234
MD5 979de9314227dca3e4ef9969ed270b9f
BLAKE2b-256 b5fdfea436cf9bea51d80393555ff496f1a9c04b5eed396ec4fd41d432ec292b

See more details on using hashes here.

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