Skip to main content

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.

A live benchmark comparison report is automatically generated on every push:
👉 View Benchmark Report

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

Metadata

Release files for optivlsi 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for optivlsi 0.1.2
File Size Uploaded
optivlsi-0.1.2.tar.gz 24.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for optivlsi 0.1.2
File Interpreter ABI Platform
optivlsi-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 50.1 kB

Release files / optivlsi-0.1.2.tar.gz

Download URL optivlsi-0.1.2.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c464c77a6aee89a28e926275d174fb81dfd6bb2746dc108481a006084e4b08e6
BLAKE2b-256 checksum
How to use checksums
fbdd80d42ba24a2d57491bcd614915a244fc35b79ed7dd4654fc2725da7f02d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / optivlsi-0.1.2-py3-none-any.whl

Download URL optivlsi-0.1.2-py3-none-any.whl
Size 25.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da7dcb00228f05124e344eff61af283cb1c04fcabf307d48474809a3ed5aa444
BLAKE2b-256 checksum
How to use checksums
84e44ab25f023186a6d7713d9406711b59c9cf977e146a14b7b2708b7474961a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page